-- не настраивать
require( "scripts/game/deftime.lua" );
GameObject = {
    Params = {
        ID="chopping";
        width=1;
        height=2;
        --health=3200;
        timerTask=-1;       -- do not change this parameter (для расчетов)
        RandomTasks=0;
        GridData= { 
            1, 1
        };
        select_type = 2;   -- не подсвечивать никогда, если надо меняем на 0 динамически
    };
    ActivePoints = { 
        hackfirewood = { 
                   { {}, 0,-1,0,  0,  0,-1,0 };
                   }; 
        take =  {
                   { {"firewood"}, 1,-1,0,  0,  0,0,0 };
                };
    };
    Objects = {
    };
    -- list of all tasks for an object
    Tasks = {
        hackfirewood = { FuncName="HackfirewoodTaskExecute", sleeping={0}, not_need_action=1, timer=1, time_tick=50,hand_add=1 };
    };
    -- list of all triggers for an object
    Triggers = { };
    --tasks to be performed after an object is created
    InitActiveTasks = {};
    --tasks an object is waiting ofr after it is created
    InitExpectedTasks = {}; --"hackfirewood"};
    referenced_obj = 0;
};
function GameObject:Get()
    return self;
end

-- вся инициализация должа проходить только в этой функции
function OnInit()
    --aObj = GameObject:Get();   
end
    
function GetParams()
    aObj = GameObject:Get();   
    return aObj.Params;
end

-- perform Task EATING over external object and return true if task is completed
function HackfirewoodTaskExecute()
    aObject = GameObject:Get();
    --здесь активировать кучку дров = обьект firewood добавив ему ExpectedTask=refer
    --это в случае независимой кучки дров без автоподбора
    CPP_OtherObjPutOnTopExpectedTasks("firewood","take_plank",1);
    CPP_OtherObjAnimState("firewood","chopping4");
    
    --CPP_RunStringChild("firewood","PlankOn();");
    -- отключим подсветку неглядя на заинтересованных
    aObject.Params.select_type = 2;
    return 0;
end

function TakePlank()
    aObject = GameObject:Get();
    --CPP_PutOnTopExpectedTasks("hackfirewood");
    -- отключим подсветку если нету заинтересованных
    if (aObject.referenced_obj > 1) then 
        aObject.Params.select_type = 0;
        --ScriptDump("aObject.referenced_obj"..aObject.referenced_obj);
    else
        aObject.Params.select_type = 2;
        --ScriptDump("aObject.referenced_obj"..aObject.referenced_obj);
    end
    CPP_WantSelect(1);
    --ScriptDump("TakePortion");
    return 0;
end

function IncRef()
    aObject = GameObject:Get();
    aObject.referenced_obj = aObject.referenced_obj + 1;
    aObject.Params.select_type = 0;
    CPP_AddExpectedTasks("hackfirewood");
    CPP_WantSelect(1);
--ScriptDump("IncRef()="..aObject.referenced_obj);
end

function DecRef()
    aObject = GameObject:Get();
    aObject.referenced_obj = aObject.referenced_obj - 1;
    if (aObject.referenced_obj <= 0) then
        aObject.referenced_obj = 0;
        aObject.Params.select_type = 2;
        CPP_WantSelect(0);
    end
end
