diff SkeletonKey.lua @ 74:9824d524a661

- binding slot mixin: - store key binding definitions under their slot's data table - apply action button attributes when a slot is assigned - obtain correct macro body text when a macro is slotted - fix algorithm for resolving renamed macro indices - move spell detail lookup code out of mixin script - event chains: - initialize addon from PLAYER_LOGIN - reload keybinds from PLAYER_SPECIALIZATION_CHANGED, after spec profile is resolved - refresh interface content from SPELLS_CHANGED - hotkey text: - restore communication and detection of key binding updates and reflect them accordingly - properly respond to dynamic bindings that result from talent updates
author Nenue
date Sat, 14 Jan 2017 02:29:33 -0500
parents c48913c5924c
children 6623b7f2c1ca
line wrap: on
line diff
--- a/SkeletonKey.lua	Sat Jan 07 12:52:05 2017 -0500
+++ b/SkeletonKey.lua	Sat Jan 14 02:29:33 2017 -0500
@@ -151,8 +151,8 @@
   for i = 1, select('#', ...) do
     local key = select(i, ...)
     if type(key) == 'string' then
-    stack[i] = key:gsub('SHIFT', 's'):gsub('ALT', 'a'):gsub('CTRL', 'c'):gsub('SPACE', 'Sp'):gsub('BUTTON', 'M '):gsub('NUMPAD', '# ')
-      end
+      stack[i] = key:gsub('SHIFT', 's'):gsub('ALT', 'a'):gsub('CTRL', 'c'):gsub('SPACE', 'Sp'):gsub('BUTTON', 'M '):gsub('NUMPAD', '# ')
+    end
   end
 
   if #stack >= 1 then
@@ -243,8 +243,8 @@
   local defaultMode
   --- General info
   classHeader, className, classID = UnitClass('player')
-  print('|cFF00FF00profile:|r', name)
-  print('|cFF00FF00class:|r', UnitClass('player'))
+  --kb:print('|cFF00FF00profile:|r', name)
+  --kb:print('|cFF00FF00class:|r', UnitClass('player'))
 
   defaultMode = BINDING_TYPE_GLOBAL
   if db[name] then
@@ -287,9 +287,10 @@
   setmetatable(kb.loadedProfiles[BINDING_TYPE_CHARACTER], {__tostring =function() return kb.configHeaders[BINDING_TYPE_CHARACTER] end})
   setmetatable(kb.loadedProfiles[BINDING_TYPE_SPECIALIZATION], {__tostring =function() return kb.configHeaders[BINDING_TYPE_SPECIALIZATION] end})
 
-  print('|cFF00FF00bindMode:|r', db.bindMode)
   kb.currentProfile = kb.loadedProfiles[db.bindMode]
   kb.currentHeader = kb.configHeaders[db.bindMode]
+
+  print('|cFF88FF00SelectProfile()|r', kb.profileName, classHeader, kb.specInfo.name)
 end
 
 
@@ -317,9 +318,10 @@
   print('|cFF0088FF'..self:GetName()..':OnLoad()')
 
   self.CloseButton:SetScript('OnClick', CloseButton_OnClick)
-  self:RegisterEvent('PLAYER_LOGIN')
   self:RegisterEvent('PLAYER_ENTERING_WORLD')
   self:RegisterEvent('ADDON_LOADED')
+  self:RegisterEvent('PLAYER_LOGIN')
+  self:RegisterUnitEvent('PLAYER_SPECIALIZATION_CHANGED', 'player')
   self:EnableKeyboard(false)
 
   self.zoomScale = self:GetScale()
@@ -330,13 +332,15 @@
 end
 
 function SkeletonKeyMixin:OnEvent(event, arg)
-  if event == 'ADDON_LOADED' then
+  print('|cFFFF0088'.. event..'|r', unit)
+  if event == 'PLAYER_LOGIN' then
 
     print('|cFF00FFFF'..event ..'|r', arg or '', IsLoggedIn())
-        if IsLoggedIn() and not self.initialized then
+    if not self.initialized then
       self:Setup()
       self.initialized = true
-      self:Update()
+      kb.ApplyAllBindings()
+      self:Update(true)
     end
 
 
@@ -351,6 +355,11 @@
   end
 end
 
+function SkeletonKeyMixin:RefreshSpells()
+
+  kb.UpdateTalentInfo()
+  kb.UpdatePetInfo()
+end
 
 --- post ADDON_LOADED
 function SkeletonKeyMixin:Setup ()
@@ -365,10 +374,10 @@
   kb.UpdateSpecInfo()
   kb.UpdateTalentInfo()
   kb.SelectProfileSet(kb.profileName)
+  self:SetShown(kb.db.showUI)
   -- todo: redo import checking
 
   kb.UpdateSystemBinds()
-  kb.ApplyAllBindings()
 
   if not InCombatLockdown() then
     kb.CreateHooks()
@@ -380,17 +389,14 @@
   SLASH_SKB2 = "/skeletonkey"
   SlashCmdList.SKB = kb.Command
 
-  self:SetShown(kb.db.showUI)
-  self:Update(true)
 
   self:RegisterEvent('UPDATE_MACROS')
-  self:RegisterEvent('UPDATE_BINDINGS')
+  --self:RegisterEvent('UPDATE_BINDINGS')
   self:RegisterUnitEvent('UNIT_PORTRAIT_UPDATE', 'player', 'pet')
-  self:RegisterUnitEvent('PLAYER_SPECIALIZATION_CHANGED', 'player', 'pet')
-  self:RegisterUnitEvent('SPELLS_CHANGED')
-  self:RegisterUnitEvent('TALENT_UPDATE', 'player', 'pet')
   self:RegisterEvent('PLAYER_REGEN_DISABLED')
   self:RegisterEvent('PLAYER_REGEN_ENABLED')
+  self:RegisterEvent('SPELLS_CHANGED')
+  self:RegisterEvent('PLAYER_TALENT_UPDATE')
 
   self:RegisterForDrag('LeftButton')
   self:SetMovable(true)