vanilla-wow-addons – Rev 1
?pathlinks?

--[[
A module can optionally have
1) .myevents - a list of strings, the events to register
2) .onload - to be called on startup
3) .onloadcomplete to be called after all other modules have been loaded.
3) .onevent - will do your onevent. Currently sends all events to you, we should fix it to send only your events!
4) .onupdate - you can guess this one!
5) .isenabled - whether to receive onload, onevent, onupdate commands. Must be <false> to not be called
Managing your Variables / Methods
--> Initialise static data anywhere in your code file
--> Initialise variables that depend on other module's static data in your onload() method
--> Initialise variables that depend on other module's variables in your onloadcomplete() method
Each module has a key / branch in the master table. The following keys have been taken:
out
alert
console
string
combat
data
my
table
net, netin
gui, guiopt, guiraid, some other gui
boss
diag
]]
-- table setup
klhtm = { }
local me = klhtm
me.frame = nil -- set at runtime
-- Mod Version
me.release = 17
me.revision = 12
me.build = 203
--[[
Release Build
1 6
2 11
3 30
4 32
5 44
6 54
7 73
8 80
9 92
10 103
11 116
12 124
13 141
14 156
15 177
16 189
16b 192
]]
me.events = { } --[[
Remember which module wants which events.
It will look like
{
["combat"] =
{
["CHAT_MSG_SPELL_SELF_BUFF"] = true,
},
}
if the combat module has registered CHAT_MSG_SPELL_SELF_BUFF
]]
-- This checks whether you are on the 0.12 PTR or 1.12+ live (vs 1.11 live)
if SendAddonMessage then
me.isnewwowversion = true
end
me.isloaded = false -- true when .onload has been called for all sub-modules
me.isenabled = true -- iif false, onupdate and onevent will not be called
-- onload
me.onload = function()
-- find frame
me.frame = KLHTM_OnUpdateFrame
-- initialise all submodules
for key, subtable in me do
if type(subtable) == "table" and subtable.onload and subtable.isenabled ~= "false" then
subtable.onload()
end
end
me.isloaded = true
-- register events. Strictly after all modules have been loaded.
for key, subtable in me do
if type(subtable) == "table" and subtable.myevents then
me.events[key] = { }
for _, event in subtable.myevents do
me.frame:RegisterEvent(event)
me.events[key][event] = true
end
end
end
-- onloadcomplete
for key, subtable in me do
if type(subtable) == "table" and subtable.onloadcomplete and subtable.isenabled ~= "false" then
subtable.onloadcomplete()
end
end
-- Print load message
me.out.print(string.format(me.string.get("print", "main", "startupmessage"), me.release, me.revision), nil, true)
-- notify of 1.12 override
if me.isnewwowversion then
me.out.print("The WoW version is 0.12 or 1.12 or higher, so the mod is using multiplicative threat and no longer using a chat channel for communication.")
end
end
-- OnUpdate
me.onupdate = function()
-- only call when everything has been loaded
if me.isloaded ~= true then
return
end
-- don't call if the entire addon is disabled
if me.isenabled == false then
return
end
for key, subtable in me do
if type(subtable) == "table" and subtable.onupdate and subtable.isenabled ~= "false" then
me.diag.logmethodcall(key, "onupdate")
end
end
end
-- OnEvent
me.onevent = function()
-- don't call if the entire addon is disabled
if me.isenabled == false then
return
end
for key, subtable in me do
-- 1) The subtable is a valid module - is a table and has a .onevent property.
-- 2) The subtable is not disabled
-- 3) The subtable has registered the event
if type(subtable) == "table" and subtable.onevent and subtable.isenabled ~= "false" and me.events[key][event] then
me.diag.logmethodcall(key, "onevent")
end
end
end
--[[
klhtm.emergencystop()
Stops all processing of events and onupdates. Just in case! This is unlocalised and raw to make sure it works even if there are errors elsewhere in the program.
]]
me.emergencystop = function()
me.isenabled = false
ChatFrame1:AddMessage("KLHThreatMeter emergency stop! |cffffff00/ktm|r e to resume.")
end
Generated by GNU Enscript 1.6.5.90.