Azlier
Old World Ghost
- Reaction score
- 461
It detects when you click the same unit twice within the provided time (a second by default).
A single function is available to you.
DestroyTrigger friendly, leakless, uses no H2I or any attachment besides what is done at initialization.
Requires Event.
Your friend, Azlier. Oh, and I just found that Azlier is just Lazier jumbled up. Bah.
A single function is available to you.
DestroyTrigger friendly, leakless, uses no H2I or any attachment besides what is done at initialization.
Requires Event.
Your friend, Azlier. Oh, and I just found that Azlier is just Lazier jumbled up. Bah.
JASS:
library DoubleClick initializer Init requires Event
globals
private constant real CLICK_THRESHHOLD = 1.
//How much time between clicks it takes to register a double click.
endglobals
//** System Code **
globals
private boolean array Clicking
private unit array Clicked
private timer array ClickTimer
private Event Ev
private trigger array ClickTrig
endglobals
private function SetTriggerData takes trigger t, integer i returns nothing
loop
exitwhen i == 0
call TriggerExecute(t)
set i = i - 1
endloop
endfunction
function TriggerRegisterDoubleClickEvent takes trigger whichTrigger returns nothing
call Ev.register(whichTrigger)
endfunction
private function Callback takes nothing returns boolean
set Clicking[GetTriggerExecCount(GetTriggeringTrigger())] = false
return false
endfunction
globals
private integer Id
private unit Cu
endglobals
private function Actions takes nothing returns boolean
set Id = GetPlayerId(GetTriggerPlayer())
set Cu = GetTriggerUnit()
if Clicking[Id] then
call PauseTimer(ClickTimer[Id])
if Clicked[Id] == Cu then
call Ev.fire()
set Clicking[Id] = false
else
set Clicked[Id] = Cu
call TimerStart(ClickTimer[Id], CLICK_THRESHHOLD, false, null)
endif
else
set Clicking[Id] = true
set Clicked[Id] = Cu
call TimerStart(ClickTimer[Id], CLICK_THRESHHOLD, false, null)
endif
return false
endfunction
private function Init takes nothing returns nothing
local trigger t = CreateTrigger()
local integer i = 11
set Ev = Event.create()
call TriggerAddCondition(t, Condition(function Actions))
loop
exitwhen i < 0
call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SELECTED, null)
set ClickTimer<i> = CreateTimer()
set ClickTrig<i> = CreateTrigger()
call SetTriggerData.execute(ClickTrig<i>, i)
call TriggerRegisterTimerExpireEvent(ClickTrig<i>, ClickTimer<i>)
call TriggerAddCondition(ClickTrig<i>, Condition(function Callback))
set i = i - 1
endloop
endfunction
endlibrary</i></i></i></i></i></i>