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