vanilla-wow-addons – Rev 1
?pathlinks?
--<< ================================================= >>--
-- Section I: Chronos Support. --
--<< ================================================= >>--
local EMPTY_TABLE = {};
local DEFAULT_TASK_LIMIT = 100;
local RUN_COUNT = 1;
local TIMER_PREFIX = "ChronosTimer_";
local getTime = GetTime;
local function doTask(task, name)
if (not task[RUN_COUNT]) then
if (task.before) then
task.before(unpack(task.beforeArgs));
end
task[RUN_COUNT] = 0;
end
task.step(unpack(task.stepArgs));
task[RUN_COUNT] = task[RUN_COUNT] + 1;
if (task.isDone(unpack(task.doneArgs))) then
Timex:DeleteSchedule(name);
task[RUN_COUNT] = nil;
if task.after then
task.after(unpack(task.afterArgs));
end
elseif (task[RUN_COUNT] > task.limit) then
Timex:DeleteSchedule(name);
task[RUN_COUNT] = nil;
end
end
if not Chronos then
Chronos = AceAddon:new({
initTime = getTime(),
isScheduledByName = function(n)
local e = Timex:RemainingScheduleTime(n);
return e;
end,
scheduleByName = function(n, t, f, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
Timex:AddSchedule(n, t, nil, nil, f, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
end,
schedule = function(t, f, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
Chronos.scheduleByName(nil, t, f, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
end,
unscheduleByName = function(n)
Timex:DeleteSchedule(n);
end,
flushByName = function(n, w)
Timex:ChangeScheduleDue(n, w);
end,
scheduleRepeating = function(n, t, f)
Timex:AddSchedule(n, t, true, nil, f);
end,
getTimer = function(id)
return Timex:GetTimer(id);
end,
startTimer = function(id)
Timex:AddTimer(id);
end,
endTimer = function(id)
return Timex:DeleteTimer(id);
end,
isTimerActive = function(id)
return Timex:TimerCheck(id);
end,
getTime = function()
return getTime() - Chronos.initTime;
end,
everyFrame = function(f, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
Timex:AddOnUpdate(nil, nil, true, f, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
end,
afterInit = function(f, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
Timex:AddStartupFunc(f, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
end,
performTask = function(t, n)
if not n then
n = t;
end
if not t.step then
error("step function is required for Chronos.performTask");
elseif not t.isDone then
error("isDone function is required for Chronos.performTask");
end
t.stepArgs = t.stepArgs or EMPTY_TABLE;
t.doneArgs = t.doneArgs or EMPTY_TABLE;
t.beforeArgs = t.beforeArgs or EMPTY_TABLE;
t.afterArgs = t.afterArgs or EMPTY_TABLE;
t.limit = t.limit or DEFAULT_TASK_LIMIT;
Timex:AddSchedule(n, 0, TRUE, nil, doTask, t, n);
end
});
Chronos.unscheduleRepeating = Chronos.unscheduleByName;
Chronos.isScheduledRepeating = Chronos.isScheduledByName;
ChronosData = {
-- Initialize the VariablesLoaded flag
variablesLoaded = false;
-- Initialize the EnteredWorld flag
enteredWorld = false;
}
function Chronos:Initialize()
Timex:AddStartupFunc(function()
ChronosData.variablesLoaded = true;
end);
end
function Chronos:Enable()
Chronos:RegisterEvent("PLAYER_ENTERING_WORLD");
Chronos:RegisterEvent("PLAYER_LEAVING_WORLD");
end
function Chronos:PLAYER_ENTERING_WORLD()
ChronosData.enteredWorld = true;
ChronosData.online = true;
end
function Chronos:PLAYER_LEAVING_WORLD()
ChronosData.online = false;
end
end;
--<< ================================================= >>--
-- Section Omega: Closure. --
--<< ================================================= >>--
Generated by GNU Enscript 1.6.5.90.