comparison SkeletonKey/HotKey.lua @ 14:82170735e67c

- move co-routine handler to general lib - slightly better handling of pet actions
author Nenue
date Thu, 28 Jul 2016 23:58:53 -0400
parents eeec4a600064
children 73df13211b22
comparison
equal deleted inserted replaced
13:eeec4a600064 14:82170735e67c
2 -- HotKey.lua 2 -- HotKey.lua
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 kb, print = LibStub("LibKraken").register(KeyBinder, 'HotKey') 7 local kb, print, wrap = LibStub("LibKraken").register(KeyBinder, 'HotKey')
8 local hotkey = {} 8 local hotkey = {}
9 local hotkeyText = {} 9 local hotkeyText = {}
10 local blizHotKey = {} 10 local blizHotKey = {}
11 local bindings 11 local bindings
12 12
27 ["ACTIONBAR_PAGE_CHANGED"] = {"actionbar"}, 27 ["ACTIONBAR_PAGE_CHANGED"] = {"actionbar"},
28 ["PLAYER_ENTERING_WORLD"] = {"world","all"}, 28 ["PLAYER_ENTERING_WORLD"] = {"world","all"},
29 ["PET_UI_UPDATE"] = {"pet"}, 29 ["PET_UI_UPDATE"] = {"pet"},
30 } 30 }
31 31
32 do
33 local tickerQueue = {}
34 local ticker
35 local instant = false
36 hotkey.tick = function()
37
38 if #tickerQueue == 0 then
39 instant = true
40 return
41 else
42 instant = false
43 end
44 local func = tremove(tickerQueue, 1)
45 if func then
46 --print('#', #tickerQueue)
47 func()
48 end
49 end
50 hotkey.wrap = function(f)
51 if not ticker then
52 --print('create ticker')
53 ticker = C_Timer.NewTicker(0, hotkey.tick)
54 end
55 if instant then
56 f()
57 else
58 tinsert(tickerQueue, f)
59 end
60 end
61 end
62 32
63 hotkey.wrapEvent = function(event, ...) 33 hotkey.wrapEvent = function(event, ...)
64 kb:RegisterEvent(event) 34 kb:RegisterEvent(event)
65 hotkeyEvents[event] = {...} 35 hotkeyEvents[event] = {...}
66 hotkey[event] = hotkey.UpdateFromEvent 36 hotkey[event] = hotkey.UpdateFromEvent
73 hotkeyEvents[event] = nil 43 hotkeyEvents[event] = nil
74 hotkey[event] = nil 44 hotkey[event] = nil
75 end 45 end
76 46
77 hotkey.ActionButton_Update = function(frame) 47 hotkey.ActionButton_Update = function(frame)
78 hotkey.wrap(function() 48 wrap(function()
79 local actionType, actionID = GetActionInfo(frame.action) 49 local actionType, actionID = GetActionInfo(frame.action)
80 hotkey.UpdateSkeletonKeyText(frame, actionType, actionID, HasAction(frame.action)) 50 hotkey.UpdateSkeletonKeyText(frame, actionType, actionID, HasAction(frame.action))
81 end) 51 end)
82 end 52 end
83 53
84 54
85 hotkey.RegisterFrame = function(frame) 55 hotkey.RegisterFrame = function(frame)
86 --hotkey.wrap(function() 56 --wrap(function()
87 --print('ActionBarButtonEventsFrame_RegisterFrame(', frame:GetName(), frame.action, frame:IsVisible(), frame:IsShown()) 57 --print('ActionBarButtonEventsFrame_RegisterFrame(', frame:GetName(), frame.action, frame:IsVisible(), frame:IsShown())
88 --end) 58 --end)
89 blizHotKey[frame] = frame.HotKey 59 blizHotKey[frame] = frame.HotKey
90 loadedFrames[frame] = true 60 loadedFrames[frame] = true
91 end 61 end