Mercurial > wow > cyborg-mmo7
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 22:0b0f51236a88 | 23:3b1c0b676583 |
|---|---|
| 16 | 16 |
| 17 --~ You should have received a copy of the GNU General Public License | 17 --~ You should have received a copy of the GNU General Public License |
| 18 --~ along with this program; if not, write to the Free Software | 18 --~ along with this program; if not, write to the Free Software |
| 19 --~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 19 --~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
| 20 | 20 |
| 21 CyborgMMO_CallbackFactory = { | 21 ------------------------------------------------------------------------------ |
| 22 new = function() | |
| 23 local self = {} | |
| 24 self.Frame = CreateFrame("Frame", "CallbackFactoryFrame", UIParent) | |
| 25 self.Callbacks = {} | |
| 26 self.Id = 1 | |
| 27 | 22 |
| 28 self.AddCallback = function(fn) | 23 local CallbackFactory_methods = {} |
| 29 local name = "Button"..self.Id | 24 local CallbackFactory_mt = {__index=CallbackFactory_methods} |
| 30 self.Callbacks[name] = CreateFrame("Button", name, self.Frame) | |
| 31 self.Callbacks[name]:SetScript("OnClick", fn) | |
| 32 self.Id = self.Id + 1 | |
| 33 return self.Callbacks[name],self.Frame,name | |
| 34 end | |
| 35 | 25 |
| 36 self.RemoveCallback = function(name) | 26 local function CallbackFactory() |
| 37 self.Callbacks[name] = nil | 27 local self = {} |
| 38 end | 28 self.Frame = CreateFrame("Frame", "CallbackFactoryFrame", UIParent) |
| 29 self.Callbacks = {} | |
| 30 self.Id = 1 | |
| 39 | 31 |
| 40 self.GetCallback = function(callbackName) | 32 setmetatable(self, CallbackFactory_mt) |
| 41 local callback = nil | |
| 42 if callbackName == "Map" then | |
| 43 callback = self.ToggleMap | |
| 44 elseif callbackName == "CharacterPage" then | |
| 45 callback = self.ToggleCharacterPage | |
| 46 elseif callbackName == "Spellbook" then | |
| 47 callback = self.ToggleSpellbook | |
| 48 elseif callbackName == "Macros" then | |
| 49 callback = self.ToggleMacros | |
| 50 elseif callbackName == "QuestLog" then | |
| 51 callback = self.ToggleQuests | |
| 52 elseif callbackName == "Achievement" then | |
| 53 callback = self.ToggleAchievements | |
| 54 elseif callbackName == "Inventory" then | |
| 55 callback = self.ToggleBags | |
| 56 end | |
| 57 return callback | |
| 58 end | |
| 59 | 33 |
| 34 return self | |
| 35 end | |
| 60 | 36 |
| 61 self.ToggleMap = function() | 37 function CallbackFactory_methods:AddCallback(fn) |
| 62 ToggleFrame(WorldMapFrame) | 38 local name = "Button"..self.Id |
| 63 end | 39 self.Callbacks[name] = CreateFrame("Button", name, self.Frame) |
| 40 self.Callbacks[name]:SetScript("OnClick", fn) | |
| 41 self.Id = self.Id + 1 | |
| 42 return self.Callbacks[name],self.Frame,name | |
| 43 end | |
| 64 | 44 |
| 65 self.ToggleCharacterPage = function() | 45 function CallbackFactory_methods:RemoveCallback(name) |
| 66 ToggleCharacter("PaperDollFrame") | 46 self.Callbacks[name] = nil |
| 67 end | 47 end |
| 68 | 48 |
| 69 self.ToggleSpellbook = function() | 49 local callbacks = {} |
| 70 ToggleFrame(SpellBookFrame) | |
| 71 if SpellBookFrame:IsShown() then | |
| 72 SpellbookMicroButton:SetButtonState("PUSHED", 1) | |
| 73 else | |
| 74 SpellbookMicroButton:SetButtonState("NORMAL") | |
| 75 end | |
| 76 end | |
| 77 | 50 |
| 78 self.ToggleMacros = function() | 51 function CallbackFactory_methods:GetCallback(name) |
| 79 if MacroFrame:IsShown() and MacroFrame:IsVisible() then | 52 return callbacks[name] |
| 80 HideUIPanel(MacroFrame) | 53 end |
| 81 else | |
| 82 ShowMacroFrame() | |
| 83 end | |
| 84 end | |
| 85 | 54 |
| 86 self.ToggleQuests = function() | 55 ------------------------------------------------------------------------------ |
| 87 ToggleFrame(QuestLogFrame) | |
| 88 if QuestLogFrame:IsShown() then | |
| 89 QuestLogMicroButton:SetButtonState("PUSHED", 1) | |
| 90 else | |
| 91 QuestLogMicroButton:SetButtonState("NORMAL") | |
| 92 end | |
| 93 end | |
| 94 | 56 |
| 95 self.ToggleAchievements = function() | 57 function callbacks.Map() |
| 96 ToggleAchievementFrame() | 58 ToggleFrame(WorldMapFrame) |
| 97 if AchievementFrame and AchievementFrame:IsShown() then | 59 end |
| 98 AchievementMicroButton:SetButtonState("PUSHED", 1) | |
| 99 else | |
| 100 if (HasCompletedAnyAchievement() or IsInGuild()) and CanShowAchievementUI() then | |
| 101 AchievementMicroButton:Enable() | |
| 102 AchievementMicroButton:SetButtonState("NORMAL") | |
| 103 else | |
| 104 AchievementMicroButton:Disable() | |
| 105 end | |
| 106 end | |
| 107 end | |
| 108 | 60 |
| 109 self.ToggleBags = function() | 61 function callbacks.CharacterPage() |
| 110 ToggleAllBags() | 62 ToggleCharacter("PaperDollFrame") |
| 111 end | 63 end |
| 112 return self | |
| 113 end, | |
| 114 | 64 |
| 115 m_Instance = nil, | 65 function callbacks.Spellbook() |
| 66 ToggleFrame(SpellBookFrame) | |
| 67 end | |
| 116 | 68 |
| 117 Instance = function() | 69 function callbacks.Macros() |
| 118 if not CyborgMMO_CallbackFactory.m_Instance then | 70 if MacroFrame:IsShown() and MacroFrame:IsVisible() then |
| 119 CyborgMMO_CallbackFactory.m_Instance = CyborgMMO_CallbackFactory.new() | 71 HideUIPanel(MacroFrame) |
| 120 end | 72 else |
| 121 return CyborgMMO_CallbackFactory.m_Instance | 73 ShowMacroFrame() |
| 122 end, | 74 end |
| 123 } | 75 end |
| 124 | 76 |
| 77 function callbacks.QuestLog() | |
| 78 ToggleFrame(QuestLogFrame) | |
| 79 end | |
| 125 | 80 |
| 81 function callbacks.Achievement() | |
| 82 ToggleAchievementFrame() | |
| 83 end | |
| 84 | |
| 85 function callbacks.Inventory() | |
| 86 ToggleAllBags() | |
| 87 end | |
| 88 | |
| 89 ------------------------------------------------------------------------------ | |
| 90 | |
| 91 CyborgMMO_CallbackFactory = CallbackFactory() | |
| 92 |
