Mercurial > wow > turok
comparison Turok/Modules/Timer/Status.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 local _G, T = _G, Turok | |
2 local mod = T.modules.TimerControl | |
3 local P = mod.prototype | |
4 local GetInventoryItemID, GetItemInfo, GetInventoryItemTexture = GetInventoryItemID, GetItemInfo, GetInventoryItemTexture | |
5 local GetSpellDescription, GetSpellInfo, GetSpellCharges = GetSpellDescription, GetSpellInfo, GetSpellCharges | |
6 local GetTalentRowSelectionInfo = GetTalentRowSelectionInfo | |
7 local tinsert, type, tonumber, pairs, ipairs, unpack = tinsert, type, tonumber, pairs, ipairs, unpack | |
8 local UnitGUID = UnitGUID | |
9 local GetTalentInfo, GetTalentInfoByID, GetItemSpell, PaperDoll_IsEquippedSlot = GetTalentInfo, GetTalentInfoByID, GetItemSpell, PaperDoll_IsEquippedSlot | |
10 local print = function(...) print('Timer', ...) end | |
11 print('Peep!', ...) | |
12 | |
13 --@debug@ | |
14 local DEBUG = true | |
15 --@end-debug@ | |
16 local cType, cText, cNum, cWord, cKey, cPink, cBool = cType, cText, cNum, cWord, cKey, cPink, cBool | |
17 local print = function(...) | |
18 if not DEBUG then return end | |
19 if _G.Devian and _G.DevianDB.workspace ~= 1 then | |
20 _G.print('Timer', ...) | |
21 end | |
22 end | |
23 ------------------------------------------ | |
24 --- Parameter Prototypes | |
25 | |
26 local Timer_GetPrintHandler = function(self) | |
27 return self.trace and function(...) | |
28 print(...) | |
29 _G.print('TimerFocus', ...) | |
30 end or print | |
31 end | |
32 | |
33 local Timer_UpdateIndex = function(self, key, value) | |
34 local print = Timer_GetPrintHandler(self) | |
35 -- sfk[value] = frame index key-value handle | |
36 -- mfkv = key-value frame index | |
37 -- mfkv[sfk[value]] = *frame | |
38 if self.frames[key] then | |
39 local sfk = self.frames[key] | |
40 -- for each unique value | |
41 for oldValue, index in pairs(sfk) do | |
42 local mfkv = mod.frames[key][oldValue] | |
43 -- for each offset after index | |
44 for i = index+1, #mfkv do | |
45 mfkv[i-1] = mfkv[i] -- slide it down | |
46 end | |
47 sfk[oldValue] = nil | |
48 print(cText(' *= self.frames')..'['..cKey(key)..']['..cNum(value)..'] =', cNum(self.frames[key][value])) | |
49 print(cText(' *= mod.frames')..'['..cKey(key)..']['..cNum(value)..']['..cNum(index)..'] =', cNum(self:GetName())) | |
50 end | |
51 else | |
52 self.frames[key] = {} | |
53 end | |
54 | |
55 if value then | |
56 local mfkv = mod.frames[key][value] | |
57 local sfk = self.frames[key] | |
58 mfkv[#mfkv+1] = self | |
59 sfk[value] = #mfkv | |
60 print(' *= self.frames['..cKey(key)..']['..cNum(value)..'] = ', sfk[value]) | |
61 end | |
62 end | |
63 | |
64 --- spellID | |
65 do | |
66 local spellID = P.status.spellID | |
67 spellID.Init = function(self, spellID) | |
68 local print = Timer_GetPrintHandler(self) | |
69 | |
70 if type(spellID) == 'table' then | |
71 spellID = spellID[T.specPage] | |
72 end | |
73 | |
74 -- May have changed if invoked through a slot assignment | |
75 if spellID ~= self.spellID then | |
76 self.spellID = spellID | |
77 self.charges, self.maxCharges, self.chargeStart, self.chargeDuration = GetSpellCharges(spellID) | |
78 self.spellDescription = GetSpellDescription(spellID) | |
79 self.spellName, self.spellRank, self.spellIcon, self.castingTime, self.minRange, self.maxRange = GetSpellInfo(spellID) | |
80 --@debug@ | |
81 print(' ', cWord('spellID ='), cKey(self.spellID), cNum(self.spellName), cText(self.spellDescription and '<desc>' or '<empty>'))--@end-debug@ | |
82 | |
83 Timer_UpdateIndex(self, 'spellID', spellID) | |
84 end | |
85 end | |
86 end | |
87 | |
88 --- spellName | |
89 do | |
90 local spellName = P.status.spellName | |
91 spellName.Init = function(self, spellName) | |
92 local print = Timer_GetPrintHandler(self) | |
93 -- attempt to get spell info | |
94 local exists, _, _, _, _, _, spellID = GetSpellInfo(spellName) | |
95 if exists then | |
96 local charges, maxCharges, start, duration = GetSpellCharges(spellID or spellName) | |
97 Timer_UpdateIndex(self, 'spellName', nil) | |
98 print(' ', cKey("spellID"), '=', spellID) | |
99 P.status.spellID.Init(self, spellID) | |
100 else | |
101 print(' ', cPink("spellID"), '=', 'not sure') | |
102 Timer_UpdateIndex(self, 'spellID', nil) | |
103 Timer_UpdateIndex(self, 'spellName', spellName) | |
104 end | |
105 end | |
106 end | |
107 | |
108 | |
109 --- talentID | |
110 do | |
111 local talentID = P.status.talentID | |
112 local GetTalentInfoByID = GetTalentInfoByID | |
113 talentID.type = 'status' | |
114 talentID.Init = function(self, talentID) | |
115 local print = Timer_GetPrintHandler(self) | |
116 | |
117 self.talentID, self.spellName, self.spellIcon, self.talentSelected = GetTalentInfoByID(talentID, T.specGroup) | |
118 | |
119 if self.talentSelected then | |
120 print(' ', cKey("spellName"), '=', cWord(self.spellName)) | |
121 P.status.spellName.Init(self, self.spellName) | |
122 else | |
123 self.disable = true | |
124 self.debug_info ('Talent not selected.') | |
125 end | |
126 | |
127 print(' ', cKey('talentID ('..cNum(self.talentID)..', '..cNum(T.specGroup)..'):'), self.spellName, self.talentSelected ) | |
128 Timer_UpdateIndex(self, 'talentID', talentID) | |
129 | |
130 end | |
131 end | |
132 | |
133 --- talentRow - use whatever is in that row as data | |
134 do | |
135 local talentRow = P.status.talentRow | |
136 talentRow.Init = function(self, row) | |
137 local print = Timer_GetPrintHandler(self) | |
138 self.talentRow = row | |
139 local noSelect, talentID = GetTalentRowSelectionInfo(row) | |
140 if noSelect then | |
141 self.disable = true | |
142 self.debug_info("No talent selected in target row.") | |
143 else | |
144 P.status.talentID.Init(self, talentID) | |
145 end | |
146 print(' ', cKey('talentRow ('.. cNum(row).. ') ='), talentID or 'none') | |
147 Timer_UpdateIndex(self, 'talentRow', row) | |
148 end | |
149 end | |
150 | |
151 | |
152 --- talentOffset | |
153 do | |
154 local talentOffset = P.status.talentOffset | |
155 talentOffset.Init = function(self, coords) | |
156 local print = Timer_GetPrintHandler(self) | |
157 | |
158 local tier, column = unpack(coords) | |
159 | |
160 | |
161 local selected, usable, _ | |
162 self.talentID, self.spellName, self.spellIcon, selected, usable = GetTalentInfo(tier, column, T.specGroup) | |
163 print(' ', cKey('talentOffset'), '=', cNum(tier), cNum(column), self.spellName, selected, usable) | |
164 if not (selected and usable) then | |
165 self.disable = true | |
166 self.debug_info ((not usable) and 'Unavailable at current level.' or 'Talent not selected.') | |
167 end | |
168 Timer_UpdateIndex(self, 'talentID', self.talentID) | |
169 end | |
170 end | |
171 | |
172 --- specPage | |
173 do | |
174 local specPage = P.status.specPage | |
175 specPage.type = 'status' | |
176 specPage.Init = function(self, specPage) | |
177 local print = Timer_GetPrintHandler(self) | |
178 local match | |
179 if tonumber(specPage) then | |
180 match = specPage == T.specPage | |
181 elseif type(specPage) == 'table' then | |
182 for _, pageID in ipairs(specPage) do | |
183 if T.specPage == pageID then | |
184 specPage = pageID | |
185 match = true | |
186 break | |
187 end | |
188 end | |
189 else | |
190 self.disable = true | |
191 self.debug_info ('Bad value for', '('..cWord(self.timerName)..').'..cKey('specPage')) | |
192 Timer_UpdateIndex(self,'specPage', nil) | |
193 end | |
194 | |
195 if match then | |
196 print(' ', cKey('specPage'), '=', '['..cNum(specPage)..']') | |
197 Timer_UpdateIndex(self,'specPage', specPage) | |
198 else | |
199 print(' ', cKey('specPage'), '~=', '['..cNum(specPage)..']') | |
200 self.disable = true | |
201 self.debug_info('Not active spec.') | |
202 end | |
203 end | |
204 end | |
205 | |
206 --- itemID | |
207 do | |
208 local itemID = P.status.itemID | |
209 itemID.type = 'status' | |
210 itemID.Init = function(self, item) | |
211 local print = Timer_GetPrintHandler(self) | |
212 | |
213 if not self.dvars.inventoryID then | |
214 self.itemID = item or self.dvars.itemID | |
215 self.itemType = self.dvars.itemType | |
216 else | |
217 self.itemID = item | |
218 end | |
219 | |
220 --@debug@ | |
221 --name, link, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture, vendorPrice = GetItemInfo(itemID) or GetItemInfo("itemName") or GetItemInfo("itemLink") | |
222 if not self.itemID then | |
223 self.disable = true | |
224 self.debug_info ('bad itemID value') | |
225 end | |
226 | |
227 self.spellName = GetItemSpell(self.itemID) | |
228 | |
229 if not self.spellName then | |
230 self.disable = true | |
231 self.debug_info('no spell detected') | |
232 else | |
233 if not (self.frames.spellName and self.frames.spellName[self.spellName]) then | |
234 if not self.frames.spellName then | |
235 self.frames.spellName = {} | |
236 end | |
237 | |
238 Timer_UpdateIndex(self, 'spellName', self.spellName) | |
239 end | |
240 end | |
241 print(' ', cKey('itemID'), cNum(self.itemID), self.isEquipped)--@end-debug@ | |
242 end | |
243 end | |
244 | |
245 do | |
246 local inventoryID = P.status.inventoryID | |
247 inventoryID.type = 'status' | |
248 inventoryID.Init = function(self, slot) | |
249 local print = Timer_GetPrintHandler(self) | |
250 | |
251 self.inventoryID = slot | |
252 self.itemID = GetInventoryItemID(self.dvars.unit, slot) | |
253 local name = GetItemInfo(self.itemID) | |
254 if not PaperDoll_IsEquippedSlot(slot) then | |
255 self.disable = true | |
256 self.debug_info('slot un-equipped') | |
257 return | |
258 end | |
259 | |
260 P.status.itemID.Init(self, self.itemID) | |
261 self.spellIcon = GetInventoryItemTexture(self.dvars.unit, slot) | |
262 print(' ', cKey('inventoryID'), '=', '{'..cNum(self.inventoryID).. ' -> '.. cNum(self.itemID or 'no-equip').. '}') | |
263 end | |
264 end | |
265 | |
266 | |
267 --- unit | |
268 local unit = P.status.unit | |
269 unit.type = 'status' | |
270 unit.Init = function(self, unit) | |
271 local print = Timer_GetPrintHandler(self) | |
272 | |
273 self.unitGUID = UnitGUID(unit) | |
274 self.unit = unit | |
275 print(' ', cWord('unitGUID'), '=', cText(self.unitGUID)) | |
276 tinsert(mod.frames.unit[unit], self) | |
277 self.frames.unit = #mod.frames.unit[unit] | |
278 end |