Mercurial > wow > cyborg-mmo7
diff CallbackFactory.lua @ 23:3b1c0b676583
Simplified the CallbackFactory object model.
author | madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09 |
---|---|
date | Thu, 25 Apr 2013 01:30:36 +0000 |
parents | 6cb9a2936580 |
children | ea423ee3a8c1 |
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() +