package Specific
{
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	
	import com.indindi.StateMachine.*;
	import Specific.GameOverState;

	
	public class GameState extends IState
	{
		
		/* 
		Pour pouvoir utiliser facilement les évènements sur l'état
		on garde un pointeur sur le movieClip (_root/Stage) qui est
		récupéré à la création
		*/
		private var PMC:MovieClip = new MovieClip();
		
		/*
		Par commodité, on garde un pointeur sur la machine à état dont
		fait partie l'étt actuel qu'on récupère à la création.
		*/
		private var MySM:StateMachine = new StateMachine();
		
		public function GameState(SM:StateMachine,ParentMC:MovieClip,stateName:String):void
		{
			super(stateName);
			PMC = ParentMC;			
			MySM = SM;
		}
		
		
		/*
		Ces trois fonctions sont gérées au niveau de la StateMachine
		et doivent figurer dans la classe dérivée.
		*/
		override public function Enter():void
		{	
			trace("Entree game...");
			PMC.startGame();
			MySM.SetNextState(new GameOverState(MySM, PMC, "GameOverState"));
		}
		
		override public function Exit():void
		{
		}
		
		override public function Update(time:int):void
		{
			//trace("Game running ...");
			PMC.gameLoop();
		}
		
	}
}