package com.isartdigital.ui.hud;

import com.isartdigital.utils.Config;
import com.isartdigital.utils.system.DeviceCapabilities;
import com.isartdigital.utils.ui.Screen;
import com.isartdigital.utils.ui.UIPosition;
import pixi.core.display.Container;
import pixi.core.sprites.Sprite;
import pixi.core.text.Text;
import pixi.core.textures.Texture;
import pixi.interaction.EventTarget;

/**
 * Classe en charge de gérer les informations du Hud
 * @author Mathieu ANTHOINE
 */
class Hud extends Screen 
{
	
	/**
	 * instance unique de la classe Hud
	 */
	private static var instance: Hud;
	
	private var hudTopLeft:Container;
	private var hudBottomLeft:Container;

	/**
	 * 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 (): Hud {
		if (instance == null) instance = new Hud();
		return instance;
	}	
	
	public function new() 
	{
		super();
		_modal = false;
	//	hudTopLeft = new Sprite(Texture.fromImage(Config.assetsPath + "HudLeft.png"));
	
		hudTopLeft = new Container();	
		hudBottomLeft = new Container();
			
		// affichage de textes utilisant des polices de caractères chargées
		/*var lTxt:Text = new Text((DeviceCapabilities.system==DeviceCapabilities.SYSTEM_DESKTOP ? "Click" : "Tap" )+ " to move", { font: "80px MyFont", fill: "#FFFFFF", align: "left" } );
		lTxt.position.set(20, -220);
		hudBottomLeft.addChild(lTxt);
		
		var lTxt2:Text = new Text("or use cheat panel", { font: "100px MyOtherFont", fill: "#000000", align: "left" } );
		lTxt2.position.set(20, -120);
		hudBottomLeft.addChild(lTxt2);	*/	
		
		addChild(hudTopLeft);
		addChild(hudBottomLeft);

	}
	
	/**
	 * repositionne les éléments du Hud
	 * @param	pEvent
	 */
	override private function onResize (pEvent:EventTarget=null): Void {
		//repositionne l'élement de Hud concerné en haut à gauche
		//UIPosition.setPosition(hudTopLeft, UIPosition.TOP_LEFT);
		//UIPosition.setPosition(hudBottomLeft, UIPosition.BOTTOM_LEFT);
	}
	
	/**
	 * détruit l'instance unique et met sa référence interne à null
	 */
	override public function destroy (): Void {
		instance = null;
		super.destroy();
	}

}