-- не настраивать
require( "scripts/game/deftasks.lua" );
require( "scripts/game/deftime.lua" );
GameObject = {
    Params = {
        ID="cheese";
        width=0;
        height=0;
        GridData = {  }; 
        action_enabled = 0;
        group=5; --продукт
        amount_product = 1; --кол-во сыра
        click_counter = 0; --НЕ ТРОГАТЬ! меняется автоматически, число сделанных сыров
    };
    -- точки подхода персонажа
    ActivePoints = { 
        cheesetake = { 
                        { {"redbarn"}, 0,0,0,  0,  0,0,0 };
                   }; 
    };
    Objects = { };
    -- перечисление всех задач для обьекта
    Tasks = { 
        take_cheesetake = { FuncName="TakeTaskExecute", sleeping={0}, time_tick=10, not_need_action=0, skill_up = 0, restore_health=1000 };
    };
    -- перечисление всех триггеров для обьекта
    Triggers = { 
        SpoilTrigger = { FuncName="SpoilTriggerExecute", NotRunWhen={}, timer=0,warn_timer=0,end_timer=0,active=0 };
    };
    --задачи которые начинают выполнятся после создания обьекта
    InitActiveTasks = { };
    --задачи которые обьект ожидает после создания обьекта
    InitExpectedTasks = {};
    -- акция
    Action = {  
        Name = "cheesetake";  
        IDs = {"redbarn"};
        CanMany = 0;
    }
};

function GameObject:Get()
    return self;
end
function GetParams()
    aObj = GameObject:Get();   
    return aObj.Params;
end

function TakeTaskExecute()
    aObj = GameObject:Get();   
    CPP_RunStringParent("TakePortion();");
    return 0;
end

function ViewNumbers(aValue)
    if (aValue <= 1) then   CPP_SetAnimState("invisible");  return; end
    if (aValue >= 99) then  
        CPP_SetAnimState("value1_9");
        CPP_SetAnimState("value2_9");
    else
        if (aValue >= 10) then
            local deca = ToInt(aValue / 10);
            local one = aValue - (deca * 10);
            CPP_SetAnimState("value1_"..deca);
            CPP_SetAnimState("value2_"..one);
        else
--ScriptDump("NumberChese= "..aValue);
            CPP_SetAnimState("invisible_1");
            CPP_SetAnimState("value2_"..aValue);
        end
    end
end

function MakeCheese(aParam,aCount)
    aObj = GameObject:Get();   
    aObj.Params.click_counter = aCount;
    --ScriptDump("MakeCheese="..aParam);
    if (aParam == 0) then
        aObj.Params.action_enabled = 0;    
        aObj.Triggers.SpoilTrigger.active = 0;
        CPP_SetVisible(0);
        CPP_SetAnimState("normal");
        --в normal цифры и так должны быть невидимы, см. их виз.стейты
        return;
    end
    if (aParam == 1) then
        aObj.Params.action_enabled = 1;    
        OnStartSpoilPruduct();
        CPP_SetVisible(1);
        aObj.Params.vprod = 1;
        aObj.Params.vstate = "cheese_1";
        CPP_SetAnimState("cheese_1");
        ViewNumbers(aCount);
        return;
    end
    if (aParam == 2) then
        aObj.Params.action_enabled = 1;    
        OnStartSpoilPruduct();
        CPP_SetVisible(1);
        aObj.Params.vprod = 2;
        aObj.Params.vstate = "cheese_2";
        CPP_SetAnimState("cheese_2");
        ViewNumbers(aCount);
        return;
    end
end
