struct str
trigger t
...
...
...
endstruct
static method create takes real period, code funcs, integer data returns Timer
local Timer Time=Timer.allocate()
set Time.t=CreateTrigger()
set Time.data=data
call TriggerRegisterTimerEventPeriodic(Time.t, period )
call TriggerAddAction( Time.t, funcs )
return Time
endmethod
function bang takes nothing returns nothing
call BJDebugMsg(I2S(GetTriggerExecCount(GetTriggeringTrigger())))
endfunction
function Trig_Untitled_Trigger_003_Actions takes nothing returns nothing
call Timer.create(1,function bang,301)
call TriggerSleepAction(1)
call Timer.create(1,function bang,302)
call TriggerSleepAction(1)
call Timer.create(3,function bang,303)
endfunction
//===========================================================================
function InitTrig_Untitled_Trigger_003 takes nothing returns nothing
set gg_trg_Untitled_Trigger_003 = CreateTrigger( )
call TriggerAddAction( gg_trg_Untitled_Trigger_003, function Trig_Untitled_Trigger_003_Actions )
endfunction
library Timer
struct Timer
private triggercondition trigCond
private trigger trig
integer data
readonly real period
static method create takes code func, real period, integer data returns thistype
//callback must return false.
local thistype this = .allocate()
local integer i = 0
set .period = period
set .data = data
set .trig = CreateTrigger()
set .trigCond = TriggerAddCondition(.trig,Condition(func))
loop
call TriggerExecute(.trig)
set i = i + 1
exitwhen i == this
endloop
call TriggerRegisterTimerEvent(trig,period,true)
return this
endmethod
method onDestroy takes nothing returns nothing
call DisableTrigger(.trig)
call TriggerRemoveCondition(.trig,.trigCond)
call DestroyTrigger(.trig)
set .trig = null
endmethod
endstruct
endlibrary