annotate wait.lua @ 11:ece9167c0d1c
v1.2.14.0
Localization support, combat log features (wipe command, aura/pet tracking, and realm detection).
author |
yellowfive |
date |
Thu, 10 Jul 2014 12:24:59 -0700 |
parents |
880a7273759f |
children |
|
rev |
line source |
adam@0
|
1 local _, AskMrRobot = ...
|
adam@0
|
2
|
adam@0
|
3 local waitTable = {};
|
adam@0
|
4 local waitFrame = nil;
|
adam@0
|
5
|
adam@0
|
6 function AskMrRobot.wait(delay, func, ...)
|
adam@0
|
7 if(type(delay)~="number" or type(func)~="function") then
|
yellowfive@11
|
8 print(AMR_WAIT_BAD_ARGUMENTS);
|
adam@0
|
9 return false;
|
adam@0
|
10 end
|
adam@0
|
11 if(waitFrame == nil) then
|
adam@0
|
12 waitFrame = CreateFrame("Frame","WaitFrame", UIParent);
|
adam@0
|
13 waitFrame:SetScript("OnUpdate",function (self,elapse)
|
adam@0
|
14 local count = #waitTable;
|
adam@0
|
15 local i = 1;
|
adam@0
|
16 while(i<=count) do
|
adam@0
|
17 local waitRecord = tremove(waitTable,i);
|
adam@0
|
18 local d = tremove(waitRecord,1);
|
adam@0
|
19 local f = tremove(waitRecord,1);
|
adam@0
|
20 local p = tremove(waitRecord,1);
|
adam@0
|
21 if(d>elapse) then
|
adam@0
|
22 tinsert(waitTable,i,{d-elapse,f,p});
|
adam@0
|
23 i = i + 1;
|
adam@0
|
24 else
|
adam@0
|
25 count = count - 1;
|
adam@0
|
26 f(unpack(p));
|
adam@0
|
27 end
|
adam@0
|
28 end
|
adam@0
|
29 end);
|
adam@0
|
30 end
|
adam@0
|
31 tinsert(waitTable,{delay,func,{...}});
|
adam@0
|
32 return true;
|
adam@0
|
33 end
|