Mercurial > wow > cyborg-mmo7
changeset 23:3b1c0b676583
Simplified the CallbackFactory object model.
author | madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09 |
---|---|
date | Thu, 25 Apr 2013 01:30:36 +0000 |
parents | 0b0f51236a88 |
children | 6906d8ffd580 |
files | CallbackFactory.lua CyborgMMO7.lua WowObjects.lua |
diffstat | 3 files changed, 69 insertions(+), 102 deletions(-) [+] |
line wrap: on
line diff
--- a/CallbackFactory.lua Thu Apr 25 01:30:31 2013 +0000 +++ b/CallbackFactory.lua Thu Apr 25 01:30:36 2013 +0000 @@ -18,108 +18,75 @@ --~ along with this program; if not, write to the Free Software --~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -CyborgMMO_CallbackFactory = { - new = function() - local self = {} - self.Frame = CreateFrame("Frame", "CallbackFactoryFrame", UIParent) - self.Callbacks = {} - self.Id = 1 +------------------------------------------------------------------------------ - self.AddCallback = function(fn) - local name = "Button"..self.Id - self.Callbacks[name] = CreateFrame("Button", name, self.Frame) - self.Callbacks[name]:SetScript("OnClick", fn) - self.Id = self.Id + 1 - return self.Callbacks[name],self.Frame,name - end +local CallbackFactory_methods = {} +local CallbackFactory_mt = {__index=CallbackFactory_methods} - self.RemoveCallback = function(name) - self.Callbacks[name] = nil - end +local function CallbackFactory() + local self = {} + self.Frame = CreateFrame("Frame", "CallbackFactoryFrame", UIParent) + self.Callbacks = {} + self.Id = 1 - self.GetCallback = function(callbackName) - local callback = nil - if callbackName == "Map" then - callback = self.ToggleMap - elseif callbackName == "CharacterPage" then - callback = self.ToggleCharacterPage - elseif callbackName == "Spellbook" then - callback = self.ToggleSpellbook - elseif callbackName == "Macros" then - callback = self.ToggleMacros - elseif callbackName == "QuestLog" then - callback = self.ToggleQuests - elseif callbackName == "Achievement" then - callback = self.ToggleAchievements - elseif callbackName == "Inventory" then - callback = self.ToggleBags - end - return callback - end + setmetatable(self, CallbackFactory_mt) + return self +end - self.ToggleMap = function() - ToggleFrame(WorldMapFrame) - end +function CallbackFactory_methods:AddCallback(fn) + local name = "Button"..self.Id + self.Callbacks[name] = CreateFrame("Button", name, self.Frame) + self.Callbacks[name]:SetScript("OnClick", fn) + self.Id = self.Id + 1 + return self.Callbacks[name],self.Frame,name +end - self.ToggleCharacterPage = function() - ToggleCharacter("PaperDollFrame") - end +function CallbackFactory_methods:RemoveCallback(name) + self.Callbacks[name] = nil +end - self.ToggleSpellbook = function() - ToggleFrame(SpellBookFrame) - if SpellBookFrame:IsShown() then - SpellbookMicroButton:SetButtonState("PUSHED", 1) - else - SpellbookMicroButton:SetButtonState("NORMAL") - end - end +local callbacks = {} - self.ToggleMacros = function() - if MacroFrame:IsShown() and MacroFrame:IsVisible() then - HideUIPanel(MacroFrame) - else - ShowMacroFrame() - end - end +function CallbackFactory_methods:GetCallback(name) + return callbacks[name] +end - self.ToggleQuests = function() - ToggleFrame(QuestLogFrame) - if QuestLogFrame:IsShown() then - QuestLogMicroButton:SetButtonState("PUSHED", 1) - else - QuestLogMicroButton:SetButtonState("NORMAL") - end - end +------------------------------------------------------------------------------ - self.ToggleAchievements = function() - ToggleAchievementFrame() - if AchievementFrame and AchievementFrame:IsShown() then - AchievementMicroButton:SetButtonState("PUSHED", 1) - else - if (HasCompletedAnyAchievement() or IsInGuild()) and CanShowAchievementUI() then - AchievementMicroButton:Enable() - AchievementMicroButton:SetButtonState("NORMAL") - else - AchievementMicroButton:Disable() - end - end - end +function callbacks.Map() + ToggleFrame(WorldMapFrame) +end - self.ToggleBags = function() - ToggleAllBags() - end - return self - end, +function callbacks.CharacterPage() + ToggleCharacter("PaperDollFrame") +end - m_Instance = nil, +function callbacks.Spellbook() + ToggleFrame(SpellBookFrame) +end - Instance = function() - if not CyborgMMO_CallbackFactory.m_Instance then - CyborgMMO_CallbackFactory.m_Instance = CyborgMMO_CallbackFactory.new() - end - return CyborgMMO_CallbackFactory.m_Instance - end, -} +function callbacks.Macros() + if MacroFrame:IsShown() and MacroFrame:IsVisible() then + HideUIPanel(MacroFrame) + else + ShowMacroFrame() + end +end +function callbacks.QuestLog() + ToggleFrame(QuestLogFrame) +end +function callbacks.Achievement() + ToggleAchievementFrame() +end + +function callbacks.Inventory() + ToggleAllBags() +end + +------------------------------------------------------------------------------ + +CyborgMMO_CallbackFactory = CallbackFactory() +
--- a/CyborgMMO7.lua Thu Apr 25 01:30:31 2013 +0000 +++ b/CyborgMMO7.lua Thu Apr 25 01:30:36 2013 +0000 @@ -171,12 +171,12 @@ function CyborgMMO_SetupModeCallbacks(modeNum) - fn = function() + local fn = function() CyborgMMO_MouseModeChange(modeNum) CyborgMMO_RatPageModel:SetMode(modeNum) end - local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(fn) + local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(fn) SetOverrideBindingClick(parentFrame, true, CyborgMMO_Mode[modeNum], name, "LeftButton") end
--- a/WowObjects.lua Thu Apr 25 01:30:31 2013 +0000 +++ b/WowObjects.lua Thu Apr 25 01:30:36 2013 +0000 @@ -47,7 +47,7 @@ end, ClearBinding = function(key) - local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(CyborgMMO_WowObject.DoNothing) + local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(CyborgMMO_WowObject.DoNothing) SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton") end, @@ -138,7 +138,7 @@ end self.DoAction = function() - local action = CyborgMMO_CallbackFactory.Instance().GetCallback(self.CallbackName) + local action = CyborgMMO_CallbackFactory:GetCallback(self.CallbackName) CyborgMMO_DPrint("calling callback:- "..self.CallbackName) action() end @@ -168,8 +168,8 @@ end self.SetBinding = function(key) - local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction) - SetOverrideBindingClick(CyborgMMO_CallbackFactory.Instance().Frame, true, key, name, "LeftButton") + local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(self.DoAction) + SetOverrideBindingClick(CyborgMMO_CallbackFactory.Frame, true, key, name, "LeftButton") end return self @@ -207,7 +207,7 @@ end self.SetBinding = function(key) - SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "ITEM "..self.Name) + SetOverrideBinding(CyborgMMO_CallbackFactory.Frame, true, key, "ITEM "..self.Name) end return self @@ -241,7 +241,7 @@ self.SetBinding = function(key) CyborgMMO_DPrint("Binding to key "..key) self.Key = key - SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, self.Key, self.Type.." "..self.Name) + SetOverrideBinding(CyborgMMO_CallbackFactory.Frame, true, self.Key, self.Type.." "..self.Name) end return self @@ -274,7 +274,7 @@ self.SetBinding = function(key) self.Key = key - SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "MACRO "..self.Index) + SetOverrideBinding(CyborgMMO_CallbackFactory.Frame, true, key, "MACRO "..self.Index) end return self @@ -310,7 +310,7 @@ self.SetBinding = function(key) self.Key = key - local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction) + local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(self.DoAction) SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton") -- SetOverrideBinding(hiddenModeChanger, true, key, "MACRO "..self.Index) end @@ -348,7 +348,7 @@ self.SetBinding = function(key) self.Key = key - SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "MERCHANT "..self.Index) + SetOverrideBinding(CyborgMMO_CallbackFactory.Frame, true, key, "MERCHANT "..self.Index) end return self @@ -380,7 +380,7 @@ self.SetBinding = function(key) self.Key = key - local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction); + local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(self.DoAction); SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton") end