/**
 * Для конкурса №64 http://igdc.ru/
 */
package{
	import flash.display.*;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	
	/**
	 * Корневой класс всей системы.
	 * Тут происходит переключение основных режимов игры
	 */
	public class Main extends MovieClip{
		
		var TheIntro:Intro = new Intro();
		var TheGame:Game; /** Экземпляр класса игры */
		var TheMenu:MenuMc = new MenuMc(); /** Экземпляр класса меню */
		var GlobalHighScore:Number = 0;
		
		/**
		 * 0
		 * 1 - Intro
		 * 2 - Menu
		 * 3 - Game
		 */
		var Mode:Number = 0;
		
		function onKeyUp(e:KeyboardEvent):void {
			switch (Mode) {
				case 1:
				break;				
				
				case 2:
				break;
				
				case 3:
					TheGame.onKeyUp(e);
				break;
			}
		}
		
		function onKeyDown(e:KeyboardEvent):void {
			switch (Mode) {
				case 1:
					TheIntro.onKeyDown(e);
				break;				
				
				case 2:
				break;
				
				case 3:
					TheGame.onKeyDown(e);
				break;
			}
		}
		
		private function removeUnneeded():void {
			switch(Mode) {
				case 1:
					removeChild(TheIntro);
					break;
				case 2:
					removeChild(TheMenu);
					break;
				case 3:
					removeChild(TheGame);
					break;
			}
		}
		
		/**
		 * 
		 */
		function introMode():void {
			removeUnneeded();
			addChildAt(TheIntro, 0);
			Mode = 1;
		}		
		
		/**
		 * Переключение в режим меню
		 */
		function menuMode():void{
			removeUnneeded();			
			addChildAt(TheMenu, 0);
			TheMenu.PlayMusic();
			
			Mode = 2;
		}
		
		/** Задел под загрузку максимальных очков из внешнего источника */
		function onHighScoreRecived():void {
			TheGame.HighScore = 0;
		}
		
		/**
		 * Начало новой игры
		 */
		function startNewGame():void{
			if(TheGame != null)
			{
				GlobalHighScore = TheGame.HighScore;				
			}
			
			removeChild(TheMenu);
			
			TheGame = new Game();			
			
			if(GlobalHighScore == 0){
				onHighScoreRecived();
			}else {
				TheGame.HighScore = GlobalHighScore;
			}
			
			TheGame.putHighScoreInTextField();
			
			addChildAt(TheGame, 0);
			
			Mode = 3;
			
			stage.focus = TheGame;
		}
		
		/**
		 * Конструктор
		 */
		function Main() {
			stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
			stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);			
			introMode();
		}
	}
}