Mercurial > wow > skeletonkey
diff LibKraken/LibKraken.lua @ 62:04c23ceaf9e0
- fix taint caused by loading in combat
author | Nenue |
---|---|
date | Mon, 05 Sep 2016 14:56:38 -0400 |
parents | 256585077cdd |
children |
line wrap: on
line diff
--- a/LibKraken/LibKraken.lua Sun Aug 28 10:06:59 2016 -0400 +++ b/LibKraken/LibKraken.lua Mon Sep 05 14:56:38 2016 -0400 @@ -68,6 +68,7 @@ local Embed = function (target, template) for k,v in pairs(template) do if not target[k] then + print(tostring(target),'<-', k) target[k] = template[k] end end @@ -287,61 +288,44 @@ --- default OnEvent - local processing = false + local EmbedEventScript = function (handler) + if not handler.SetScript then + return + end + print('|cFF00FF88binding', handler:GetName()) + -- enclose so .event can be overridden post-register + handler:SetScript('OnEvent', function(self, event,...) + print('|cFFFF4400' .. tostring(self) .. '|r', event, ...) + print(self.event) + print(self[event]) + self.event(self, event, ...) + end) + handler.unhandled = 0 + handler.missed = 0 + handler.handled = 0 + handler.firstEvent = false + end + + local isHandled = false local nodebug = false - defaultAddon.event = function (addon, event, ...) - if processing then - local args = {...} - C_Timer.After(0, function() LibKT_OnEvent(addon, event, unpack(args)) end) - return - else - - end + defaultAddon.event = function (self, event, ...) + print('what') --- reset state - processing = true - isHandled = false - nodebug = false - - - if addon.event then - nodebug = addon.event(addon, event, ...) - elseif addon[event] then - nodebug = addon[event](addon, event, ...) or nodebug - addon.missed = 0 - addon.handled = addon.handled + 1 + if self[event] then + print('|cFFFFFF00'.. tostring(self) .. '|r', event) + print(self.debug) + self.debug(event, ...) + self[event](self, event, ...) + self.missed = 0 + self.handled = self.handled + 1 isHandled = true else - addon.firstEvent = false - addon.unhandled = addon.unhandled + 1 - addon.missed = addon.missed + 1 + self.firstEvent = false + self.unhandled = self.unhandled + 1 + self.missed = self.missed + 1 end - - if addon.modules then - for i, module in ipairs(addon.modules) do - --print(i, module, event) - if module.event then - module.event(module, event, ...) - elseif module[event] then - nodebug = module[event](addon, event, ...) or nodebug - addon.missed = 0 - addon.handled = addon.handled + 1 - isHandled = true - else - addon.firstEvent = false - addon.unhandled = addon.unhandled + 1 - addon.missed = addon.missed + 1 - end - end - end - --if nodebug then - processing = false return - --else - -- KT.UpdateEventStatus(addon, event, ...) - -- processing = false - --end - end defaultAddon.wrap = function(addon, module, name) local moduleName = name or tostring(module) @@ -357,6 +341,11 @@ else debuggers[module] = noFunc end + module.debug = debuggers[module] + + Embed(module, defaultAddon) + EmbedEventScript(module) + return debuggers[module] end @@ -408,12 +397,12 @@ name = tostring(handler) registeredHandles[handler] = name if handler.SetScript then - handler:SetScript('OnEvent', handler.event) + handler:SetScript('OnEvent', function(...) handler.event(...) end) + handler.unhandled = 0 + handler.missed = 0 + handler.handled = 0 + handler.firstEvent = false end - handler.unhandled = 0 - handler.missed = 0 - handler.handled = 0 - handler.firstEvent = false handler.modules = {} tinsert(KT.initStack, handler) @@ -433,6 +422,8 @@ debuggers[debugID] = debuggers[debugID] or function(...) _G.print(name, ...) end debugFunc = debuggers[debugID] end + + handler.debug = debugFunc --@end-debug@ return handler, debugFunc end