-- настраиваемые параметры в блоке Triggers.Talk:
-- timer,first_timer - время через которое телефон зазвонит
-- amount - кол-во повторений цикла 
-- duration - через скоко сек обрыв неподнятого звонка
require( "scripts/game/deftasks.lua" );
require( "scripts/game/deftime.lua" );
-- class уровень
GameObject = {
-- основные параметры
    Params = {
        ID="mobila";
        width=0;
        height=0;
        GridData = { 
            0
        };
        RandomTasks=0;
        not_visual = 1;
    };
    Objects = {};
    -- перечисление всех задач для обьекта
    Tasks = {
    };
    -- перечисление всех триггеров для обьекта
    Triggers = {
        Talk = {FuncName="TalkTriger", NotRunWhen={}, timer={ 3 }, first_timer={ 8 }, amount=1, cur_value=0 }
    };
    --задачи которые начинают выполнятся после создания обьекта
    InitActiveTasks = {};
    --задачи которые обьект ожидает после создания обьекта
    InitExpectedTasks = {};
};
function GameObject:Get()
    return self;
end


-- вся инициализация должа проходить только в этой функции
function OnInit()
-- инициализация временных переменных здесь
aInitObject = GameObject:Get();
aInitObject.Triggers.Talk.under_task = 0;
end

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

function TalkTriger()
    aObject = GameObject:Get();
    local aTrigger = aObject.Triggers.Talk;
    --если отработал сколько надо раз то все не работать больше
    if (aTrigger.amount <= 0) then return; end
    -- когда доступен триггер не должен работать
    if (aTrigger.under_task == 1) then return; end
    
    if ((not aTrigger.cur_value) or (aTrigger.cur_value == 0)) then
        aTrigger.cur_value = GetTriggerTimerRand(aTrigger);
        return;
    end
    
    aTrigger.cur_value = aTrigger.cur_value - 1;
    if (aTrigger.cur_value <= 0) then
        aTrigger.cur_value = 0;
        -- когда доступен триггер не должен работать
        aTrigger.under_task = 1;
        CPP_RunStringParent("NeedMobila(1);");
    end
end 

function TalkLeft()
    aObj = GameObject:Get();
    aObj.Triggers.Talk.under_task=0;
    aObj.Triggers.Talk.cur_value = 0;
    aObj.Triggers.Talk.amount = aObj.Triggers.Talk.amount-1;
end
