function WaitForPlayerEvent_H2P takes handle h returns player
return h
endfunction
function WaitForPlayerEvent_H2F takes handle h returns force
return h
endfunction
function WaitForPlayerEvent_PE2I takes playerevent p returns integer
if true then
return p
endif
return 0
endfunction
function WaitForPlayerEvent_Enum takes nothing returns nothing
call TriggerRegisterPlayerEvent(bj_delayedSuspendDecayTrig, GetEnumPlayer(), ConvertPlayerEvent(bj_forceCountPlayers))
endfunction
function WaitForPlayerEvent takes handle whichForceOrPlayer, playerevent whichPlayerEvent, boolexpr condition, real interval returns nothing
local trigger bj_temp = bj_delayedSuspendDecayTrig
local trigger t
local triggercondition c
local player whichPlayer = WaitForPlayerEvent_H2P(whichForceOrPlayer)
local force whichForce = WaitForPlayerEvent_H2F(whichForceOrPlayer)
if whichForceOrPlayer == null or whichPlayerEvent == null then
set whichForce = null
return
elseif interval < 0 then
set interval = 0
endif
set t = CreateTrigger()
set bj_delayedSuspendDecayTrig = t
set bj_forceCountPlayers = WaitForPlayerEvent_PE2I(whichPlayerEvent)
call ForForce(whichForce, function WaitForPlayerEvent_Enum)
call TriggerRegisterPlayerEvent(bj_delayedSuspendDecayTrig, whichPlayer, whichPlayerEvent)
if condition != null then
set c = TriggerAddCondition(bj_delayedSuspendDecayTrig, condition)
endif
set bj_delayedSuspendDecayTrig = bj_temp
loop
call TriggerSleepAction(interval)
exitwhen GetTriggerExecCount(t) != 0
endloop
if condition != null then
call TriggerRemoveCondition(t, c)
set c = null
endif
call DestroyTrigger(t)
set t = null
set whichForce = null
endfunction