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 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;
    }
}