madcatzinc@13
|
1 --~ Warcraft Plugin for Cyborg MMO7
|
madcatzinc@0
|
2 --~ Filename: CyborgMMO7.lua
|
madcatzinc@0
|
3 --~ Description: Plugin entry point, String tables and other generic crap that I could not think to put anywhere else.
|
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 function CyborgMMO_LoadStrings(self)
|
madcatzinc@15
|
22 -- CyborgMMO_DPrint("LoadStrings("..self:GetName()..") = "..CyborgMMO_StringTable[self:GetName()])
|
madcatzinc@13
|
23 self:SetText(CyborgMMO_StringTable[self:GetName()])
|
madcatzinc@0
|
24 end
|
madcatzinc@0
|
25
|
madcatzinc@20
|
26 local VarsLoaded = false
|
madcatzinc@20
|
27 local EnteredWorld = false
|
madcatzinc@20
|
28 local BindingsLoaded = false
|
madcatzinc@21
|
29 local SettingsLoaded = false
|
madcatzinc@20
|
30 local SaveName = GetRealmName().."_"..UnitName("player")
|
madcatzinc@21
|
31 local Settings = nil
|
madcatzinc@0
|
32
|
madcatzinc@0
|
33
|
madcatzinc@4
|
34 function CyborgMMO_MiniMapButtonReposition(pos)
|
madcatzinc@4
|
35 CyborgMMO_MiniMapFrame:SetPoint("TOPLEFT",
|
madcatzinc@0
|
36 "Minimap",
|
madcatzinc@0
|
37 "TOPLEFT",
|
madcatzinc@13
|
38 52 - (80 * cos(pos)),
|
madcatzinc@13
|
39 (80 * sin(pos)) - 52)
|
madcatzinc@0
|
40 end
|
madcatzinc@0
|
41
|
madcatzinc@0
|
42
|
madcatzinc@4
|
43 function CyborgMMO_MiniMapButtonOnUpdate()
|
madcatzinc@0
|
44
|
madcatzinc@0
|
45 local xpos,ypos = GetCursorPosition()
|
madcatzinc@0
|
46 local xmin,ymin = Minimap:GetLeft(), Minimap:GetBottom()
|
madcatzinc@0
|
47
|
madcatzinc@0
|
48 xpos = (xmin)-(xpos / UIParent:GetScale())
|
madcatzinc@0
|
49 ypos = (ypos/ UIParent:GetScale())-(ymin)
|
madcatzinc@0
|
50
|
madcatzinc@13
|
51 local degrees = math.deg(math.atan2(ypos, xpos))
|
madcatzinc@0
|
52
|
madcatzinc@13
|
53 while degrees < 0 do
|
madcatzinc@13
|
54 degrees = degrees + 360
|
madcatzinc@0
|
55 end
|
madcatzinc@0
|
56
|
madcatzinc@4
|
57 CyborgMMO_MiniMapButtonReposition(degrees)
|
madcatzinc@0
|
58 end
|
madcatzinc@0
|
59
|
madcatzinc@4
|
60 function CyborgMMO_MouseModeChange(mode)
|
madcatzinc@4
|
61 local MiniMapTexture = getglobal("CyborgMMO_MiniMapFrameButton_Icon")
|
madcatzinc@4
|
62 local MiniMapGlowTexture = getglobal("CyborgMMO_MiniMapFrameButton_IconGlow")
|
madcatzinc@13
|
63 local OpenButtonTexture = getglobal("CyborgMMO_OpenButtonPage".."OpenMainForm"):GetNormalTexture()
|
madcatzinc@13
|
64 local OpenButtonGlowTexture = getglobal("CyborgMMO_OpenButtonPage".."OpenMainForm"):GetHighlightTexture()
|
madcatzinc@13
|
65 if mode == 1 then
|
madcatzinc@0
|
66 MiniMapTexture:SetVertexColor(1,0,0,1)
|
madcatzinc@31
|
67 MiniMapGlowTexture:SetVertexColor(1,0.26,0.26,.75)
|
madcatzinc@13
|
68 OpenButtonTexture:SetVertexColor(1,0,0,0.75)
|
madcatzinc@31
|
69 OpenButtonGlowTexture:SetVertexColor(1,0.26,0.26,0.50)
|
madcatzinc@13
|
70 elseif mode == 2 then
|
madcatzinc@0
|
71 MiniMapTexture:SetVertexColor(0.07,0.22,1,1)
|
madcatzinc@13
|
72 MiniMapGlowTexture:SetVertexColor(0.13,0.56,1,.75)
|
madcatzinc@13
|
73 OpenButtonTexture:SetVertexColor(0.07,0.22,1,0.75)
|
madcatzinc@13
|
74 OpenButtonGlowTexture:SetVertexColor(0.13,0.56,1,0.5)
|
madcatzinc@13
|
75 elseif mode == 3 then
|
madcatzinc@0
|
76 MiniMapTexture:SetVertexColor(0.52,0.08,0.89,1)
|
madcatzinc@13
|
77 MiniMapGlowTexture:SetVertexColor(0.67,0.31,0.85,.75)
|
madcatzinc@13
|
78 OpenButtonTexture:SetVertexColor(0.52,0.08,0.89,0.75)
|
madcatzinc@13
|
79 OpenButtonGlowTexture:SetVertexColor(0.67,0.31,0.85,0.5)
|
madcatzinc@0
|
80 end
|
madcatzinc@0
|
81 end
|
madcatzinc@0
|
82
|
madcatzinc@4
|
83 function CyborgMMO_GetSaveData()
|
madcatzinc@32
|
84 assert(VarsLoaded)
|
madcatzinc@32
|
85 if not CyborgMMO7SaveData then
|
madcatzinc@32
|
86 CyborgMMO7SaveData = {}
|
madcatzinc@0
|
87 end
|
madcatzinc@34
|
88 return CyborgMMO7SaveData
|
madcatzinc@0
|
89 end
|
madcatzinc@0
|
90
|
madcatzinc@34
|
91 function CyborgMMO_SetRatSaveData(data)
|
madcatzinc@32
|
92 assert(VarsLoaded)
|
madcatzinc@34
|
93 local saveData = {}
|
madcatzinc@34
|
94 for mode=1,#data do
|
madcatzinc@34
|
95 saveData[mode] = {}
|
madcatzinc@34
|
96 for button=1,#data[mode] do
|
madcatzinc@34
|
97 if data[mode][button] then
|
madcatzinc@34
|
98 saveData[mode][button] = data[mode][button]:SaveData()
|
madcatzinc@34
|
99 end
|
madcatzinc@34
|
100 end
|
madcatzinc@34
|
101 end
|
madcatzinc@34
|
102 CyborgMMO_GetSaveData().Rat = saveData
|
madcatzinc@0
|
103 end
|
madcatzinc@0
|
104
|
madcatzinc@4
|
105 function CyborgMMO_Event(self, event, ...)
|
madcatzinc@13
|
106 if event == "VARIABLES_LOADED" then
|
madcatzinc@20
|
107 VarsLoaded = true
|
madcatzinc@13
|
108 elseif event == "PLAYER_ENTERING_WORLD" then
|
madcatzinc@20
|
109 EnteredWorld = true
|
madcatzinc@19
|
110 elseif event == "PLAYER_REGEN_DISABLED" then
|
madcatzinc@13
|
111 CyborgMMO_Close()
|
madcatzinc@0
|
112 else
|
madcatzinc@15
|
113 CyborgMMO_DPrint("Event is "..tostring(event))
|
madcatzinc@13
|
114 end
|
madcatzinc@0
|
115
|
madcatzinc@0
|
116 -- Fire Loading if and only if the player is in the world and vars are loaded
|
madcatzinc@20
|
117 if not BindingsLoaded and VarsLoaded and EnteredWorld then
|
madcatzinc@20
|
118 local data = CyborgMMO_GetSaveData()
|
madcatzinc@0
|
119
|
madcatzinc@20
|
120 CyborgMMO_RatPageModel:LoadData()
|
madcatzinc@20
|
121 BindingsLoaded = true
|
madcatzinc@0
|
122
|
madcatzinc@20
|
123 CyborgMMO_SetupModeCallbacks(1)
|
madcatzinc@20
|
124 CyborgMMO_SetupModeCallbacks(2)
|
madcatzinc@20
|
125 CyborgMMO_SetupModeCallbacks(3)
|
madcatzinc@0
|
126
|
madcatzinc@21
|
127 Settings = data.Settings
|
madcatzinc@21
|
128 if not Settings then
|
madcatzinc@21
|
129 Settings = {}
|
madcatzinc@21
|
130 Settings.Cyborg = 0.75
|
madcatzinc@21
|
131 Settings.Plugin = 0.75
|
madcatzinc@21
|
132 Settings.MiniMapButton = true
|
madcatzinc@21
|
133 Settings.CyborgButton = true
|
madcatzinc@21
|
134 data.Settings = Settings
|
madcatzinc@21
|
135 end
|
madcatzinc@21
|
136 SettingsLoaded = true
|
madcatzinc@0
|
137
|
madcatzinc@21
|
138 -- Reload Slider values:
|
madcatzinc@21
|
139 CyborgMMO_SetOpenButtonSize(Settings.Cyborg)
|
madcatzinc@21
|
140 CyborgMMO_SetMainPageSize(Settings.Plugin)
|
madcatzinc@0
|
141
|
madcatzinc@21
|
142 CyborgMMO_SetMiniMapButton(Settings.MiniMapButton)
|
madcatzinc@21
|
143 CyborgMMO_SetCyborgHeadButton(Settings.CyborgButton)
|
madcatzinc@0
|
144
|
madcatzinc@20
|
145 local xmin,ymin = Minimap:GetLeft(),Minimap:GetBottom()
|
madcatzinc@20
|
146 CyborgMMO_MiniMapButtonReposition(math.deg(math.atan2(ymin, xmin)))
|
madcatzinc@20
|
147 -- Close the main window for now
|
madcatzinc@20
|
148 CyborgMMO_Close()
|
madcatzinc@0
|
149 end
|
madcatzinc@0
|
150 end
|
madcatzinc@0
|
151
|
madcatzinc@4
|
152 function CyborgMMO_SetDefaultSettings()
|
madcatzinc@13
|
153 CyborgMMO_OpenButtonPageOpenMainForm:ClearAllPoints()
|
madcatzinc@13
|
154 CyborgMMO_MainPage:ClearAllPoints()
|
madcatzinc@13
|
155 CyborgMMO_OpenButtonPageOpenMainForm:SetPoint("LEFT", UIParent, "LEFT", 0, 0)
|
madcatzinc@13
|
156 CyborgMMO_MainPage:SetPoint("LEFT", UIParent, "LEFT", 0, 0)
|
madcatzinc@0
|
157
|
madcatzinc@13
|
158 CyborgMMO_SetOpenButtonSize(0.75)
|
madcatzinc@13
|
159 CyborgMMO_SetMainPageSize(0.75)
|
madcatzinc@13
|
160 CyborgMMO_SetMiniMapButton(true)
|
madcatzinc@13
|
161 CyborgMMO_SetCyborgHeadButton(true)
|
madcatzinc@0
|
162 end
|
madcatzinc@0
|
163
|
madcatzinc@0
|
164
|
madcatzinc@4
|
165 function CyborgMMO_SetupModeCallbacks(modeNum)
|
madcatzinc@23
|
166 local fn = function()
|
madcatzinc@13
|
167 CyborgMMO_MouseModeChange(modeNum)
|
madcatzinc@18
|
168 CyborgMMO_RatPageModel:SetMode(modeNum)
|
madcatzinc@0
|
169 end
|
madcatzinc@0
|
170
|
madcatzinc@23
|
171 local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(fn)
|
madcatzinc@16
|
172 SetOverrideBindingClick(parentFrame, true, CyborgMMO_Mode[modeNum], name, "LeftButton")
|
madcatzinc@0
|
173 end
|
madcatzinc@0
|
174
|
madcatzinc@4
|
175 function CyborgMMO_Loaded()
|
madcatzinc@13
|
176 CyborgMMO_MainPage:RegisterEvent("VARIABLES_LOADED")
|
madcatzinc@13
|
177 CyborgMMO_MainPage:RegisterEvent("PLAYER_ENTERING_WORLD")
|
madcatzinc@19
|
178 CyborgMMO_MainPage:RegisterEvent("PLAYER_REGEN_DISABLED")
|
madcatzinc@0
|
179 end
|
madcatzinc@0
|
180
|
madcatzinc@4
|
181 function CyborgMMO_Close()
|
madcatzinc@13
|
182 CyborgMMO_MainPage:Hide()
|
madcatzinc@0
|
183 end
|
madcatzinc@0
|
184
|
madcatzinc@4
|
185 function CyborgMMO_Open()
|
madcatzinc@13
|
186 CyborgMMO_MainPage:Show()
|
madcatzinc@13
|
187 CyborgMMO_RatQuickPage:Hide()
|
madcatzinc@0
|
188 end
|
madcatzinc@0
|
189
|
madcatzinc@4
|
190 function CyborgMMO_IsOpen()
|
madcatzinc@13
|
191 if CyborgMMO_MainPage:IsVisible() == 1 then
|
madcatzinc@13
|
192 return true
|
madcatzinc@0
|
193 else
|
madcatzinc@13
|
194 return false
|
madcatzinc@0
|
195 end
|
madcatzinc@0
|
196 end
|
madcatzinc@0
|
197
|
madcatzinc@4
|
198 function CyborgMMO_Toggle()
|
madcatzinc@13
|
199 if CyborgMMO_IsOpen() then
|
madcatzinc@13
|
200 CyborgMMO_Close()
|
madcatzinc@0
|
201 else
|
madcatzinc@13
|
202 CyborgMMO_Open()
|
madcatzinc@0
|
203 end
|
madcatzinc@0
|
204 end
|
madcatzinc@0
|
205
|
madcatzinc@15
|
206 function CyborgMMO_GetDebugFrame()
|
madcatzinc@15
|
207 for i=1,NUM_CHAT_WINDOWS do
|
madcatzinc@15
|
208 local windowName = GetChatWindowInfo(i);
|
madcatzinc@15
|
209 if windowName == "Debug" then
|
madcatzinc@15
|
210 return getglobal("ChatFrame" .. i)
|
madcatzinc@15
|
211 end
|
madcatzinc@15
|
212 end
|
madcatzinc@15
|
213 end
|
madcatzinc@15
|
214
|
madcatzinc@15
|
215 local log_prefix = "|cffff6666".."CyborgMMO".."|r:"
|
madcatzinc@15
|
216
|
madcatzinc@15
|
217 function CyborgMMO_DPrint(...)
|
madcatzinc@15
|
218 local debugframe = CyborgMMO_GetDebugFrame()
|
madcatzinc@15
|
219 if debugframe then
|
madcatzinc@15
|
220 local t = {log_prefix, ...}
|
madcatzinc@15
|
221 for i=1,select('#', ...)+1 do
|
madcatzinc@15
|
222 t[i] = tostring(t[i])
|
madcatzinc@15
|
223 end
|
madcatzinc@15
|
224 debugframe:AddMessage(table.concat(t, ' '))
|
madcatzinc@15
|
225 end
|
madcatzinc@0
|
226 end
|
madcatzinc@0
|
227
|
madcatzinc@4
|
228 function CyborgMMO_SetMainPageSize(percent)
|
madcatzinc@21
|
229 CyborgMMO_MainPage:SetScale(percent)
|
madcatzinc@21
|
230 CyborgMMO_OptionPagePluginSizeSlider:SetValue(percent)
|
madcatzinc@21
|
231 if BindingsLoaded then
|
madcatzinc@21
|
232 Settings.Plugin = percent
|
madcatzinc@0
|
233 end
|
madcatzinc@0
|
234 end
|
madcatzinc@0
|
235
|
madcatzinc@4
|
236 function CyborgMMO_SetOpenButtonSize(percent)
|
madcatzinc@21
|
237 CyborgMMO_OpenButtonPage:SetScale(percent)
|
madcatzinc@21
|
238 CyborgMMO_OptionPageCyborgSizeSlider:SetValue(percent)
|
madcatzinc@21
|
239 if SettingsLoaded then
|
madcatzinc@21
|
240 Settings.Cyborg = percent
|
madcatzinc@0
|
241 end
|
madcatzinc@0
|
242 end
|
madcatzinc@0
|
243
|
madcatzinc@21
|
244 function CyborgMMO_SetCyborgHeadButton(visible)
|
madcatzinc@21
|
245 if visible then
|
madcatzinc@21
|
246 CyborgMMO_OpenButtonPage:Show()
|
madcatzinc@0
|
247 else
|
madcatzinc@13
|
248 CyborgMMO_OpenButtonPage:Hide()
|
madcatzinc@0
|
249 end
|
madcatzinc@21
|
250 CyborgMMO_OptionPageCyborgButton:SetChecked(visible)
|
madcatzinc@21
|
251 if SettingsLoaded then
|
madcatzinc@21
|
252 Settings.CyborgButton = visible
|
madcatzinc@21
|
253 end
|
madcatzinc@0
|
254 end
|
madcatzinc@0
|
255
|
madcatzinc@21
|
256 function CyborgMMO_SetMiniMapButton(visible)
|
madcatzinc@21
|
257 if visible then
|
madcatzinc@4
|
258 CyborgMMO_MiniMapFrameButton:Show()
|
madcatzinc@0
|
259 else
|
madcatzinc@4
|
260 CyborgMMO_MiniMapFrameButton:Hide()
|
madcatzinc@0
|
261 end
|
madcatzinc@21
|
262 CyborgMMO_OptionPageMiniMapButton:SetChecked(visible)
|
madcatzinc@21
|
263 if SettingsLoaded then
|
madcatzinc@21
|
264 Settings.MiniMapButton = visible
|
madcatzinc@21
|
265 end
|
madcatzinc@0
|
266 end
|
madcatzinc@0
|
267
|