package civet.script.functions;

import java.util.ArrayList;

import civet.script.BaseFunction;
import civet.script.IFiber;
import civet.script.IVirtualMachine;
import civet.script.Variable;
import civet.world.IEntity;
import civet.world.components.GameInfo;
import civet.world.components.StateBinding;

public class HealEntity extends BaseFunction 
{

	public HealEntity() 
	{
		super("HealEntity");
	}

	public boolean call(int index, ArrayList<Variable> variables, IVirtualMachine vm, IFiber fiber) 
	{
		if(variables.size() == 2)
		{
			Variable entityVar = variables.get(0);
			Variable healVar = variables.get(1);
			
			IEntity entity = entityVar.getEntityValue();
			
			if(entity != null)
			{
				GameInfo gameInfo = (GameInfo)entity.getComponent("gameInfo");
				StateBinding stateBinding = (StateBinding)entity.getComponent("stateBinding");
					
				if(gameInfo != null && stateBinding != null)
				{
					int health = gameInfo.getHealth();
					
					if(health > 0)
					{
						health += healVar.getIntValue();
						
						if(health > 100)
							health = 100;
						
						gameInfo.setHealth( health );
					}
				}
			}
		}
		return true;
	}
}
