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