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