<?xml version="1.0" encoding="UTF-8"?>
<rmml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="L:\collaborative-nir\program\Cscl3DWS\rmml\RMML.xsd">
	<composition _name="CAudioEngine" >
		<script>
			this.sResPath='';
			this.sPrefix='';
			this.snd = null;
			this.playCommon = null;
			this.lastSound = null;
			this.hintSound = null;	// только для режима [ V ]
			this.aWrongSPlay = null;
			this.aWrongSCPlay = null;
			this.chemCloud = null;
			this.bSilenceMode = false;
			this.silenceStub = null;
		</script>
		<script><![CDATA[
			function silenceMode(val)
			{
				this.bSilenceMode = val;
				this.stopCurrent();
				this.showSilenceAnimation(this.bSilenceMode);
			}
			
			function stopCurrent()
			{
				if( this.lastSound != null)
					this.lastSound.stop();

				if (snd!=null)
				{
					s = snd.target;
					if(snd._playing)
					{
						snd._playing = false;
						snd = null;						
						fireEvent(s+".onPlayed");
					}	
					else		snd = null;
				}
			}
			
			function onsPlayed(id)
			{
				if( this.bSilenceMode || eval("this.aud"+id)==undefined)	return true;
				return eval("this.aud"+id).target+".onPlayed";
			}
			
			function splay(id)
			{
				stopCurrent();
				if( this.bSilenceMode)
				{
					return true;
				}
				trace("Say sounds:"+id);
				if( eval("this.aud"+id)==undefined)
				{
					snd = new Audio();
					snd._name = "aud"+id;
					if(id >= 10)	snd.src = ":" + this.sResPath + sPrefix + id + ".mp3";
					else	snd.src = ":" + this.sResPath + sPrefix + "0" + id + ".mp3";
					snd.parent = this;
				}
				else	snd = eval("this.aud"+id);
				if( this.aWrongSPlay != null)
				{
					var i=0;
					for( i=0; i<this.aWrongSPlay.length; i++)
						if( this.aWrongSPlay[i] == id)
							break;
					if( i>=this.aWrongSPlay.length)
						this.lastSound = snd;
				}
				else
					this.lastSound = snd;
				if( this.chemCloud != null)
					this.chemCloud.splay(id, snd.target+".onPlayed");
				if( snd==undefined || snd==null)
					trace("Error index in splay["+id+"]");
				else	snd.rewindAndPlay();
				trace("snd.target"+snd.target);
				return snd.target+".onPlayed";
			}
			
			function scplay(id)
			{
				stopCurrent();
				if( this.bSilenceMode)
				{
					return true;
				}
				trace("Say common sounds:"+id);
				if( eval("this.caud"+id)==undefined)
				{
					snd = new Audio();
					snd._name = "caud"+id;
					if(id >= 10)	snd.src = "rmsnd:scaud" + id + ".mp3";
					else	snd.src = "rmsnd:scaud" + "0" + id + ".mp3";
					snd.parent = this;
				}
				else	snd = eval("this.caud"+id);
				if( this.aWrongSCPlay != null)
				{
					var i=0;
					for( i=0; i<this.aWrongSCPlay.length; i++)
						if( this.aWrongSCPlay[i] == id)
							break;
					if( i>=this.aWrongSCPlay.length)
						this.lastSound = snd;
				}
				else
					this.lastSound = snd;
				if( this.chemCloud != null)
					this.chemCloud.scplay(id, snd.target+".onPlayed");
				snd.rewindAndPlay();
				//trace("snd.src="+snd.src);
				return snd.target+".onPlayed";
			}
			
			function getSEName(nm)
			{
				return nm.replace(/(\.)/g,"_");
			}

			function sestop(_aud_name)
			{
				var nm = getSEName(_aud_name);
				if( eval("this."+nm) != undefined && eval("this."+nm)!=null)
					eval("this."+nm).stop();
			}
			
			function seplay(_aud_name, lp)
			{
				var aud = null;
				trace("Play SE sounds: "+_aud_name);
				aud = new Audio();
				aud.src = "rmsnd:SE\\" + _aud_name;
				if( lp!=undefined)
					aud.loop = lp;
				aud.parent = this;
				aud._name = getSEName(_aud_name);
				aud._playing = true;
			}
			
			function help(sndID,aplayCommon)
			{
				//if (playCommon != null) this.playCommon = true;
				if (aplayCommon == undefined) this.playCommon = false;
				else
					this.playCommon = aplayCommon;
				trace("Say help["+sndID+"]");
				if (sndID == -1)
				{
					trace("STOP: seq_help");
					this.seqHelp._playing = false;
				}
				else
				{
					this.id = sndID;
					this.seqHelp.rewindAndPlay();
				}
			}
			
			function errorAction()
			{
				if( this.id==-1)	return;
				if( this.seqHelp.currentFrame!=1) 
				{
					seqHelp.currentFrame = 1;
					seqHelp.play();
				}
			}
			
			function setCloud(cloud)
			{
				this.chemCloud = cloud;
			}
			
			/* Функция используется в модулях с ограничением по слуху.
			При нажатии на горячую клавишу (по умолчанию Enter) повторяется последняя фраза
			химика. Последней фразой является звук, который был вызван командой splay(..) или scplay(..).
			Повторение звука возможно только в тот момент, когда химик не произносит других звуков. */
			function repeatLastComment()
			{
				trace("-repeatLastComment-");
				if( this.lastSound == null)	return;										// если не было ни одного звука - ничего не повторяем
				if( this.lastSound._playing == true)	return;						// если сейчас играется звук - ничего не повторяем
				if( this.snd!=null && this.snd._playing == true)	return;	// если сейчас играется звук - ничего не повторяем
				//
				this.lastSound.rewindAndPlay();
			}
			
			/*Функция используется в модулях с ограничением по зрению.
			При появления ярлыка с подсказкой может проигрываться звук.
			Повторение звука возможно только в тот момент, когда химик не произносит других звуков.
			*/
			function sayHintText(sname)
			{
				if( this.snd!=null && this.snd._playing == true)	return true;	// если сейчас играется звук - ничего не повторяем
				if( this.hintSound!=null && this.hintSound._playing == true)	return true;	// если сейчас играется звук - ничего не повторяем
				if( this.bSilenceMode)	return true;
				if( eval("this.hintSound")==undefined)
				{
					snd = new Audio();
					snd._name = "hintSound";
					snd.parent = this;
				}
				else	snd = eval("this.hintSound");
				snd.src = "rmsnd:hint\\"+sname+".mp3";				
				snd.rewindAndPlay();
				trace("---+++++++---");
				return snd.target+".onPlayed";				
			}
			
			function DefaultFillWrongSCPlay()
			{
				if( this.aWrongSCPlay != null)	return;
				this.aWrongSCPlay = new Array(1,3,9,12,14,15,16,17,22,24,31,32,33,35,41,42,43);
			}
			
			function showSilenceAnimation(val)
			{
				if( val && this.silenceStub == null)
				{
					this.silenceStub = new Image();
					this.silenceStub._name = "silenceStub";
					this.silenceStub.src = "rmgr:silenceStub.png";
					this.silenceStub.x = 32;
					this.silenceStub.y = 337;
					this.silenceStub.parent  = scene;
				}
				this.silenceStub.visible = val;
			}
		]]></script>
		<sequencer _name="seqHelp" _loop="true">
			<script>
				trace("PLAYING: seq_help. ID = " + this.id);
				30000;
			</script>
			<script>
				if (this.playCommon == true)
					scene.sengine.scplay(this.id);
				else
					scene.sengine.splay(this.id);
			</script>
			<script>
				20000;
			</script>
		</sequencer>
	</composition>
</rmml> 