Mercurial > wow > hotcorners
comparison Libs/AceTimer-3.0/AceTimer-3.0.lua @ 20:9ad7f3c634f1 v8.0.1.020
- Updated Libraries.
author | Tercio |
---|---|
date | Fri, 20 Jul 2018 19:13:08 -0300 |
parents | c31ee4251181 |
children |
comparison
equal
deleted
inserted
replaced
19:817b319cd8ce | 20:9ad7f3c634f1 |
---|---|
13 -- and can be accessed directly, without having to explicitly call AceTimer itself.\\ | 13 -- and can be accessed directly, without having to explicitly call AceTimer itself.\\ |
14 -- It is recommended to embed AceTimer, otherwise you'll have to specify a custom `self` on all calls you | 14 -- It is recommended to embed AceTimer, otherwise you'll have to specify a custom `self` on all calls you |
15 -- make into AceTimer. | 15 -- make into AceTimer. |
16 -- @class file | 16 -- @class file |
17 -- @name AceTimer-3.0 | 17 -- @name AceTimer-3.0 |
18 -- @release $Id: AceTimer-3.0.lua 1119 2014-10-14 17:23:29Z nevcairiel $ | 18 -- @release $Id: AceTimer-3.0.lua 1170 2018-03-29 17:38:58Z funkydude $ |
19 | 19 |
20 local MAJOR, MINOR = "AceTimer-3.0", 17 -- Bump minor on changes | 20 local MAJOR, MINOR = "AceTimer-3.0", 17 -- Bump minor on changes |
21 local AceTimer, oldminor = LibStub:NewLibrary(MAJOR, MINOR) | 21 local AceTimer, oldminor = LibStub:NewLibrary(MAJOR, MINOR) |
22 | 22 |
23 if not AceTimer then return end -- No upgrade needed | 23 if not AceTimer then return end -- No upgrade needed |
32 local function new(self, loop, func, delay, ...) | 32 local function new(self, loop, func, delay, ...) |
33 if delay < 0.01 then | 33 if delay < 0.01 then |
34 delay = 0.01 -- Restrict to the lowest time that the C_Timer API allows us | 34 delay = 0.01 -- Restrict to the lowest time that the C_Timer API allows us |
35 end | 35 end |
36 | 36 |
37 local timer = {...} | 37 local timer = { |
38 timer.object = self | 38 object = self, |
39 timer.func = func | 39 func = func, |
40 timer.looping = loop | 40 looping = loop, |
41 timer.argsCount = select("#", ...) | 41 argsCount = select("#", ...), |
42 timer.delay = delay | 42 delay = delay, |
43 timer.ends = GetTime() + delay | 43 ends = GetTime() + delay, |
44 ... | |
45 } | |
44 | 46 |
45 activeTimers[timer] = timer | 47 activeTimers[timer] = timer |
46 | 48 |
47 -- Create new timer closure to wrap the "timer" object | 49 -- Create new timer closure to wrap the "timer" object |
48 timer.callback = function() | 50 timer.callback = function() |
154 end | 156 end |
155 end | 157 end |
156 | 158 |
157 --- Cancels all timers registered to the current addon object ('self') | 159 --- Cancels all timers registered to the current addon object ('self') |
158 function AceTimer:CancelAllTimers() | 160 function AceTimer:CancelAllTimers() |
159 for k,v in pairs(activeTimers) do | 161 for k,v in next, activeTimers do |
160 if v.object == self then | 162 if v.object == self then |
161 AceTimer.CancelTimer(self, k) | 163 AceTimer.CancelTimer(self, k) |
162 end | 164 end |
163 end | 165 end |
164 end | 166 end |
185 -- disable old timer logic | 187 -- disable old timer logic |
186 AceTimer.frame:SetScript("OnUpdate", nil) | 188 AceTimer.frame:SetScript("OnUpdate", nil) |
187 AceTimer.frame:SetScript("OnEvent", nil) | 189 AceTimer.frame:SetScript("OnEvent", nil) |
188 AceTimer.frame:UnregisterAllEvents() | 190 AceTimer.frame:UnregisterAllEvents() |
189 -- convert timers | 191 -- convert timers |
190 for object,timers in pairs(AceTimer.selfs) do | 192 for object,timers in next, AceTimer.selfs do |
191 for handle,timer in pairs(timers) do | 193 for handle,timer in next, timers do |
192 if type(timer) == "table" and timer.callback then | 194 if type(timer) == "table" and timer.callback then |
193 local newTimer | 195 local newTimer |
194 if timer.delay then | 196 if timer.delay then |
195 newTimer = AceTimer.ScheduleRepeatingTimer(timer.object, timer.callback, timer.delay, timer.arg) | 197 newTimer = AceTimer.ScheduleRepeatingTimer(timer.object, timer.callback, timer.delay, timer.arg) |
196 else | 198 else |
212 AceTimer.frame = nil | 214 AceTimer.frame = nil |
213 local oldTimers = AceTimer.activeTimers | 215 local oldTimers = AceTimer.activeTimers |
214 -- Clear old timer table and update upvalue | 216 -- Clear old timer table and update upvalue |
215 AceTimer.activeTimers = {} | 217 AceTimer.activeTimers = {} |
216 activeTimers = AceTimer.activeTimers | 218 activeTimers = AceTimer.activeTimers |
217 for handle, timer in pairs(oldTimers) do | 219 for handle, timer in next, oldTimers do |
218 local newTimer | 220 local newTimer |
219 -- Stop the old timer animation | 221 -- Stop the old timer animation |
220 local duration, elapsed = timer:GetDuration(), timer:GetElapsed() | 222 local duration, elapsed = timer:GetDuration(), timer:GetElapsed() |
221 timer:GetParent():Stop() | 223 timer:GetParent():Stop() |
222 if timer.looping then | 224 if timer.looping then |
230 newTimer.handle = handle | 232 newTimer.handle = handle |
231 end | 233 end |
232 | 234 |
233 -- Migrate transitional handles | 235 -- Migrate transitional handles |
234 if oldminor < 13 and AceTimer.hashCompatTable then | 236 if oldminor < 13 and AceTimer.hashCompatTable then |
235 for handle, id in pairs(AceTimer.hashCompatTable) do | 237 for handle, id in next, AceTimer.hashCompatTable do |
236 local t = activeTimers[id] | 238 local t = activeTimers[id] |
237 if t then | 239 if t then |
238 activeTimers[id] = nil | 240 activeTimers[id] = nil |
239 activeTimers[handle] = t | 241 activeTimers[handle] = t |
240 t.handle = handle | 242 t.handle = handle |
255 "TimeLeft" | 257 "TimeLeft" |
256 } | 258 } |
257 | 259 |
258 function AceTimer:Embed(target) | 260 function AceTimer:Embed(target) |
259 AceTimer.embeds[target] = true | 261 AceTimer.embeds[target] = true |
260 for _,v in pairs(mixins) do | 262 for _,v in next, mixins do |
261 target[v] = AceTimer[v] | 263 target[v] = AceTimer[v] |
262 end | 264 end |
263 return target | 265 return target |
264 end | 266 end |
265 | 267 |
269 -- cancel all timers registered for the object | 271 -- cancel all timers registered for the object |
270 function AceTimer:OnEmbedDisable(target) | 272 function AceTimer:OnEmbedDisable(target) |
271 target:CancelAllTimers() | 273 target:CancelAllTimers() |
272 end | 274 end |
273 | 275 |
274 for addon in pairs(AceTimer.embeds) do | 276 for addon in next, AceTimer.embeds do |
275 AceTimer:Embed(addon) | 277 AceTimer:Embed(addon) |
276 end | 278 end |