Mercurial > wow > skeletonkey
comparison SkeletonKey/HotKey.lua @ 61:b7be92f62b05
unbreak hotkey startup sequence
| author | Nenue |
|---|---|
| date | Sun, 28 Aug 2016 10:06:59 -0400 |
| parents | d8bb2629fea8 |
| children | 04c23ceaf9e0 |
comparison
equal
deleted
inserted
replaced
| 60:256585077cdd | 61:b7be92f62b05 |
|---|---|
| 3 -- Created: 7/22/2016 10:28 PM | 3 -- Created: 7/22/2016 10:28 PM |
| 4 -- %file-revision% | 4 -- %file-revision% |
| 5 -- Module for fixing actionbar hotkey text | 5 -- Module for fixing actionbar hotkey text |
| 6 | 6 |
| 7 local _G, wipe, tContains, tinsert = _G, table.wipe, tContains, tinsert | 7 local _G, wipe, tContains, tinsert = _G, table.wipe, tContains, tinsert |
| 8 local kb, print, wrap = LibStub("LibKraken").register(KeyBinder, "HotKey") | 8 |
| 9 local hotkey = CreateFrame('Frame', 'SkeletonHotKeys', UIParent) | |
| 10 local kb, print, wrap = LibStub("LibKraken").register(KeyBinder, hotkey) | |
| 9 local hotkeyText = {} | 11 local hotkeyText = {} |
| 10 local blizHotKey = {} | 12 local blizHotKey = {} |
| 11 local bindings | 13 local bindings |
| 12 local hotkey = {} | |
| 13 | 14 |
| 14 -- frames obtained via post-load hooks, created by addons like Dominos or BarTender4 | 15 -- frames obtained via post-load hooks, created by addons like Dominos or BarTender4 |
| 15 local loadedFrames = {} | 16 local loadedFrames = {} |
| 16 -- frames divided by update categories | 17 -- frames divided by update categories |
| 17 local categoryFrames = {} | 18 local categoryFrames = {} |
| 18 -- frames indexed by action slot ID (just the action bar, for... reasons) | 19 -- frames indexed by action slot ID (just the action bar, for... reasons) |
| 19 local actionSlots = {} | 20 local actionSlots = {} |
| 20 local actionFrames = {} | 21 local actionFrames = {} |
| 21 local actionIndex = {} | 22 local actionIndex = {} |
| 22 | 23 |
| 23 kb:wrap(hotkey) | |
| 24 | 24 |
| 25 --- Used to determine which groups of action buttons need updating | 25 --- Used to determine which groups of action buttons need updating |
| 26 local hotkeyEvents = { | 26 local hotkeyEvents = { |
| 27 ["UPDATE_BONUS_ACTIONBAR"] = {"bonus"}, | 27 ["UPDATE_BONUS_ACTIONBAR"] = {"bonus"}, |
| 28 ["UPDATE_VEHICLE_ACTIONBAR"] = {"vehicle"}, | 28 ["UPDATE_VEHICLE_ACTIONBAR"] = {"vehicle"}, |
| 49 end | 49 end |
| 50 | 50 |
| 51 | 51 |
| 52 hotkey.RegisterFrame = function(frame) | 52 hotkey.RegisterFrame = function(frame) |
| 53 --wrap(function() | 53 --wrap(function() |
| 54 --print('ActionBarButtonEventsFrame_RegisterFrame(', frame:GetName(), frame.action, frame:IsVisible(), frame:IsShown()) | 54 print('ActionBarButtonEventsFrame_RegisterFrame(', frame:GetName(), frame.action, frame:IsVisible(), frame:IsShown()) |
| 55 --end) | 55 --end) |
| 56 blizHotKey[frame] = frame.HotKey | 56 blizHotKey[frame] = frame.HotKey |
| 57 loadedFrames[frame] = true | 57 loadedFrames[frame] = true |
| 58 end | 58 end |
| 59 | 59 |
| 70 end | 70 end |
| 71 return true | 71 return true |
| 72 end | 72 end |
| 73 | 73 |
| 74 hotkey.variables = function() | 74 hotkey.variables = function() |
| 75 print('variables') | |
| 75 bindings = kb.GetBindings() | 76 bindings = kb.GetBindings() |
| 76 for event, manifest in pairs(hotkeyEvents) do | 77 for event, manifest in pairs(hotkeyEvents) do |
| 77 kb:RegisterEvent(event) | 78 kb:RegisterEvent(event) |
| 78 hotkey[event] = hotkey.UpdateFromEvent | 79 hotkey[event] = hotkey.UpdateFromEvent |
| 79 end | 80 end |
| 80 hotkey.wrapEvent('UNIT_PET', 'pet') | 81 hotkey.wrapEvent('UNIT_PET', 'pet') |
| 82 hotkey.player() | |
| 81 end | 83 end |
| 82 | 84 |
| 83 | 85 |
| 84 hotkey.init = function() | 86 hotkey.init = function() |
| 87 | |
| 85 hooksecurefunc("ActionBarButtonEventsFrame_RegisterFrame", hotkey.RegisterFrame) | 88 hooksecurefunc("ActionBarButtonEventsFrame_RegisterFrame", hotkey.RegisterFrame) |
| 89 | |
| 86 end | 90 end |
| 87 | 91 |
| 88 hotkey.ui = function() | 92 hotkey.ui = function() |
| 93 print('ui') | |
| 89 --hotkey.player() | 94 --hotkey.player() |
| 90 --hotkey.pet() | 95 --hotkey.pet() |
| 91 end | 96 end |
| 92 | 97 |
| 98 | |
| 93 hotkey.world = function() | 99 hotkey.world = function() |
| 100 print('world') | |
| 94 hotkeyEvents["UPDATE_BINDINGS"] = {"binding"} | 101 hotkeyEvents["UPDATE_BINDINGS"] = {"binding"} |
| 95 hotkey.UPDATE_BINDINGS = hotkey.UpdateFromEvent | 102 hotkey.UPDATE_BINDINGS = hotkey.UpdateFromEvent |
| 96 kb:RegisterEvent("UPDATE_BINDINGS") | 103 hotkey:RegisterEvent("UPDATE_BINDINGS") |
| 97 | 104 |
| 98 hotkey.player() | 105 hotkey.player() |
| 99 hotkey.pet() | 106 hotkey.pet() |
| 100 | 107 |
| 101 end | 108 end |
| 107 local indexKey = kb.FormatActionID(actionType, actionID) | 114 local indexKey = kb.FormatActionID(actionType, actionID) |
| 108 print('|cFF00FFFFUpdate|r', frame, indexKey, hasAction) | 115 print('|cFF00FFFFUpdate|r', frame, indexKey, hasAction) |
| 109 | 116 |
| 110 | 117 |
| 111 if bindings[indexKey] then | 118 if bindings[indexKey] then |
| 112 --print('|cFFFFFF00'..frame:GetName(), actionType, actionID, hasAction) | 119 print('|cFFFFFF00'..frame:GetName(), actionType, actionID, hasAction) |
| 113 local binds = bindings[indexKey] | 120 local binds = bindings[indexKey] |
| 114 if binds and (not frame.HotKey:IsVisible()) then | 121 if binds and (not frame.HotKey:IsVisible()) then |
| 115 if hasAction then | 122 if hasAction then |
| 116 local bindingsText = kb.BindingString(unpack(binds)) | 123 local bindingsText = kb.BindingString(unpack(binds)) |
| 117 | 124 |
| 143 end | 150 end |
| 144 | 151 |
| 145 hotkey.actionbar = function() | 152 hotkey.actionbar = function() |
| 146 wipe(actionFrames) | 153 wipe(actionFrames) |
| 147 -- reset frames list | 154 -- reset frames list |
| 148 | 155 print('actionbar') |
| 149 if ActionBarButtonEventsFrame.frames then | 156 if ActionBarButtonEventsFrame.frames then |
| 150 for index, frame in ipairs(ActionBarButtonEventsFrame.frames) do | 157 for index, frame in ipairs(ActionBarButtonEventsFrame.frames) do |
| 158 | |
| 151 local slot = frame.action | 159 local slot = frame.action |
| 152 local actionType, actionID = GetActionInfo(slot) | 160 local actionType, actionID = GetActionInfo(slot) |
| 153 local hasAction = HasAction(slot) | 161 local hasAction = HasAction(slot) |
| 154 local indexKey = kb.FormatActionID(actionType, actionID) | 162 local indexKey = kb.FormatActionID(actionType, actionID) |
| 155 actionSlots[slot] = frame | 163 actionSlots[slot] = frame |
| 175 end | 183 end |
| 176 | 184 |
| 177 end | 185 end |
| 178 | 186 |
| 179 hotkey.player = function() | 187 hotkey.player = function() |
| 188 print('player') | |
| 180 hotkey.actionbar() | 189 hotkey.actionbar() |
| 181 end | 190 end |
| 182 | 191 |
| 183 | 192 |
| 184 | 193 |
