package display.states 
{
	import display.BaseState;
	import display.gui.GUIBackground;
	import display.gui.GUIButton;
	import starling.display.Image;
	import starling.display.Quad;
	import starling.events.Event;
	import starling.text.TextField;
	import starling.textures.TextureAtlas;
	import starling.utils.HAlign;
	
	/**
	 * ...
	 * @author RedMaster
	 */
	public class TutorialState extends BaseState 
	{
		private var _atlas:TextureAtlas;
		private var _bg:GUIBackground;
		
		private var _char:Image;
		private var _gold:Image;
		private var _stone:Image;
		private var _hole:Image;
		private var _monster:Image;
		private var _explosives:Image;
		
		private var _header:TextField;
		private var _charLabel:TextField;
		private var _goldLabel:TextField;
		private var _stoneLabel:TextField;
		private var _holeLabel:TextField;
		private var _monsterLabel:TextField;
		private var _explosivesLabel:TextField;
		
		private var _monsterBg:Quad;
		private var _explosivesBg:Quad;
		
		private var _back:GUIButton;
		
		override public function init():void 
		{
			_atlas = C.assets.getTextureAtlas("tiles");
			
			_bg = new GUIBackground();
			
			_char = new Image(C.assets.getTexture("char"));
			_gold = new Image(_atlas.getTexture("gold"));
			_stone = new Image(_atlas.getTexture("stone"));
			_hole = new Image(_atlas.getTexture("hole"));
			_monster = new Image(C.assets.getTexture("monster"));
			_explosives = new Image(C.assets.getTexture("explosives"));
			
			_header = new TextField(1000, 40, "Описание основных элементов игры", C.FONT_NAME, 30, 0xFFFFDD);
			_charLabel = new TextField(900, 40, "Это главный герой игры.", C.FONT_NAME, 30, 0xFFFFDD);
			_goldLabel = new TextField(900, 40, "Это золото, которое Вам нужно добыть.", C.FONT_NAME, 30, 0xFFFFDD);
			_stoneLabel = new TextField(900, 80, "Это камень, через который Вам придется прокапываться, добывая золото.", C.FONT_NAME, 30, 0xFFFFDD);
			_holeLabel = new TextField(900, 40, "Это яма. В нее падать нельзя.", C.FONT_NAME, 30, 0xFFFFDD);
			_monsterLabel = new TextField(900, 40, "Это монстр. С ним лучше не встречаться.", C.FONT_NAME, 30, 0xFFFFDD);
			_explosivesLabel = new TextField(900, 80, "Это взрывчатка. Если подойти к ней слишком близко, она взорвется.", C.FONT_NAME, 30, 0xFFFFDD);
			_charLabel.hAlign = _goldLabel.hAlign = _stoneLabel.hAlign = _holeLabel.hAlign = _monsterLabel.hAlign = _explosivesLabel.hAlign = HAlign.LEFT;
			
			_char.x = _gold.x = _stone.x = _hole.x = 10;
			_explosives.x = 15;
			_monster.x = 15;
			_charLabel.x = 90;
			_goldLabel.x = _stoneLabel.x = _holeLabel.x = 50;
			_monsterLabel.x = 55;
			_explosivesLabel.x = 50;
			
			_char.y = _charLabel.y = 50;
			_gold.y = _goldLabel.y = _char.y + _char.height + 10;
			_stone.y = _stoneLabel.y = _gold.y + _gold.height + 10;
			_hole.y = _holeLabel.y = _stone.y + _stone.height + 40;
			_monster.y = _hole.y + _hole.height + 15;
			_monsterLabel.y = _monster.y - 5;
			_explosives.y = _monster.y + _monster.height + 30;
			_explosivesLabel.y = _explosives.y - 10;
			
			_back = new GUIButton("Назад");
			_back.x = 5;
			_back.y = C.screen.height - _back.height - 5;
			_back.addEventListener(Event.TRIGGERED, onBackTrigger);
			
			_monsterBg = new Quad(_monster.width + 10, _monster.height + 10, 0xFFFFFF);
			_monsterBg.alpha = 0.5;
			_monsterBg.x = _monster.x - 5;
			_monsterBg.y = _monster.y - 5;
			_explosivesBg = new Quad(_explosives.width + 10, _explosives.height + 10, 0xFFFFFF);
			_explosivesBg.alpha = 0.5;
			_explosivesBg.x = _explosives.x - 5;
			_explosivesBg.y = _explosives.y - 5;
			
			addChild(_bg);
			addChild(_char);
			addChild(_gold);
			addChild(_stone);
			addChild(_hole);
			addChild(_monsterBg);
			addChild(_monster);
			addChild(_explosivesBg);
			addChild(_explosives);
			addChild(_header);
			addChild(_charLabel);
			addChild(_goldLabel);
			addChild(_stoneLabel);
			addChild(_holeLabel);
			addChild(_monsterLabel);
			addChild(_explosivesLabel);
			addChild(_back);
		}
		private function onBackTrigger(e:Event):void
		{
			C.game.showState(Game.About);
		}
		
		override public function destroy():void 
		{
			removeChildren(0, -1, true);
			_back.removeEventListeners();
		}
	}
}