annotate Turok/Modules/Timer/Timer.Init.lua @ 6:a9b8b0866ece

clear out log jam
author Nenue
date Sun, 21 Feb 2016 08:32:53 -0500
parents
children 9400a0ff8540
rev   line source
Nenue@6 1 --- ${PACKAGE_NAME}
Nenue@6 2 -- @file-author@
Nenue@6 3 -- @project-revision@ @project-hash@
Nenue@6 4 -- @file-revision@ @file-hash@
Nenue@6 5 -- Created: 12/28/2015 7:40 AM
Nenue@6 6 --
Nenue@6 7 local _, Tk = ...
Nenue@6 8 local T = Tk.Addon
Nenue@6 9 local mod = T:NewModule("TimerControl", "AceTimer-3.0")
Nenue@6 10 local pairs, ipairs, rawset, getmetatable, setmetatable, type, tostring, tinsert = pairs, ipairs, rawset, getmetatable, setmetatable, type, tostring, tinsert
Nenue@6 11 local cWord, cNum, cText, cKey = cWord, cNum, cText, cKey
Nenue@6 12 local print = function(...) print('Timer', ...) end
Nenue@6 13 local index_mt = {
Nenue@6 14 __newindex = function(t,k,v)
Nenue@6 15 rawset(t,k,v)
Nenue@6 16 if type(v) == 'table' then
Nenue@6 17 print('new table', cKey(k))
Nenue@6 18 setmetatable(v, getmetatable(t))
Nenue@6 19 else
Nenue@6 20 print('new index', cText(k))
Nenue@6 21 end
Nenue@6 22 end
Nenue@6 23 }
Nenue@6 24 mod.index = {}
Nenue@6 25 mod.index.name = setmetatable({}, index_mt)
Nenue@6 26 mod.index.global = setmetatable({}, index_mt)
Nenue@6 27 mod.index.preset = {}
Nenue@6 28 -- dummies
Nenue@6 29 mod.prototype = {
Nenue@6 30 status = {
Nenue@6 31 spellID = {},
Nenue@6 32 spellName = {},
Nenue@6 33 talentID = {},
Nenue@6 34 talentRow = {},
Nenue@6 35 talentOffset = {},
Nenue@6 36 itemID = {},
Nenue@6 37 inventoryID = {},
Nenue@6 38 specPage = {},
Nenue@6 39 specID = {},
Nenue@6 40 unit = {},
Nenue@6 41 },
Nenue@6 42 trigger = {
Nenue@6 43 aura = {},
Nenue@6 44 cooldown = {},
Nenue@6 45 complex = {},
Nenue@6 46 },
Nenue@6 47 display = {
Nenue@6 48 icon = {},
Nenue@6 49 progressbar = {},
Nenue@6 50 },
Nenue@6 51 }
Nenue@6 52
Nenue@6 53 Turok.defaults.spirit = {
Nenue@6 54 global = {
Nenue@6 55 alpha = 1,
Nenue@6 56 alpha_ooc = 0.5,
Nenue@6 57
Nenue@6 58 sound_active = '[[Interface\Addons\Turok\Media\sound\link.ogg]]',
Nenue@6 59 sound_passive = [[Interface\Addons\Turok\Media\sound\Heart.ogg]],
Nenue@6 60 sound_hidden = [[Interface\Addons\Turok\Media\sound\Electro_-S_Bainbr-7955_hifi.mp3]],
Nenue@6 61
Nenue@6 62 strata = 'LOW',
Nenue@6 63 anchor = 'CENTER',
Nenue@6 64 parent = 'UIParent',
Nenue@6 65 anchorTo = 'CENTER',
Nenue@6 66 width = 100,
Nenue@6 67 height = 100,
Nenue@6 68 x = 0,
Nenue@6 69 y = 100,
Nenue@6 70 alpha = 1,
Nenue@6 71 alpha_ooc = 0.3,
Nenue@6 72 inverse = false,
Nenue@6 73 persist = false,
Nenue@6 74 desaturated = false,
Nenue@6 75
Nenue@6 76 icon = {},
Nenue@6 77
Nenue@6 78 passive = {
Nenue@6 79 icon = {}
Nenue@6 80 },
Nenue@6 81 active = {
Nenue@6 82 inco = {}
Nenue@6 83 },
Nenue@6 84 },
Nenue@6 85
Nenue@6 86 font = [[Interface\Addons\Turok\Media\font\ArchivoNarrow-Regular.ttf]],
Nenue@6 87 lefttext = {
Nenue@6 88 size = 14,
Nenue@6 89 inset = -2,
Nenue@6 90 point = 'LEFT',
Nenue@6 91 outline = 'OUTLINE',
Nenue@6 92 format = '%n %pd',
Nenue@6 93 text_color = {1, 1, 1, 1},
Nenue@6 94 },
Nenue@6 95 containers = {
Nenue@6 96 },
Nenue@6 97 timers = {},
Nenue@6 98 }
Nenue@6 99
Nenue@6 100 local tdb = Turok.defaults.spirit.timers
Nenue@6 101
Nenue@6 102 mod.GetInherited = function(dvars, merge, inherited)
Nenue@6 103 if not inherited then
Nenue@6 104 inherited = {}
Nenue@6 105 end
Nenue@6 106 inherited[merge] = merge
Nenue@6 107 T.Config_Merge(dvars, merge)
Nenue@6 108
Nenue@6 109 if merge.inherits then
Nenue@6 110 local t = mod.index.name[merge.inherits]
Nenue@6 111 if t and not inherited[t] then
Nenue@6 112 mod.GetInherited(dvars, t, inherited)
Nenue@6 113 end
Nenue@6 114 end
Nenue@6 115 end
Nenue@6 116
Nenue@6 117 local GetClassInfo, GetNumClasses, GetNumSpecializationsForClassID, GetSpecializationInfoForClassID = GetClassInfo, GetNumClasses, GetNumSpecializationsForClassID, GetSpecializationInfoForClassID
Nenue@6 118 mod.GetIndex = function()
Nenue@6 119 print(cWord('**** Index Init'))
Nenue@6 120
Nenue@6 121 local index = mod.index
Nenue@6 122 local globalIndex = index.global
Nenue@6 123 local nameIndex = index.name
Nenue@6 124 local tdb = TurokData.spirit.timers
Nenue@6 125 local classID = {}
Nenue@6 126 local className = {}
Nenue@6 127 local classSpecID = {}
Nenue@6 128 local specIDClass = {}
Nenue@6 129
Nenue@6 130 for id=1, GetNumClasses() do
Nenue@6 131 local _, name = GetClassInfo(id)
Nenue@6 132 classID[name] = id
Nenue@6 133 className[id] = name
Nenue@6 134 index[name] = setmetatable({}, index_mt)
Nenue@6 135
Nenue@6 136 classSpecID[id] = {}
Nenue@6 137 for h=1, GetNumSpecializationsForClassID(id) do
Nenue@6 138 local specID, specName = GetSpecializationInfoForClassID(id, h)
Nenue@6 139 classSpecID[id][h] = specID
Nenue@6 140 specIDClass[specID] = id
Nenue@6 141 end
Nenue@6 142 end
Nenue@6 143
Nenue@6 144 if not tdb then
Nenue@6 145 print('Missing config table.')
Nenue@6 146 return
Nenue@6 147 end
Nenue@6 148 --- Setup virtuals
Nenue@6 149 for setID, entry in ipairs(tdb) do
Nenue@6 150 if entry.virtual then
Nenue@6 151 print('loading virtual set:', entry.name)
Nenue@6 152 globalIndex[setID] = entry
Nenue@6 153 nameIndex[entry.name or ('noname'.. setID)] = entry
Nenue@6 154 end
Nenue@6 155 end
Nenue@6 156
Nenue@6 157 --- Starting readin'
Nenue@6 158 for setID, entry in ipairs(tdb) do
Nenue@6 159 if not entry.virtual then
Nenue@6 160
Nenue@6 161 print('* .index.global['.. setID..'] =', entry.name)
Nenue@6 162 local dvars = T.Config_Push({}, entry, nil, cKey('['..setID..']')..'.'..cWord('dvars'))
Nenue@6 163 dvars.name = entry.name
Nenue@6 164 globalIndex[setID] = dvars
Nenue@6 165
Nenue@6 166 local name = dvars.name or ('noname'..setID)
Nenue@6 167 nameIndex[name] = entry
Nenue@6 168 print('* .timersByName['..name..'] =', setID, entry.setID)
Nenue@6 169
Nenue@6 170 --- Combine with any inherited templates
Nenue@6 171 if dvars.inherits and nameIndex[dvars.inherits] then
Nenue@6 172 print('* Adding heritable data from', cText(dvars.inherits))
Nenue@6 173 mod.GetInherited(dvars, nameIndex[dvars.inherits], {[dvars] = dvars})
Nenue@6 174 --T.Config_Merge(dvars, nameIndex[dvars.inherits], dvars, cKey('['..setID..']')..'.'..cWord('dvars'))
Nenue@6 175 end
Nenue@6 176 -- class index
Nenue@6 177 if not (dvars.playerClass or dvars.specID) then
Nenue@6 178 for id, class in pairs(className) do
Nenue@6 179 index[class][setID] = dvars
Nenue@6 180 end
Nenue@6 181 print('* indexed globally')
Nenue@6 182 else
Nenue@6 183 if dvars.playerClass then
Nenue@6 184 if type(dvars.playerClass) ~= 'table' then
Nenue@6 185 dvars.playerClass = {dvars.playerClass }
Nenue@6 186 end
Nenue@6 187 for i, playerClass in ipairs(dvars.playerClass) do
Nenue@6 188 index[playerClass][setID] = dvars
Nenue@6 189 print('* applying playerClass entry '..cNum(i)..': '..cWord(playerClass))
Nenue@6 190 end
Nenue@6 191 end
Nenue@6 192
Nenue@6 193 if dvars.specID then
Nenue@6 194 if type(dvars.specID) ~= 'table' then
Nenue@6 195 dvars.specID = {dvars.specID }
Nenue@6 196 end
Nenue@6 197 for i, specID in ipairs(dvars.specID) do
Nenue@6 198 print('* applying globalSpecID entry '..cNum(i)..': '..cNum(specID)..' -> '..cWord(className[specIDClass[dvars.specID]]))
Nenue@6 199 index[className[specIDClass[specID]]][setID] = dvars
Nenue@6 200 end
Nenue@6 201 end
Nenue@6 202 end
Nenue@6 203 end
Nenue@6 204 end
Nenue@6 205 end