package com.isartdigital.game.sprites;

import com.isartdigital.utils.game.factory.MovieClipAnimFactory;
import com.isartdigital.utils.game.StateGraphic;
import com.isartdigital.utils.system.DeviceCapabilities;
import pixi.core.text.Text;
import pixi.extras.MovieClip;

	
/**
 * ...
 * @author Cindy Asselin de Beauville
 */
class TimerHUD extends StateGraphic 
{
	
	/**
	 * instance unique de la classe TimerHUD
	 */
	private static var instance: TimerHUD;
	
	public var actualTimer:Int = 0;
	private var txt:Text;
	private var txtStyle:TextStyle = { fill:'white', stroke: 'black', strokeThickness: 5, font : "62px tao" };
	
	/**
	 * Retourne l'instance unique de la classe, et la crée si elle n'existait pas au préalable
	 * @return instance unique
	 */
	public static function getInstance (): TimerHUD {
		if (instance == null) instance = new TimerHUD();
		return instance;
	}
	
	/**
	 * constructeur privé pour éviter qu'une instance soit créée directement
	 */
	private function new() 
	{
		super();
		factory = new MovieClipAnimFactory();
		assetName = "Timer";
		init();
	}
	
	public function init() {
		start();
		setTimer(120);
		setModeNormal();
	}
	
	override function doActionNormal():Void 
	{
		super.doActionNormal();
		txt.text = cast(actualTimer);
	}
	
	override private function setModeNormal():Void {
		setState(DEFAULT_STATE, true);
		cast(anim, MovieClip).anchor.set(0.5, 0.5);
		position.set(Score.getInstance().x, Score.getInstance().y + anim.height);
		super.setModeNormal();
	}
	
	public function setTimer(pTime :UInt):Void {
		if (txt != null) {
			removeChild(txt);
		}
		txt = new Text(cast(LevelManager.getInstance().time), txtStyle);
		txt.anchor.set(0.5, 0.5);
		addChild(txt);
	}
	
	/**
	 * détruit l'instance unique et met sa référence interne à null
	 */
	override public function destroy (): Void {
		instance = null;
	}

}