Mercurial > wow > turok
comparison Turok/Modules/Timer/Status.lua @ 9:9400a0ff8540
Ugh
Timer:
- container update directionality
- talent update iterates over a non-volatile table to carry out updates
- index management steps organized
- talentRow status implemented, returns the spell associated with the talent chosen from that row
CombatLog:
- sort out font controls and unbork arguments
| author | Nenue |
|---|---|
| date | Sun, 21 Feb 2016 13:08:30 -0500 |
| parents | a9b8b0866ece |
| children |
comparison
equal
deleted
inserted
replaced
| 8:7790dff0fe13 | 9:9400a0ff8540 |
|---|---|
| 1 local _G, T = _G, Turok | 1 local _G, T = _G, Turok |
| 2 local mod = T.modules.TimerControl | 2 local mod = T.modules.TimerControl |
| 3 local P = mod.prototype | 3 local P = mod.prototype |
| 4 local GetInventoryItemID, GetItemInfo, GetInventoryItemTexture = GetInventoryItemID, GetItemInfo, GetInventoryItemTexture | 4 local GetInventoryItemID, GetItemInfo, GetInventoryItemTexture = GetInventoryItemID, GetItemInfo, GetInventoryItemTexture |
| 5 local GetSpellDescription, GetSpellInfo, GetSpellCharges = GetSpellDescription, GetSpellInfo, GetSpellCharges | 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 | 6 local tinsert, type, tonumber, pairs, ipairs, unpack = tinsert, type, tonumber, pairs, ipairs, unpack |
| 8 local UnitGUID = UnitGUID | 7 local UnitGUID = UnitGUID |
| 9 local GetTalentInfo, GetTalentInfoByID, GetItemSpell, PaperDoll_IsEquippedSlot = GetTalentInfo, GetTalentInfoByID, GetItemSpell, PaperDoll_IsEquippedSlot | 8 local GetTalentInfo, GetTalentInfoByID, GetItemSpell, PaperDoll_IsEquippedSlot = GetTalentInfo, GetTalentInfoByID, GetItemSpell, PaperDoll_IsEquippedSlot |
| 10 local print = function(...) print('Timer', ...) end | |
| 11 print('Peep!', ...) | |
| 12 | |
| 13 --@debug@ | 9 --@debug@ |
| 14 local DEBUG = true | 10 local DEBUG = true |
| 15 --@end-debug@ | 11 --@end-debug@ |
| 16 local cType, cText, cNum, cWord, cKey, cPink, cBool = cType, cText, cNum, cWord, cKey, cPink, cBool | 12 local cType, cText, cNum, cWord, cKey, cPink, cBool = cType, cText, cNum, cWord, cKey, cPink, cBool |
| 17 local print = function(...) | 13 local print = function(...) |
| 18 if not DEBUG then return end | 14 if not DEBUG then return end |
| 19 if _G.Devian and _G.DevianDB.workspace ~= 1 then | 15 if _G.Devian and _G.DevianDB.workspace ~= 1 then |
| 20 _G.print('Timer', ...) | 16 _G.print('Timer', ...) |
| 21 end | 17 end |
| 22 end | 18 end |
| 19 local tfprint = function(...) | |
| 20 if not DEBUG then return end | |
| 21 if _G.Devian and _G.DevianDB.workspace ~= 1 then | |
| 22 _G.print('TimerFocus', ...) | |
| 23 end | |
| 24 end | |
| 23 ------------------------------------------ | 25 ------------------------------------------ |
| 24 --- Parameter Prototypes | 26 --- Parameter Prototypes |
| 25 | 27 |
| 26 local Timer_GetPrintHandler = function(self) | 28 local Timer_GetPrintHandler = function(self) |
| 27 return self.trace and function(...) | 29 return self.trace and function(...) |
| 28 print(...) | 30 print(...) |
| 29 _G.print('TimerFocus', ...) | 31 tfprint( ...) |
| 30 end or print | 32 end or print |
| 31 end | 33 end |
| 32 | 34 |
| 33 local Timer_UpdateIndex = function(self, key, value) | 35 local Timer_UpdateIndex = function(self, key, value) |
| 34 local print = Timer_GetPrintHandler(self) | 36 local print = Timer_GetPrintHandler(self) |
| 59 sfk[value] = #mfkv | 61 sfk[value] = #mfkv |
| 60 print(' *= self.frames['..cKey(key)..']['..cNum(value)..'] = ', sfk[value]) | 62 print(' *= self.frames['..cKey(key)..']['..cNum(value)..'] = ', sfk[value]) |
| 61 end | 63 end |
| 62 end | 64 end |
| 63 | 65 |
| 66 --- update conditional cvars (i.e. talentRow(5) pulls up column 3, so cvars.x = args[talentRow][3].x) | |
| 67 local Timer_SetAttributeValues = function(self, key, value) | |
| 68 print(' ', cKey(key), 'sub-value =', cNum(value)) | |
| 69 local sda = self.dvars.args | |
| 70 if sda and sda[key] then | |
| 71 print(cText(' conditional:')) | |
| 72 local dvals = (value and sda[key][value]) and sda[key][value] or sda[key].default | |
| 73 for k, v in pairs(dvals) do | |
| 74 print(cText(' '), 'cvars.'..cKey(k), '=', cWord(v)) | |
| 75 self.cvars[k] = v | |
| 76 end | |
| 77 end | |
| 78 end | |
| 79 | |
| 64 --- spellID | 80 --- spellID |
| 65 do | 81 do |
| 66 local spellID = P.status.spellID | 82 local spellID = P.status.spellID |
| 67 spellID.Init = function(self, spellID) | 83 spellID.Init = function(self, spellID) |
| 68 local print = Timer_GetPrintHandler(self) | 84 local print = Timer_GetPrintHandler(self) |
| 100 else | 116 else |
| 101 print(' ', cPink("spellID"), '=', 'not sure') | 117 print(' ', cPink("spellID"), '=', 'not sure') |
| 102 Timer_UpdateIndex(self, 'spellID', nil) | 118 Timer_UpdateIndex(self, 'spellID', nil) |
| 103 Timer_UpdateIndex(self, 'spellName', spellName) | 119 Timer_UpdateIndex(self, 'spellName', spellName) |
| 104 end | 120 end |
| 121 Timer_SetAttributeValues(self, 'spellName', spellID) | |
| 105 end | 122 end |
| 106 end | 123 end |
| 107 | 124 |
| 108 | 125 |
| 109 --- talentID | 126 --- talentID |
| 124 self.debug_info ('Talent not selected.') | 141 self.debug_info ('Talent not selected.') |
| 125 end | 142 end |
| 126 | 143 |
| 127 print(' ', cKey('talentID ('..cNum(self.talentID)..', '..cNum(T.specGroup)..'):'), self.spellName, self.talentSelected ) | 144 print(' ', cKey('talentID ('..cNum(self.talentID)..', '..cNum(T.specGroup)..'):'), self.spellName, self.talentSelected ) |
| 128 Timer_UpdateIndex(self, 'talentID', talentID) | 145 Timer_UpdateIndex(self, 'talentID', talentID) |
| 129 | 146 Timer_SetAttributeValues(self, 'talentID', self.talentSelected and 1 or 'default') |
| 130 end | 147 end |
| 131 end | 148 end |
| 132 | 149 |
| 133 --- talentRow - use whatever is in that row as data | 150 --- talentRow - use whatever is in that row as data |
| 134 do | 151 do |
| 135 local talentRow = P.status.talentRow | 152 local talentRow = P.status.talentRow |
| 136 talentRow.Init = function(self, row) | 153 talentRow.Init = function(self, row) |
| 137 local print = Timer_GetPrintHandler(self) | 154 local print = Timer_GetPrintHandler(self) |
| 138 self.talentRow = row | 155 self.talentRow = row |
| 139 local noSelect, talentID = GetTalentRowSelectionInfo(row) | 156 local match |
| 140 if noSelect then | 157 for i = 1, 3 do |
| 158 local talentID, _, _, selected = GetTalentInfo(row, i, T.specGroup) | |
| 159 if selected then | |
| 160 P.status.talentID.Init(self, talentID) | |
| 161 match = i | |
| 162 end | |
| 163 end | |
| 164 | |
| 165 if not match then | |
| 141 self.disable = true | 166 self.disable = true |
| 142 self.debug_info("No talent selected in target row.") | 167 self.debug_info("No talent selected in target row.") |
| 143 else | 168 end |
| 144 P.status.talentID.Init(self, talentID) | |
| 145 end | |
| 146 print(' ', cKey('talentRow ('.. cNum(row).. ') ='), talentID or 'none') | |
| 147 Timer_UpdateIndex(self, 'talentRow', row) | 169 Timer_UpdateIndex(self, 'talentRow', row) |
| 170 Timer_SetAttributeValues(self, 'talentRow', match) | |
| 148 end | 171 end |
| 149 end | 172 end |
| 150 | 173 |
| 151 | 174 |
| 152 --- talentOffset | 175 --- talentOffset |
| 222 if not self.itemID then | 245 if not self.itemID then |
| 223 self.disable = true | 246 self.disable = true |
| 224 self.debug_info ('bad itemID value') | 247 self.debug_info ('bad itemID value') |
| 225 end | 248 end |
| 226 | 249 |
| 227 self.spellName = GetItemSpell(self.itemID) | 250 local spellName = GetItemSpell(self.itemID) |
| 228 | 251 |
| 229 if not self.spellName then | 252 if not spellName then |
| 230 self.disable = true | 253 self.disable = true |
| 231 self.debug_info('no spell detected') | 254 self.debug_info('no spell detected') |
| 232 else | 255 if self.spellName then |
| 233 if not (self.frames.spellName and self.frames.spellName[self.spellName]) then | 256 self.spellName = nil |
| 234 if not self.frames.spellName then | |
| 235 self.frames.spellName = {} | |
| 236 end | |
| 237 | |
| 238 Timer_UpdateIndex(self, 'spellName', self.spellName) | |
| 239 end | 257 end |
| 240 end | 258 end |
| 259 | |
| 260 Timer_UpdateIndex(self, 'spellName', spellName) | |
| 261 Timer_SetAttributeValues(self, 'itemID', spellName) | |
| 262 | |
| 241 print(' ', cKey('itemID'), cNum(self.itemID), self.isEquipped)--@end-debug@ | 263 print(' ', cKey('itemID'), cNum(self.itemID), self.isEquipped)--@end-debug@ |
| 242 end | 264 end |
| 243 end | 265 end |
| 244 | 266 |
| 245 do | 267 do |
| 247 inventoryID.type = 'status' | 269 inventoryID.type = 'status' |
| 248 inventoryID.Init = function(self, slot) | 270 inventoryID.Init = function(self, slot) |
| 249 local print = Timer_GetPrintHandler(self) | 271 local print = Timer_GetPrintHandler(self) |
| 250 | 272 |
| 251 self.inventoryID = slot | 273 self.inventoryID = slot |
| 252 self.itemID = GetInventoryItemID(self.dvars.unit, slot) | 274 local itemID = GetInventoryItemID(self.dvars.unit, slot) |
| 253 local name = GetItemInfo(self.itemID) | 275 local name = GetItemInfo(itemID) |
| 254 if not PaperDoll_IsEquippedSlot(slot) then | 276 if not PaperDoll_IsEquippedSlot(slot) then |
| 255 self.disable = true | 277 self.disable = true |
| 256 self.debug_info('slot un-equipped') | 278 self.debug_info('slot un-equipped') |
| 257 return | 279 return |
| 258 end | 280 end |
| 259 | 281 |
| 260 P.status.itemID.Init(self, self.itemID) | 282 Timer_SetAttributeValues(self, 'inventoryID', itemID) |
| 283 P.status.itemID.Init(self, itemID) | |
| 261 self.spellIcon = GetInventoryItemTexture(self.dvars.unit, slot) | 284 self.spellIcon = GetInventoryItemTexture(self.dvars.unit, slot) |
| 262 print(' ', cKey('inventoryID'), '=', '{'..cNum(self.inventoryID).. ' -> '.. cNum(self.itemID or 'no-equip').. '}') | 285 print(' ', cKey('inventoryID'), '=', '{'..cNum(self.inventoryID).. ' -> '.. cNum(self.itemID or 'no-equip').. '}') |
| 263 end | 286 end |
| 264 end | 287 end |
| 265 | 288 |
