madcatzinc@0
|
1 --~ Warcraft Plugin for Cyborg MMO7
|
madcatzinc@0
|
2 --~ Filename: CalbackFactory.lua
|
madcatzinc@0
|
3 --~ Description: Creates lua callbacks that can be executed from a user keycombination
|
madcatzinc@0
|
4 --~ Copyright (C) 2012 Mad Catz Inc.
|
madcatzinc@0
|
5 --~ Author: Christopher Hooks
|
madcatzinc@0
|
6
|
madcatzinc@0
|
7 --~ This program is free software; you can redistribute it and/or
|
madcatzinc@0
|
8 --~ modify it under the terms of the GNU General Public License
|
madcatzinc@0
|
9 --~ as published by the Free Software Foundation; either version 2
|
madcatzinc@0
|
10 --~ of the License, or (at your option) any later version.
|
madcatzinc@0
|
11
|
madcatzinc@0
|
12 --~ This program is distributed in the hope that it will be useful,
|
madcatzinc@0
|
13 --~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
madcatzinc@0
|
14 --~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
madcatzinc@0
|
15 --~ GNU General Public License for more details.
|
madcatzinc@0
|
16
|
madcatzinc@0
|
17 --~ You should have received a copy of the GNU General Public License
|
madcatzinc@0
|
18 --~ along with this program; if not, write to the Free Software
|
madcatzinc@0
|
19 --~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
madcatzinc@0
|
20
|
madcatzinc@4
|
21 CyborgMMO_CallbackFactory = {
|
madcatzinc@0
|
22 new = function()
|
madcatzinc@0
|
23 local self = {}
|
madcatzinc@0
|
24 self.Frame = CreateFrame("Frame","CallbackFactoryFrame", UIParent);
|
madcatzinc@0
|
25 self.Callbacks = {}
|
madcatzinc@0
|
26 self.Id = 1;
|
madcatzinc@0
|
27
|
madcatzinc@0
|
28 self.AddCallback = function(fn)
|
madcatzinc@0
|
29 local name = "Button"..self.Id
|
madcatzinc@0
|
30 self.Callbacks[name] = CreateFrame("Button", name, self.Frame)
|
madcatzinc@0
|
31 self.Callbacks[name]:SetScript("OnClick", fn);
|
madcatzinc@0
|
32 self.Id = self.Id + 1;
|
madcatzinc@0
|
33 return self.Callbacks[name], self.Frame, name;
|
madcatzinc@0
|
34 end
|
madcatzinc@0
|
35
|
madcatzinc@0
|
36 self.RemoveCallback = function(name)
|
madcatzinc@0
|
37 self.Callbacks[name] = nil
|
madcatzinc@0
|
38 end
|
madcatzinc@4
|
39
|
madcatzinc@4
|
40 self.GetCallback = function(callbackName)
|
madcatzinc@4
|
41 local callback = nil
|
madcatzinc@4
|
42 if("Map" == callbackName) then
|
madcatzinc@4
|
43 callback = self.ToggleMap;
|
madcatzinc@4
|
44 elseif("CharacterPage" == callbackName) then
|
madcatzinc@4
|
45 callback = self.ToggleCharacterPage;
|
madcatzinc@4
|
46 elseif("Spellbook" == callbackName) then
|
madcatzinc@4
|
47 callback = self.ToggleSpellbook;
|
madcatzinc@4
|
48 elseif("Macros" == callbackName) then
|
madcatzinc@4
|
49 callback = self.ToggleMacros;
|
madcatzinc@4
|
50 elseif("QuestLog" == callbackName) then
|
madcatzinc@4
|
51 callback = self.ToggleQuests;
|
madcatzinc@4
|
52 elseif("Achievement" == callbackName) then
|
madcatzinc@4
|
53 callback = self.ToggleAchievements;
|
madcatzinc@4
|
54 elseif("Inventory" == callbackName) then
|
madcatzinc@4
|
55 callback = self.ToggleBags;
|
madcatzinc@4
|
56 end;
|
madcatzinc@4
|
57 return callback;
|
madcatzinc@4
|
58 end
|
madcatzinc@0
|
59
|
madcatzinc@4
|
60
|
madcatzinc@4
|
61 self.ToggleMap = function()
|
madcatzinc@4
|
62 ToggleFrame(WorldMapFrame)
|
madcatzinc@4
|
63 end
|
madcatzinc@4
|
64
|
madcatzinc@4
|
65 self.ToggleCharacterPage = function()
|
madcatzinc@4
|
66 ToggleCharacter("PaperDollFrame")
|
madcatzinc@4
|
67 end
|
madcatzinc@4
|
68
|
madcatzinc@4
|
69 self.ToggleSpellbook = function()
|
madcatzinc@4
|
70 ToggleFrame(SpellBookFrame)
|
madcatzinc@4
|
71 if(SpellBookFrame:IsShown()) then
|
madcatzinc@4
|
72 SpellbookMicroButton:SetButtonState("PUSHED", 1);
|
madcatzinc@4
|
73 else
|
madcatzinc@4
|
74 SpellbookMicroButton:SetButtonState("NORMAL");
|
madcatzinc@4
|
75 end
|
madcatzinc@4
|
76 end
|
madcatzinc@4
|
77
|
madcatzinc@4
|
78 self.ToggleMacros = function()
|
madcatzinc@4
|
79 if(MacroFrame:IsShown() and MacroFrame:IsVisible()) then
|
madcatzinc@4
|
80 HideUIPanel(MacroFrame);
|
madcatzinc@4
|
81 else
|
madcatzinc@4
|
82 ShowMacroFrame();
|
madcatzinc@4
|
83 end
|
madcatzinc@4
|
84 end
|
madcatzinc@4
|
85
|
madcatzinc@4
|
86 self.ToggleQuests = function()
|
madcatzinc@4
|
87 ToggleFrame(QuestLogFrame);
|
madcatzinc@4
|
88 if ( QuestLogFrame:IsShown() ) then
|
madcatzinc@4
|
89 QuestLogMicroButton:SetButtonState("PUSHED", 1);
|
madcatzinc@4
|
90 else
|
madcatzinc@4
|
91 QuestLogMicroButton:SetButtonState("NORMAL");
|
madcatzinc@4
|
92 end
|
madcatzinc@4
|
93 end
|
madcatzinc@4
|
94
|
madcatzinc@4
|
95 self.ToggleAchievements = function()
|
madcatzinc@4
|
96 ToggleAchievementFrame();
|
madcatzinc@4
|
97 if ( AchievementFrame and AchievementFrame:IsShown() ) then
|
madcatzinc@4
|
98 AchievementMicroButton:SetButtonState("PUSHED", 1);
|
madcatzinc@4
|
99 else
|
madcatzinc@4
|
100 if ( ( HasCompletedAnyAchievement() or IsInGuild() ) and CanShowAchievementUI() ) then
|
madcatzinc@4
|
101 AchievementMicroButton:Enable();
|
madcatzinc@4
|
102 AchievementMicroButton:SetButtonState("NORMAL");
|
madcatzinc@4
|
103 else
|
madcatzinc@4
|
104 AchievementMicroButton:Disable();
|
madcatzinc@4
|
105 end
|
madcatzinc@4
|
106 end
|
madcatzinc@4
|
107 end
|
madcatzinc@4
|
108
|
madcatzinc@4
|
109 self.ToggleBags = function()
|
madcatzinc@4
|
110 ToggleAllBags();
|
madcatzinc@4
|
111 end
|
madcatzinc@0
|
112 return self;
|
madcatzinc@0
|
113 end,
|
madcatzinc@0
|
114
|
madcatzinc@0
|
115 m_Instance = nil,
|
madcatzinc@0
|
116
|
madcatzinc@0
|
117 Instance = function()
|
madcatzinc@4
|
118 if(nil == CyborgMMO_CallbackFactory.m_Instance) then
|
madcatzinc@4
|
119 CyborgMMO_CallbackFactory.m_Instance = CyborgMMO_CallbackFactory.new();
|
madcatzinc@0
|
120 end
|
madcatzinc@4
|
121 return CyborgMMO_CallbackFactory.m_Instance;
|
madcatzinc@0
|
122 end
|
madcatzinc@0
|
123
|
madcatzinc@4
|
124
|
madcatzinc@0
|
125 }
|
madcatzinc@0
|
126
|
madcatzinc@0
|
127
|