package ei.game.scene;

import ei.engine.math.Vector2f;
import ei.engine.math.Vector4f;
import ei.engine.scene.Box;
import ei.engine.scene.Node;
import ei.engine.scene.Sprite;
import ei.engine.texture.Texture;

public class SelectBox {
	private Node selectNode;
	private Node mouseOverNode;
	private Sprite value;
	private int max;
	private float width;
	private static final float height = 3;
	
	/**
	 * Creates a selection box with health bar
	 * 
	 * @param x The size of the selection box
	 * @param y The size of the selection box
	 * @param max The max health of the object
	 */
	public SelectBox(float x, float y, int max){
		this.max = max;
		this.width = x;
		selectNode = new Node("SelectionNode");
		mouseOverNode = new Node("MouseOverNode");
		
		Texture tex = new Texture();
		tex.setColor(new Vector4f(0.5f, 1.0f, 0.5f,1));

		Texture tex2 = new Texture();
		tex2.setColor(new Vector4f(0.3f, 1.0f, 0.3f, 0.6f));
				
		value = new Sprite("Healthvalue",tex2);
		value.setSize(new Vector2f(x,height));
		value.setLocation(new Vector2f(0,-x/2+height/2));
		selectNode.add(value);
		mouseOverNode.add(value);
		
		Box bar = new Box("bar",tex);
		bar.setSize(new Vector2f(x,height));
		bar.setLocation(new Vector2f(0,-x/2+height/2));
		selectNode.add(bar);
		mouseOverNode.add(bar);
		
		Box select = new Box("select",tex);
		select.setSize(new Vector2f(x,y));
		selectNode.add(select);
		
				
	}
	
	/**
	 * Returns the node of the selection
	 * 
	 * @return The node of the selection
	 */
	public Node getSelectNode(){
		return selectNode;
	}
	
	
	/**
	 * Returns the node of the selection
	 * 
	 * @return The node of the selection
	 */
	public Node getMouseOverNode(){
		return mouseOverNode;
	}
	
	/**
	 * Sets the value of the health bar
	 * 
	 * @param v The value of the health bar
	 */
	public void setValue(int v){
		value.setSize(new Vector2f(((float)v/max)*width,height));//(v/max)*width
		value.setLocation(new Vector2f(-width/2+(((float)v/max)*width)/2,-width/2+height/2));
		
		if(((float)v/max) < 0.15f){
			value.getTexture().setColor(new Vector4f(1.0f, 0f, 0f, 0.6f));
		}
		else if(((float)v/max) < 0.50f){
			value.getTexture().setColor(new Vector4f(1.0f, .95f, 0, 0.6f));
		}
		else{
			value.getTexture().setColor(new Vector4f(0.3f, 1.0f, 0.3f, 0.6f));
		}
	}
}
