Mercurial > wow > turok
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Turok/Modules/Timer/Timer.Init.lua Sun Feb 21 08:32:53 2016 -0500 @@ -0,0 +1,205 @@ +--- ${PACKAGE_NAME} +-- @file-author@ +-- @project-revision@ @project-hash@ +-- @file-revision@ @file-hash@ +-- Created: 12/28/2015 7:40 AM +-- +local _, Tk = ... +local T = Tk.Addon +local mod = T:NewModule("TimerControl", "AceTimer-3.0") +local pairs, ipairs, rawset, getmetatable, setmetatable, type, tostring, tinsert = pairs, ipairs, rawset, getmetatable, setmetatable, type, tostring, tinsert +local cWord, cNum, cText, cKey = cWord, cNum, cText, cKey +local print = function(...) print('Timer', ...) end +local index_mt = { + __newindex = function(t,k,v) + rawset(t,k,v) + if type(v) == 'table' then + print('new table', cKey(k)) + setmetatable(v, getmetatable(t)) + else + print('new index', cText(k)) + end + end + } +mod.index = {} +mod.index.name = setmetatable({}, index_mt) +mod.index.global = setmetatable({}, index_mt) +mod.index.preset = {} +-- dummies +mod.prototype = { + status = { + spellID = {}, + spellName = {}, + talentID = {}, + talentRow = {}, + talentOffset = {}, + itemID = {}, + inventoryID = {}, + specPage = {}, + specID = {}, + unit = {}, + }, + trigger = { + aura = {}, + cooldown = {}, + complex = {}, + }, + display = { + icon = {}, + progressbar = {}, + }, +} + +Turok.defaults.spirit = { + global = { + alpha = 1, + alpha_ooc = 0.5, + + sound_active = '[[Interface\Addons\Turok\Media\sound\link.ogg]]', + sound_passive = [[Interface\Addons\Turok\Media\sound\Heart.ogg]], + sound_hidden = [[Interface\Addons\Turok\Media\sound\Electro_-S_Bainbr-7955_hifi.mp3]], + + strata = 'LOW', + anchor = 'CENTER', + parent = 'UIParent', + anchorTo = 'CENTER', + width = 100, + height = 100, + x = 0, + y = 100, + alpha = 1, + alpha_ooc = 0.3, + inverse = false, + persist = false, + desaturated = false, + + icon = {}, + + passive = { + icon = {} + }, + active = { + inco = {} + }, + }, + + font = [[Interface\Addons\Turok\Media\font\ArchivoNarrow-Regular.ttf]], + lefttext = { + size = 14, + inset = -2, + point = 'LEFT', + outline = 'OUTLINE', + format = '%n %pd', + text_color = {1, 1, 1, 1}, + }, + containers = { + }, + timers = {}, +} + +local tdb = Turok.defaults.spirit.timers + +mod.GetInherited = function(dvars, merge, inherited) + if not inherited then + inherited = {} + end + inherited[merge] = merge + T.Config_Merge(dvars, merge) + + if merge.inherits then + local t = mod.index.name[merge.inherits] + if t and not inherited[t] then + mod.GetInherited(dvars, t, inherited) + end + end +end + +local GetClassInfo, GetNumClasses, GetNumSpecializationsForClassID, GetSpecializationInfoForClassID = GetClassInfo, GetNumClasses, GetNumSpecializationsForClassID, GetSpecializationInfoForClassID +mod.GetIndex = function() + print(cWord('**** Index Init')) + + local index = mod.index + local globalIndex = index.global + local nameIndex = index.name + local tdb = TurokData.spirit.timers + local classID = {} + local className = {} + local classSpecID = {} + local specIDClass = {} + + for id=1, GetNumClasses() do + local _, name = GetClassInfo(id) + classID[name] = id + className[id] = name + index[name] = setmetatable({}, index_mt) + + classSpecID[id] = {} + for h=1, GetNumSpecializationsForClassID(id) do + local specID, specName = GetSpecializationInfoForClassID(id, h) + classSpecID[id][h] = specID + specIDClass[specID] = id + end + end + + if not tdb then + print('Missing config table.') + return + end + --- Setup virtuals + for setID, entry in ipairs(tdb) do + if entry.virtual then + print('loading virtual set:', entry.name) + globalIndex[setID] = entry + nameIndex[entry.name or ('noname'.. setID)] = entry + end + end + + --- Starting readin' + for setID, entry in ipairs(tdb) do + if not entry.virtual then + + print('* .index.global['.. setID..'] =', entry.name) + local dvars = T.Config_Push({}, entry, nil, cKey('['..setID..']')..'.'..cWord('dvars')) + dvars.name = entry.name + globalIndex[setID] = dvars + + local name = dvars.name or ('noname'..setID) + nameIndex[name] = entry + print('* .timersByName['..name..'] =', setID, entry.setID) + + --- Combine with any inherited templates + if dvars.inherits and nameIndex[dvars.inherits] then + print('* Adding heritable data from', cText(dvars.inherits)) + mod.GetInherited(dvars, nameIndex[dvars.inherits], {[dvars] = dvars}) + --T.Config_Merge(dvars, nameIndex[dvars.inherits], dvars, cKey('['..setID..']')..'.'..cWord('dvars')) + end + -- class index + if not (dvars.playerClass or dvars.specID) then + for id, class in pairs(className) do + index[class][setID] = dvars + end + print('* indexed globally') + else + if dvars.playerClass then + if type(dvars.playerClass) ~= 'table' then + dvars.playerClass = {dvars.playerClass } + end + for i, playerClass in ipairs(dvars.playerClass) do + index[playerClass][setID] = dvars + print('* applying playerClass entry '..cNum(i)..': '..cWord(playerClass)) + end + end + + if dvars.specID then + if type(dvars.specID) ~= 'table' then + dvars.specID = {dvars.specID } + end + for i, specID in ipairs(dvars.specID) do + print('* applying globalSpecID entry '..cNum(i)..': '..cNum(specID)..' -> '..cWord(className[specIDClass[dvars.specID]])) + index[className[specIDClass[specID]]][setID] = dvars + end + end + end + end + end +end \ No newline at end of file