adam@0: local _, AskMrRobot = ... adam@0: adam@0: local waitTable = {}; adam@0: local waitFrame = nil; adam@0: adam@0: function AskMrRobot.wait(delay, func, ...) adam@0: if(type(delay)~="number" or type(func)~="function") then adam@0: print("Bad Arguments to amr__wait"); adam@0: return false; adam@0: end adam@0: if(waitFrame == nil) then adam@0: waitFrame = CreateFrame("Frame","WaitFrame", UIParent); adam@0: waitFrame:SetScript("OnUpdate",function (self,elapse) adam@0: local count = #waitTable; adam@0: local i = 1; adam@0: while(i<=count) do adam@0: local waitRecord = tremove(waitTable,i); adam@0: local d = tremove(waitRecord,1); adam@0: local f = tremove(waitRecord,1); adam@0: local p = tremove(waitRecord,1); adam@0: if(d>elapse) then adam@0: tinsert(waitTable,i,{d-elapse,f,p}); adam@0: i = i + 1; adam@0: else adam@0: count = count - 1; adam@0: f(unpack(p)); adam@0: end adam@0: end adam@0: end); adam@0: end adam@0: tinsert(waitTable,{delay,func,{...}}); adam@0: return true; adam@0: end adam@7: --