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 |