diff 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
line wrap: on
line diff
--- a/Turok/Modules/Timer/Status.lua	Sun Feb 21 08:49:34 2016 -0500
+++ b/Turok/Modules/Timer/Status.lua	Sun Feb 21 13:08:30 2016 -0500
@@ -3,13 +3,9 @@
 local P = mod.prototype
 local GetInventoryItemID, GetItemInfo, GetInventoryItemTexture = GetInventoryItemID, GetItemInfo, GetInventoryItemTexture
 local GetSpellDescription, GetSpellInfo, GetSpellCharges = GetSpellDescription, GetSpellInfo, GetSpellCharges
-local GetTalentRowSelectionInfo = GetTalentRowSelectionInfo
 local tinsert, type, tonumber, pairs, ipairs, unpack = tinsert, type, tonumber, pairs, ipairs, unpack
 local UnitGUID = UnitGUID
 local GetTalentInfo, GetTalentInfoByID, GetItemSpell, PaperDoll_IsEquippedSlot = GetTalentInfo, GetTalentInfoByID, GetItemSpell, PaperDoll_IsEquippedSlot
-local print = function(...) print('Timer', ...) end
-print('Peep!', ...)
-
 --@debug@
 local DEBUG = true
 --@end-debug@
@@ -20,13 +16,19 @@
     _G.print('Timer', ...)
   end
 end
+local tfprint = function(...)
+  if not DEBUG then return end
+  if _G.Devian and _G.DevianDB.workspace ~= 1 then
+    _G.print('TimerFocus', ...)
+  end
+end
 ------------------------------------------
 --- Parameter Prototypes
 
 local Timer_GetPrintHandler = function(self)
   return self.trace and function(...)
     print(...)
-    _G.print('TimerFocus', ...)
+    tfprint( ...)
   end or print
 end
 
@@ -61,6 +63,20 @@
   end
 end
 
+--- update conditional cvars (i.e. talentRow(5) pulls up column 3, so cvars.x = args[talentRow][3].x)
+local Timer_SetAttributeValues = function(self, key, value)
+  print('   ', cKey(key), 'sub-value =', cNum(value))
+  local sda = self.dvars.args
+  if sda and sda[key] then
+    print(cText('      conditional:'))
+    local dvals = (value and sda[key][value]) and sda[key][value] or sda[key].default
+    for k, v in pairs(dvals) do
+      print(cText('     '), 'cvars.'..cKey(k), '=', cWord(v))
+      self.cvars[k] = v
+    end
+  end
+end
+
 --- spellID
 do
   local spellID = P.status.spellID
@@ -102,6 +118,7 @@
       Timer_UpdateIndex(self, 'spellID', nil)
       Timer_UpdateIndex(self, 'spellName', spellName)
     end
+    Timer_SetAttributeValues(self, 'spellName', spellID)
   end
 end
 
@@ -126,7 +143,7 @@
 
     print('   ', cKey('talentID ('..cNum(self.talentID)..', '..cNum(T.specGroup)..'):'), self.spellName, self.talentSelected )
     Timer_UpdateIndex(self, 'talentID', talentID)
-
+    Timer_SetAttributeValues(self, 'talentID', self.talentSelected and 1 or 'default')
   end
 end
 
@@ -136,15 +153,21 @@
   talentRow.Init = function(self, row)
     local print = Timer_GetPrintHandler(self)
     self.talentRow = row
-    local noSelect, talentID = GetTalentRowSelectionInfo(row)
-    if noSelect then
+    local match
+    for i = 1, 3 do
+      local talentID, _, _, selected = GetTalentInfo(row, i, T.specGroup)
+      if selected then
+        P.status.talentID.Init(self, talentID)
+        match = i
+      end
+    end
+
+    if not match then
       self.disable = true
       self.debug_info("No talent selected in target row.")
-    else
-      P.status.talentID.Init(self, talentID)
     end
-    print('   ', cKey('talentRow ('.. cNum(row).. ') ='), talentID or 'none')
     Timer_UpdateIndex(self, 'talentRow', row)
+    Timer_SetAttributeValues(self, 'talentRow', match)
   end
 end
 
@@ -224,20 +247,19 @@
        self.debug_info ('bad itemID value')
     end
 
-    self.spellName = GetItemSpell(self.itemID)
+    local spellName = GetItemSpell(self.itemID)
 
-    if not self.spellName then
+    if not spellName then
       self.disable =  true
-       self.debug_info('no spell detected')
-    else
-      if not (self.frames.spellName and self.frames.spellName[self.spellName]) then
-        if not self.frames.spellName then
-          self.frames.spellName = {}
-        end
-
-        Timer_UpdateIndex(self, 'spellName', self.spellName)
+      self.debug_info('no spell detected')
+      if self.spellName then
+        self.spellName = nil
       end
     end
+
+    Timer_UpdateIndex(self, 'spellName', spellName)
+    Timer_SetAttributeValues(self, 'itemID', spellName)
+
     print('   ', cKey('itemID'), cNum(self.itemID), self.isEquipped)--@end-debug@
   end
 end
@@ -249,15 +271,16 @@
     local print = Timer_GetPrintHandler(self)
 
     self.inventoryID = slot
-    self.itemID = GetInventoryItemID(self.dvars.unit, slot)
-    local name = GetItemInfo(self.itemID)
+    local itemID = GetInventoryItemID(self.dvars.unit, slot)
+    local name = GetItemInfo(itemID)
     if not PaperDoll_IsEquippedSlot(slot) then
       self.disable = true
       self.debug_info('slot un-equipped')
       return
     end
 
-    P.status.itemID.Init(self, self.itemID)
+    Timer_SetAttributeValues(self, 'inventoryID', itemID)
+    P.status.itemID.Init(self, itemID)
     self.spellIcon = GetInventoryItemTexture(self.dvars.unit, slot)
     print('   ', cKey('inventoryID'), '=', '{'..cNum(self.inventoryID).. ' -> '.. cNum(self.itemID or 'no-equip').. '}')
   end