package ei.game.scene;

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

public class SelectBox {
	public static final int COLOR_GREEN = 0;
	public static final int COLOR_RED = 1;
	private static final float height = 3;
	private Node selectNode;
	private Node mouseOverNode;
	private ProgressBar bar;
	private Texture tex;
	
	/**
	 * 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(int color, float x, float y, int max){
		selectNode = new Node("SelectionNode");
		mouseOverNode = new Node("MouseOverNode");
		
		tex = new Texture();
		if(color == COLOR_RED){
			tex.setColor(new Vector4f(1.0f, 0.5f, 0.5f,1));
		}
		else{
			tex.setColor(new Vector4f(0.5f, 1.0f, 0.5f,1));
		}

		bar = new ProgressBar("Health",x,height,max);
		bar.getNode().setLocation(new Vector2f(0,-x/2+height/2));
		bar.setValueColor(25, new Vector4f(1.0f, 0f, 0f, 1f));
		bar.setValueColor(50, new Vector4f(1.0f, .95f, 0, 1f));
		bar.setValueColor(100, new Vector4f(0.3f, 1.0f, 0.3f, 1f));
		bar.setBarColor(tex.getColor());
		selectNode.add(bar.getNode());
		mouseOverNode.add(bar.getNode());
		
		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;
	}
	
	public void setColor(int i){
		if(i == COLOR_RED){
			tex.setColor(new Vector4f(1.0f, 0.5f, 0.5f,1));
			bar.setBarColor(tex.getColor());
		}
		else{
			tex.setColor(new Vector4f(0.5f, 1.0f, 0.5f,1));
			bar.setBarColor(tex.getColor());
		}
	}
	
	/**
	 * 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){
		bar.setValue(v);
	}
}
