madcatzinc@13
|
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@13
|
24 self.Frame = CreateFrame("Frame", "CallbackFactoryFrame", UIParent)
|
madcatzinc@0
|
25 self.Callbacks = {}
|
madcatzinc@13
|
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@13
|
31 self.Callbacks[name]:SetScript("OnClick", fn)
|
madcatzinc@13
|
32 self.Id = self.Id + 1
|
madcatzinc@13
|
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@13
|
39
|
madcatzinc@4
|
40 self.GetCallback = function(callbackName)
|
madcatzinc@4
|
41 local callback = nil
|
madcatzinc@13
|
42 if callbackName == "Map" then
|
madcatzinc@13
|
43 callback = self.ToggleMap
|
madcatzinc@13
|
44 elseif callbackName == "CharacterPage" then
|
madcatzinc@13
|
45 callback = self.ToggleCharacterPage
|
madcatzinc@13
|
46 elseif callbackName == "Spellbook" then
|
madcatzinc@13
|
47 callback = self.ToggleSpellbook
|
madcatzinc@13
|
48 elseif callbackName == "Macros" then
|
madcatzinc@13
|
49 callback = self.ToggleMacros
|
madcatzinc@13
|
50 elseif callbackName == "QuestLog" then
|
madcatzinc@13
|
51 callback = self.ToggleQuests
|
madcatzinc@13
|
52 elseif callbackName == "Achievement" then
|
madcatzinc@13
|
53 callback = self.ToggleAchievements
|
madcatzinc@13
|
54 elseif callbackName == "Inventory" then
|
madcatzinc@13
|
55 callback = self.ToggleBags
|
madcatzinc@13
|
56 end
|
madcatzinc@13
|
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@13
|
71 if SpellBookFrame:IsShown() then
|
madcatzinc@13
|
72 SpellbookMicroButton:SetButtonState("PUSHED", 1)
|
madcatzinc@4
|
73 else
|
madcatzinc@13
|
74 SpellbookMicroButton:SetButtonState("NORMAL")
|
madcatzinc@4
|
75 end
|
madcatzinc@4
|
76 end
|
madcatzinc@4
|
77
|
madcatzinc@4
|
78 self.ToggleMacros = function()
|
madcatzinc@13
|
79 if MacroFrame:IsShown() and MacroFrame:IsVisible() then
|
madcatzinc@13
|
80 HideUIPanel(MacroFrame)
|
madcatzinc@4
|
81 else
|
madcatzinc@13
|
82 ShowMacroFrame()
|
madcatzinc@4
|
83 end
|
madcatzinc@4
|
84 end
|
madcatzinc@4
|
85
|
madcatzinc@4
|
86 self.ToggleQuests = function()
|
madcatzinc@13
|
87 ToggleFrame(QuestLogFrame)
|
madcatzinc@13
|
88 if QuestLogFrame:IsShown() then
|
madcatzinc@13
|
89 QuestLogMicroButton:SetButtonState("PUSHED", 1)
|
madcatzinc@4
|
90 else
|
madcatzinc@13
|
91 QuestLogMicroButton:SetButtonState("NORMAL")
|
madcatzinc@4
|
92 end
|
madcatzinc@4
|
93 end
|
madcatzinc@4
|
94
|
madcatzinc@4
|
95 self.ToggleAchievements = function()
|
madcatzinc@13
|
96 ToggleAchievementFrame()
|
madcatzinc@13
|
97 if AchievementFrame and AchievementFrame:IsShown() then
|
madcatzinc@13
|
98 AchievementMicroButton:SetButtonState("PUSHED", 1)
|
madcatzinc@4
|
99 else
|
madcatzinc@13
|
100 if (HasCompletedAnyAchievement() or IsInGuild()) and CanShowAchievementUI() then
|
madcatzinc@13
|
101 AchievementMicroButton:Enable()
|
madcatzinc@13
|
102 AchievementMicroButton:SetButtonState("NORMAL")
|
madcatzinc@4
|
103 else
|
madcatzinc@13
|
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@13
|
110 ToggleAllBags()
|
madcatzinc@4
|
111 end
|
madcatzinc@13
|
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@13
|
118 if not CyborgMMO_CallbackFactory.m_Instance then
|
madcatzinc@13
|
119 CyborgMMO_CallbackFactory.m_Instance = CyborgMMO_CallbackFactory.new()
|
madcatzinc@0
|
120 end
|
madcatzinc@13
|
121 return CyborgMMO_CallbackFactory.m_Instance
|
madcatzinc@13
|
122 end,
|
madcatzinc@0
|
123 }
|
madcatzinc@0
|
124
|
madcatzinc@0
|
125
|