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@0
|
21 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@0
|
39
|
madcatzinc@0
|
40 return self;
|
madcatzinc@0
|
41 end,
|
madcatzinc@0
|
42
|
madcatzinc@0
|
43 m_Instance = nil,
|
madcatzinc@0
|
44
|
madcatzinc@0
|
45 Instance = function()
|
madcatzinc@0
|
46 if(nil == CallbackFactory.m_Instance) then
|
madcatzinc@0
|
47 CallbackFactory.m_Instance = CallbackFactory.new();
|
madcatzinc@0
|
48 end
|
madcatzinc@0
|
49 return CallbackFactory.m_Instance;
|
madcatzinc@0
|
50 end
|
madcatzinc@0
|
51
|
madcatzinc@0
|
52 }
|
madcatzinc@0
|
53
|
madcatzinc@0
|
54
|
madcatzinc@0
|
55 GetCallback = function(callbackName)
|
madcatzinc@0
|
56 local callback = nil
|
madcatzinc@0
|
57 if("Map" == callbackName) then
|
madcatzinc@0
|
58 callback = ToggleMap;
|
madcatzinc@0
|
59 elseif("CharacterPage" == callbackName) then
|
madcatzinc@0
|
60 callback = ToggleCharacterPage;
|
madcatzinc@0
|
61 elseif("Spellbook" == callbackName) then
|
madcatzinc@0
|
62 callback = ToggleSpellbook;
|
madcatzinc@0
|
63 elseif("Macros" == callbackName) then
|
madcatzinc@0
|
64 callback = ToggleMacros;
|
madcatzinc@0
|
65 elseif("QuestLog" == callbackName) then
|
madcatzinc@0
|
66 callback = ToggleQuests;
|
madcatzinc@0
|
67 elseif("Achievement" == callbackName) then
|
madcatzinc@0
|
68 callback = ToggleAchievements;
|
madcatzinc@0
|
69 elseif("Inventory" == callbackName) then
|
madcatzinc@0
|
70 callback = ToggleBags;
|
madcatzinc@0
|
71 end;
|
madcatzinc@0
|
72 return callback;
|
madcatzinc@0
|
73 end
|
madcatzinc@0
|
74
|
madcatzinc@0
|
75
|
madcatzinc@0
|
76 ToggleMap = function()
|
madcatzinc@0
|
77 ToggleFrame(WorldMapFrame)
|
madcatzinc@0
|
78 end
|
madcatzinc@0
|
79
|
madcatzinc@0
|
80 ToggleCharacterPage = function()
|
madcatzinc@0
|
81 ToggleCharacter("PaperDollFrame")
|
madcatzinc@0
|
82 end
|
madcatzinc@0
|
83
|
madcatzinc@0
|
84 ToggleSpellbook = function()
|
madcatzinc@0
|
85 ToggleFrame(SpellBookFrame)
|
madcatzinc@0
|
86 if(SpellBookFrame:IsShown()) then
|
madcatzinc@0
|
87 SpellbookMicroButton:SetButtonState("PUSHED", 1);
|
madcatzinc@0
|
88 else
|
madcatzinc@0
|
89 SpellbookMicroButton:SetButtonState("NORMAL");
|
madcatzinc@0
|
90 end
|
madcatzinc@0
|
91
|
madcatzinc@0
|
92 end
|
madcatzinc@0
|
93
|
madcatzinc@0
|
94 ToggleMacros = function()
|
madcatzinc@0
|
95 if(MacroFrame:IsShown() and MacroFrame:IsVisible()) then
|
madcatzinc@0
|
96 HideUIPanel(MacroFrame);
|
madcatzinc@0
|
97 else
|
madcatzinc@0
|
98 ShowMacroFrame();
|
madcatzinc@0
|
99 end
|
madcatzinc@0
|
100 end
|
madcatzinc@0
|
101
|
madcatzinc@0
|
102 ToggleQuests = function()
|
madcatzinc@0
|
103 ToggleFrame(QuestLogFrame);
|
madcatzinc@0
|
104 if ( QuestLogFrame:IsShown() ) then
|
madcatzinc@0
|
105 QuestLogMicroButton:SetButtonState("PUSHED", 1);
|
madcatzinc@0
|
106 else
|
madcatzinc@0
|
107 QuestLogMicroButton:SetButtonState("NORMAL");
|
madcatzinc@0
|
108 end
|
madcatzinc@0
|
109 end
|
madcatzinc@0
|
110
|
madcatzinc@0
|
111 ToggleAchievements = function()
|
madcatzinc@0
|
112 ToggleAchievementFrame();
|
madcatzinc@0
|
113 if ( AchievementFrame and AchievementFrame:IsShown() ) then
|
madcatzinc@0
|
114 AchievementMicroButton:SetButtonState("PUSHED", 1);
|
madcatzinc@0
|
115 else
|
madcatzinc@0
|
116 if ( ( HasCompletedAnyAchievement() or IsInGuild() ) and CanShowAchievementUI() ) then
|
madcatzinc@0
|
117 AchievementMicroButton:Enable();
|
madcatzinc@0
|
118 AchievementMicroButton:SetButtonState("NORMAL");
|
madcatzinc@0
|
119 else
|
madcatzinc@0
|
120 AchievementMicroButton:Disable();
|
madcatzinc@0
|
121 end
|
madcatzinc@0
|
122 end
|
madcatzinc@0
|
123 end
|
madcatzinc@0
|
124
|
madcatzinc@0
|
125 ToggleBags = function()
|
madcatzinc@0
|
126 ToggleAllBags();
|
madcatzinc@0
|
127 end |