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@36
|
21 local RAT7 = {
|
madcatzinc@36
|
22 BUTTONS = 13,
|
madcatzinc@36
|
23 MODES = 3,
|
madcatzinc@36
|
24 SHIFT = 0,
|
madcatzinc@36
|
25 }
|
madcatzinc@36
|
26
|
madcatzinc@4
|
27 function CyborgMMO_LoadStrings(self)
|
madcatzinc@15
|
28 -- CyborgMMO_DPrint("LoadStrings("..self:GetName()..") = "..CyborgMMO_StringTable[self:GetName()])
|
madcatzinc@13
|
29 self:SetText(CyborgMMO_StringTable[self:GetName()])
|
madcatzinc@0
|
30 end
|
madcatzinc@0
|
31
|
madcatzinc@20
|
32 local VarsLoaded = false
|
madcatzinc@40
|
33 local AsyncDataLoaded = false
|
madcatzinc@20
|
34 local EnteredWorld = false
|
madcatzinc@20
|
35 local BindingsLoaded = false
|
madcatzinc@21
|
36 local SettingsLoaded = false
|
madcatzinc@20
|
37 local SaveName = GetRealmName().."_"..UnitName("player")
|
madcatzinc@21
|
38 local Settings = nil
|
madcatzinc@0
|
39
|
madcatzinc@0
|
40
|
madcatzinc@4
|
41 function CyborgMMO_MiniMapButtonReposition(pos)
|
madcatzinc@4
|
42 CyborgMMO_MiniMapFrame:SetPoint("TOPLEFT",
|
madcatzinc@0
|
43 "Minimap",
|
madcatzinc@0
|
44 "TOPLEFT",
|
madcatzinc@13
|
45 52 - (80 * cos(pos)),
|
madcatzinc@13
|
46 (80 * sin(pos)) - 52)
|
madcatzinc@0
|
47 end
|
madcatzinc@0
|
48
|
madcatzinc@0
|
49
|
madcatzinc@4
|
50 function CyborgMMO_MiniMapButtonOnUpdate()
|
madcatzinc@0
|
51
|
madcatzinc@0
|
52 local xpos,ypos = GetCursorPosition()
|
madcatzinc@0
|
53 local xmin,ymin = Minimap:GetLeft(), Minimap:GetBottom()
|
madcatzinc@0
|
54
|
madcatzinc@0
|
55 xpos = (xmin)-(xpos / UIParent:GetScale())
|
madcatzinc@0
|
56 ypos = (ypos/ UIParent:GetScale())-(ymin)
|
madcatzinc@0
|
57
|
madcatzinc@13
|
58 local degrees = math.deg(math.atan2(ypos, xpos))
|
madcatzinc@0
|
59
|
madcatzinc@13
|
60 while degrees < 0 do
|
madcatzinc@13
|
61 degrees = degrees + 360
|
madcatzinc@0
|
62 end
|
madcatzinc@0
|
63
|
madcatzinc@4
|
64 CyborgMMO_MiniMapButtonReposition(degrees)
|
madcatzinc@0
|
65 end
|
madcatzinc@0
|
66
|
madcatzinc@4
|
67 function CyborgMMO_MouseModeChange(mode)
|
madcatzinc@4
|
68 local MiniMapTexture = getglobal("CyborgMMO_MiniMapFrameButton_Icon")
|
madcatzinc@4
|
69 local MiniMapGlowTexture = getglobal("CyborgMMO_MiniMapFrameButton_IconGlow")
|
madcatzinc@13
|
70 local OpenButtonTexture = getglobal("CyborgMMO_OpenButtonPage".."OpenMainForm"):GetNormalTexture()
|
madcatzinc@13
|
71 local OpenButtonGlowTexture = getglobal("CyborgMMO_OpenButtonPage".."OpenMainForm"):GetHighlightTexture()
|
madcatzinc@13
|
72 if mode == 1 then
|
madcatzinc@0
|
73 MiniMapTexture:SetVertexColor(1,0,0,1)
|
madcatzinc@31
|
74 MiniMapGlowTexture:SetVertexColor(1,0.26,0.26,.75)
|
madcatzinc@13
|
75 OpenButtonTexture:SetVertexColor(1,0,0,0.75)
|
madcatzinc@31
|
76 OpenButtonGlowTexture:SetVertexColor(1,0.26,0.26,0.50)
|
madcatzinc@13
|
77 elseif mode == 2 then
|
madcatzinc@0
|
78 MiniMapTexture:SetVertexColor(0.07,0.22,1,1)
|
madcatzinc@13
|
79 MiniMapGlowTexture:SetVertexColor(0.13,0.56,1,.75)
|
madcatzinc@13
|
80 OpenButtonTexture:SetVertexColor(0.07,0.22,1,0.75)
|
madcatzinc@13
|
81 OpenButtonGlowTexture:SetVertexColor(0.13,0.56,1,0.5)
|
madcatzinc@13
|
82 elseif mode == 3 then
|
madcatzinc@0
|
83 MiniMapTexture:SetVertexColor(0.52,0.08,0.89,1)
|
madcatzinc@13
|
84 MiniMapGlowTexture:SetVertexColor(0.67,0.31,0.85,.75)
|
madcatzinc@13
|
85 OpenButtonTexture:SetVertexColor(0.52,0.08,0.89,0.75)
|
madcatzinc@13
|
86 OpenButtonGlowTexture:SetVertexColor(0.67,0.31,0.85,0.5)
|
madcatzinc@0
|
87 end
|
madcatzinc@0
|
88 end
|
madcatzinc@0
|
89
|
madcatzinc@4
|
90 function CyborgMMO_GetSaveData()
|
madcatzinc@32
|
91 assert(VarsLoaded)
|
madcatzinc@32
|
92 if not CyborgMMO7SaveData then
|
madcatzinc@32
|
93 CyborgMMO7SaveData = {}
|
madcatzinc@0
|
94 end
|
madcatzinc@34
|
95 return CyborgMMO7SaveData
|
madcatzinc@0
|
96 end
|
madcatzinc@0
|
97
|
madcatzinc@34
|
98 function CyborgMMO_SetRatSaveData(data)
|
madcatzinc@32
|
99 assert(VarsLoaded)
|
madcatzinc@34
|
100 local saveData = {}
|
madcatzinc@36
|
101 for mode=1,RAT7.MODES do
|
madcatzinc@34
|
102 saveData[mode] = {}
|
madcatzinc@36
|
103 for button=1,RAT7.BUTTONS do
|
madcatzinc@34
|
104 if data[mode][button] then
|
madcatzinc@34
|
105 saveData[mode][button] = data[mode][button]:SaveData()
|
madcatzinc@34
|
106 end
|
madcatzinc@34
|
107 end
|
madcatzinc@34
|
108 end
|
madcatzinc@34
|
109 CyborgMMO_GetSaveData().Rat = saveData
|
madcatzinc@0
|
110 end
|
madcatzinc@0
|
111
|
madcatzinc@35
|
112 local function GetSpellID(name)
|
madcatzinc@35
|
113 local link = GetSpellLink(name)
|
madcatzinc@35
|
114 if link then
|
madcatzinc@35
|
115 local id = link:match('spell:(%d+)|')
|
madcatzinc@35
|
116 if id then
|
madcatzinc@35
|
117 return tonumber(id)
|
madcatzinc@35
|
118 end
|
madcatzinc@35
|
119 end
|
madcatzinc@35
|
120 end
|
madcatzinc@35
|
121
|
madcatzinc@40
|
122 local KnownOldObjectTypes = {
|
madcatzinc@40
|
123 item = true,
|
madcatzinc@40
|
124 macro = true,
|
madcatzinc@40
|
125 spell = true,
|
madcatzinc@40
|
126 petaction = true,
|
madcatzinc@40
|
127 merchant = true,
|
madcatzinc@40
|
128 companion = true,
|
madcatzinc@40
|
129 equipmentset = true,
|
madcatzinc@40
|
130 callback = true,
|
madcatzinc@40
|
131 }
|
madcatzinc@40
|
132
|
madcatzinc@35
|
133 local function ConvertOldRatData(oldData)
|
madcatzinc@35
|
134 local newData = {}
|
madcatzinc@35
|
135 for mode,modeData in ipairs(oldData) do
|
madcatzinc@35
|
136 newData[mode] = {}
|
madcatzinc@35
|
137 for button,buttonData in ipairs(modeData) do
|
madcatzinc@35
|
138 CyborgMMO_DPrint("converting mode:", mode, "button:", button)
|
madcatzinc@35
|
139 local type = buttonData.Type
|
madcatzinc@35
|
140 if type=='item' then
|
madcatzinc@35
|
141 -- not possible, the WowObject 'Type' field was overwritten by the item type
|
madcatzinc@35
|
142 elseif type=='macro' then
|
madcatzinc@35
|
143 local name = buttonData.Name
|
madcatzinc@35
|
144 newData[mode][button] = {
|
madcatzinc@35
|
145 type = type,
|
madcatzinc@35
|
146 detail = name,
|
madcatzinc@35
|
147 }
|
madcatzinc@35
|
148 elseif type=='spell' then
|
madcatzinc@35
|
149 local id = GetSpellID(buttonData.Name)
|
madcatzinc@35
|
150 CyborgMMO_DPrint("converting spell:", buttonData.Name, id)
|
madcatzinc@35
|
151 if id then
|
madcatzinc@35
|
152 newData[mode][button] = {
|
madcatzinc@35
|
153 type = type,
|
madcatzinc@35
|
154 detail = id,
|
madcatzinc@35
|
155 }
|
madcatzinc@35
|
156 end
|
madcatzinc@35
|
157 elseif type=='petaction' then
|
madcatzinc@35
|
158 -- no longer supported
|
madcatzinc@35
|
159 elseif type=='merchant' then
|
madcatzinc@35
|
160 -- no longer supported
|
madcatzinc@35
|
161 elseif type=='companion' then
|
madcatzinc@35
|
162 local id = GetSpellID(buttonData.Name)
|
madcatzinc@35
|
163 CyborgMMO_DPrint("converting companion:", buttonData.Name, id)
|
madcatzinc@35
|
164 if id then
|
madcatzinc@35
|
165 newData[mode][button] = {
|
madcatzinc@35
|
166 type = type,
|
madcatzinc@35
|
167 detail = buttonData.Subdetail,
|
madcatzinc@35
|
168 subdetail = id,
|
madcatzinc@35
|
169 }
|
madcatzinc@35
|
170 end
|
madcatzinc@35
|
171 elseif type=='equipmentset' then
|
madcatzinc@35
|
172 CyborgMMO_DPrint("converting equipment set:", buttonData.Detail)
|
madcatzinc@35
|
173 newData[mode][button] = {
|
madcatzinc@35
|
174 type = type,
|
madcatzinc@35
|
175 detail = buttonData.Detail,
|
madcatzinc@35
|
176 }
|
madcatzinc@35
|
177 elseif type=='callback' then
|
madcatzinc@35
|
178 CyborgMMO_DPrint("converting callback:", buttonData.Detail)
|
madcatzinc@35
|
179 newData[mode][button] = {
|
madcatzinc@35
|
180 type = type,
|
madcatzinc@35
|
181 detail = buttonData.Detail,
|
madcatzinc@35
|
182 }
|
madcatzinc@40
|
183 elseif not KnownOldObjectTypes[type] then
|
madcatzinc@35
|
184 -- maybe it's an item type
|
madcatzinc@35
|
185 local id = buttonData.Detail
|
madcatzinc@35
|
186 local class = select(6, GetItemInfo(id)) -- :NOTE: this may fail if the item is not yet in the cache
|
madcatzinc@35
|
187 if class == type then
|
madcatzinc@35
|
188 CyborgMMO_DPrint("converting item:", id, type, class)
|
madcatzinc@35
|
189 newData[mode][button] = {
|
madcatzinc@35
|
190 type = "item",
|
madcatzinc@35
|
191 detail = id,
|
madcatzinc@35
|
192 }
|
madcatzinc@35
|
193 end
|
madcatzinc@35
|
194 else
|
madcatzinc@35
|
195 CyborgMMO_DPrint("cannot convert:", type)
|
madcatzinc@35
|
196 end
|
madcatzinc@35
|
197 end
|
madcatzinc@35
|
198 end
|
madcatzinc@35
|
199 return newData
|
madcatzinc@35
|
200 end
|
madcatzinc@35
|
201
|
madcatzinc@40
|
202 ------------------------------------------------------------------------------
|
madcatzinc@40
|
203
|
madcatzinc@40
|
204 local PreloadFrame
|
madcatzinc@40
|
205 local step_timeout = 1
|
madcatzinc@40
|
206 local total_timeout = 15
|
madcatzinc@40
|
207
|
madcatzinc@40
|
208 local function PreloadFrameUpdate(self, dt)
|
madcatzinc@40
|
209 self.step_timeout = self.step_timeout - dt
|
madcatzinc@40
|
210 self.total_timeout = self.total_timeout - dt
|
madcatzinc@40
|
211 if self.step_timeout < 0 then
|
madcatzinc@40
|
212 local items,pets = 0,0
|
madcatzinc@40
|
213 -- check items
|
madcatzinc@40
|
214 for itemID in pairs(self.itemIDs) do
|
madcatzinc@40
|
215 if GetItemInfo(itemID) then
|
madcatzinc@40
|
216 self.itemIDs[itemID] = nil
|
madcatzinc@40
|
217 else
|
madcatzinc@40
|
218 items = items + 1
|
madcatzinc@40
|
219 end
|
madcatzinc@40
|
220 end
|
madcatzinc@40
|
221 -- check pets
|
madcatzinc@40
|
222 for petID in pairs(self.petIDs) do
|
madcatzinc@40
|
223 if C_PetJournal.GetPetInfoByPetID(petID) then
|
madcatzinc@40
|
224 self.petIDs[petID] = nil
|
madcatzinc@40
|
225 else
|
madcatzinc@40
|
226 pets = pets + 1
|
madcatzinc@40
|
227 end
|
madcatzinc@40
|
228 end
|
madcatzinc@40
|
229 CyborgMMO_DPrint("PreloadFrameUpdate step", self.total_timeout, "items:", items, "pets:", pets)
|
madcatzinc@40
|
230 if self.total_timeout < 0 or next(self.itemIDs)==nil and next(self.petIDs)==nil then
|
madcatzinc@40
|
231 -- when done destroy the frame and throw an event for further loading
|
madcatzinc@40
|
232 self:Hide()
|
madcatzinc@40
|
233 self:SetParent(nil)
|
madcatzinc@40
|
234 PreloadFrame = nil
|
madcatzinc@40
|
235 CyborgMMO_Event(nil, "CYBORGMMO_ASYNC_DATA_LOADED")
|
madcatzinc@40
|
236 else
|
madcatzinc@40
|
237 self.step_timeout = step_timeout
|
madcatzinc@40
|
238 end
|
madcatzinc@40
|
239 end
|
madcatzinc@40
|
240 end
|
madcatzinc@40
|
241
|
madcatzinc@40
|
242 function PreLoad(data)
|
madcatzinc@40
|
243 -- create ID sets to sync
|
madcatzinc@40
|
244 local itemIDs = {}
|
madcatzinc@40
|
245 local petIDs = {}
|
madcatzinc@40
|
246
|
madcatzinc@40
|
247 -- gather all needed IDs (and trigger sync while doing so)
|
madcatzinc@40
|
248 if data.Rat then
|
madcatzinc@40
|
249 for mode=1,RAT7.MODES do
|
madcatzinc@40
|
250 for button=1,RAT7.BUTTONS do
|
madcatzinc@40
|
251 local data = data.Rat[mode][button]
|
madcatzinc@40
|
252 if data then
|
madcatzinc@40
|
253 if data.type=='item' then
|
madcatzinc@40
|
254 local itemID = data.detail
|
madcatzinc@40
|
255 if not GetItemInfo(itemID) then
|
madcatzinc@40
|
256 itemIDs[itemID] = true
|
madcatzinc@40
|
257 end
|
madcatzinc@40
|
258 elseif data.type=='battlepet' then
|
madcatzinc@40
|
259 local petID = data.detail
|
madcatzinc@40
|
260 if not C_PetJournal.GetPetInfoByPetID(petID) then
|
madcatzinc@40
|
261 petIDs[petID] = true
|
madcatzinc@40
|
262 end
|
madcatzinc@40
|
263 end
|
madcatzinc@40
|
264 end
|
madcatzinc@40
|
265 end
|
madcatzinc@40
|
266 end
|
madcatzinc@40
|
267 end
|
madcatzinc@40
|
268 -- gather IDs from old unconverted data (in case we need to convert it)
|
madcatzinc@40
|
269 if data[SaveName] and data[SaveName].Rat then
|
madcatzinc@40
|
270 for mode=1,RAT7.MODES do
|
madcatzinc@40
|
271 for button=1,RAT7.BUTTONS do
|
madcatzinc@40
|
272 local data = data[SaveName].Rat[mode][button]
|
madcatzinc@40
|
273 if data then
|
madcatzinc@40
|
274 -- items actually had their class overwrite the Type field
|
madcatzinc@40
|
275 if not KnownOldObjectTypes[data.Type] and type(data.Detail)=='number' then
|
madcatzinc@40
|
276 local itemID = data.Detail
|
madcatzinc@40
|
277 if not GetItemInfo(itemID) then
|
madcatzinc@40
|
278 itemIDs[itemID] = true
|
madcatzinc@40
|
279 end
|
madcatzinc@40
|
280 end
|
madcatzinc@40
|
281 end
|
madcatzinc@40
|
282 end
|
madcatzinc@40
|
283 end
|
madcatzinc@40
|
284 end
|
madcatzinc@40
|
285
|
madcatzinc@40
|
286 -- create frame for regular updates
|
madcatzinc@40
|
287 PreloadFrame = CreateFrame("Frame")
|
madcatzinc@40
|
288 PreloadFrame.itemIDs = itemIDs
|
madcatzinc@40
|
289 PreloadFrame.petIDs = petIDs
|
madcatzinc@40
|
290 PreloadFrame.total_timeout = total_timeout
|
madcatzinc@40
|
291 PreloadFrame.step_timeout = step_timeout
|
madcatzinc@40
|
292 PreloadFrame:SetScript("OnUpdate", PreloadFrameUpdate)
|
madcatzinc@40
|
293 PreloadFrame:Show()
|
madcatzinc@40
|
294 end
|
madcatzinc@40
|
295
|
madcatzinc@40
|
296 ------------------------------------------------------------------------------
|
madcatzinc@40
|
297
|
madcatzinc@4
|
298 function CyborgMMO_Event(self, event, ...)
|
madcatzinc@13
|
299 if event == "VARIABLES_LOADED" then
|
madcatzinc@20
|
300 VarsLoaded = true
|
madcatzinc@37
|
301 -- create root table if necessary
|
madcatzinc@37
|
302 if not CyborgMMO7SaveData then
|
madcatzinc@37
|
303 CyborgMMO7SaveData = {}
|
madcatzinc@37
|
304 end
|
madcatzinc@40
|
305 PreLoad(CyborgMMO7SaveData)
|
madcatzinc@40
|
306 elseif event == "CYBORGMMO_ASYNC_DATA_LOADED" then
|
madcatzinc@40
|
307 AsyncDataLoaded = true
|
madcatzinc@35
|
308 -- convert old profile
|
madcatzinc@35
|
309 if CyborgMMO7SaveData[SaveName] and not CyborgMMO7SaveData.Settings then
|
madcatzinc@35
|
310 local oldData = CyborgMMO7SaveData[SaveName]
|
madcatzinc@35
|
311 CyborgMMO7SaveData = {}
|
madcatzinc@35
|
312 CyborgMMO7SaveData.Settings = oldData.Settings
|
madcatzinc@35
|
313 CyborgMMO7SaveData.Rat = ConvertOldRatData(oldData.Rat)
|
madcatzinc@35
|
314 CyborgMMO7SaveData[SaveName] = oldData -- for now keep the data, we may have missed something in the conversion
|
madcatzinc@35
|
315 end
|
madcatzinc@13
|
316 elseif event == "PLAYER_ENTERING_WORLD" then
|
madcatzinc@20
|
317 EnteredWorld = true
|
madcatzinc@19
|
318 elseif event == "PLAYER_REGEN_DISABLED" then
|
madcatzinc@13
|
319 CyborgMMO_Close()
|
madcatzinc@0
|
320 else
|
madcatzinc@15
|
321 CyborgMMO_DPrint("Event is "..tostring(event))
|
madcatzinc@13
|
322 end
|
madcatzinc@0
|
323
|
madcatzinc@0
|
324 -- Fire Loading if and only if the player is in the world and vars are loaded
|
madcatzinc@40
|
325 if not BindingsLoaded and VarsLoaded and AsyncDataLoaded and EnteredWorld then
|
madcatzinc@20
|
326 local data = CyborgMMO_GetSaveData()
|
madcatzinc@0
|
327
|
madcatzinc@20
|
328 CyborgMMO_RatPageModel:LoadData()
|
madcatzinc@20
|
329 BindingsLoaded = true
|
madcatzinc@0
|
330
|
madcatzinc@20
|
331 CyborgMMO_SetupModeCallbacks(1)
|
madcatzinc@20
|
332 CyborgMMO_SetupModeCallbacks(2)
|
madcatzinc@20
|
333 CyborgMMO_SetupModeCallbacks(3)
|
madcatzinc@0
|
334
|
madcatzinc@21
|
335 Settings = data.Settings
|
madcatzinc@21
|
336 if not Settings then
|
madcatzinc@21
|
337 Settings = {}
|
madcatzinc@21
|
338 Settings.Cyborg = 0.75
|
madcatzinc@21
|
339 Settings.Plugin = 0.75
|
madcatzinc@21
|
340 Settings.MiniMapButton = true
|
madcatzinc@21
|
341 Settings.CyborgButton = true
|
madcatzinc@21
|
342 data.Settings = Settings
|
madcatzinc@21
|
343 end
|
madcatzinc@21
|
344 SettingsLoaded = true
|
madcatzinc@0
|
345
|
madcatzinc@21
|
346 -- Reload Slider values:
|
madcatzinc@21
|
347 CyborgMMO_SetOpenButtonSize(Settings.Cyborg)
|
madcatzinc@21
|
348 CyborgMMO_SetMainPageSize(Settings.Plugin)
|
madcatzinc@0
|
349
|
madcatzinc@21
|
350 CyborgMMO_SetMiniMapButton(Settings.MiniMapButton)
|
madcatzinc@21
|
351 CyborgMMO_SetCyborgHeadButton(Settings.CyborgButton)
|
madcatzinc@0
|
352
|
madcatzinc@20
|
353 local xmin,ymin = Minimap:GetLeft(),Minimap:GetBottom()
|
madcatzinc@20
|
354 CyborgMMO_MiniMapButtonReposition(math.deg(math.atan2(ymin, xmin)))
|
madcatzinc@0
|
355 end
|
madcatzinc@0
|
356 end
|
madcatzinc@0
|
357
|
madcatzinc@4
|
358 function CyborgMMO_SetDefaultSettings()
|
madcatzinc@13
|
359 CyborgMMO_OpenButtonPageOpenMainForm:ClearAllPoints()
|
madcatzinc@13
|
360 CyborgMMO_MainPage:ClearAllPoints()
|
madcatzinc@13
|
361 CyborgMMO_OpenButtonPageOpenMainForm:SetPoint("LEFT", UIParent, "LEFT", 0, 0)
|
madcatzinc@13
|
362 CyborgMMO_MainPage:SetPoint("LEFT", UIParent, "LEFT", 0, 0)
|
madcatzinc@0
|
363
|
madcatzinc@13
|
364 CyborgMMO_SetOpenButtonSize(0.75)
|
madcatzinc@13
|
365 CyborgMMO_SetMainPageSize(0.75)
|
madcatzinc@13
|
366 CyborgMMO_SetMiniMapButton(true)
|
madcatzinc@13
|
367 CyborgMMO_SetCyborgHeadButton(true)
|
madcatzinc@0
|
368 end
|
madcatzinc@0
|
369
|
madcatzinc@0
|
370
|
madcatzinc@4
|
371 function CyborgMMO_SetupModeCallbacks(modeNum)
|
madcatzinc@23
|
372 local fn = function()
|
madcatzinc@13
|
373 CyborgMMO_MouseModeChange(modeNum)
|
madcatzinc@18
|
374 CyborgMMO_RatPageModel:SetMode(modeNum)
|
madcatzinc@0
|
375 end
|
madcatzinc@0
|
376
|
madcatzinc@23
|
377 local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(fn)
|
madcatzinc@16
|
378 SetOverrideBindingClick(parentFrame, true, CyborgMMO_Mode[modeNum], name, "LeftButton")
|
madcatzinc@0
|
379 end
|
madcatzinc@0
|
380
|
madcatzinc@4
|
381 function CyborgMMO_Loaded()
|
madcatzinc@13
|
382 CyborgMMO_MainPage:RegisterEvent("VARIABLES_LOADED")
|
madcatzinc@13
|
383 CyborgMMO_MainPage:RegisterEvent("PLAYER_ENTERING_WORLD")
|
madcatzinc@19
|
384 CyborgMMO_MainPage:RegisterEvent("PLAYER_REGEN_DISABLED")
|
madcatzinc@0
|
385 end
|
madcatzinc@0
|
386
|
madcatzinc@4
|
387 function CyborgMMO_Close()
|
madcatzinc@13
|
388 CyborgMMO_MainPage:Hide()
|
madcatzinc@0
|
389 end
|
madcatzinc@0
|
390
|
madcatzinc@4
|
391 function CyborgMMO_Open()
|
madcatzinc@13
|
392 CyborgMMO_MainPage:Show()
|
madcatzinc@13
|
393 CyborgMMO_RatQuickPage:Hide()
|
madcatzinc@0
|
394 end
|
madcatzinc@0
|
395
|
madcatzinc@4
|
396 function CyborgMMO_IsOpen()
|
madcatzinc@13
|
397 if CyborgMMO_MainPage:IsVisible() == 1 then
|
madcatzinc@13
|
398 return true
|
madcatzinc@0
|
399 else
|
madcatzinc@13
|
400 return false
|
madcatzinc@0
|
401 end
|
madcatzinc@0
|
402 end
|
madcatzinc@0
|
403
|
madcatzinc@4
|
404 function CyborgMMO_Toggle()
|
madcatzinc@13
|
405 if CyborgMMO_IsOpen() then
|
madcatzinc@13
|
406 CyborgMMO_Close()
|
madcatzinc@0
|
407 else
|
madcatzinc@13
|
408 CyborgMMO_Open()
|
madcatzinc@0
|
409 end
|
madcatzinc@0
|
410 end
|
madcatzinc@0
|
411
|
madcatzinc@15
|
412 function CyborgMMO_GetDebugFrame()
|
madcatzinc@15
|
413 for i=1,NUM_CHAT_WINDOWS do
|
madcatzinc@15
|
414 local windowName = GetChatWindowInfo(i);
|
madcatzinc@15
|
415 if windowName == "Debug" then
|
madcatzinc@15
|
416 return getglobal("ChatFrame" .. i)
|
madcatzinc@15
|
417 end
|
madcatzinc@15
|
418 end
|
madcatzinc@15
|
419 end
|
madcatzinc@15
|
420
|
madcatzinc@15
|
421 local log_prefix = "|cffff6666".."CyborgMMO".."|r:"
|
madcatzinc@15
|
422
|
madcatzinc@15
|
423 function CyborgMMO_DPrint(...)
|
madcatzinc@15
|
424 local debugframe = CyborgMMO_GetDebugFrame()
|
madcatzinc@15
|
425 if debugframe then
|
madcatzinc@15
|
426 local t = {log_prefix, ...}
|
madcatzinc@15
|
427 for i=1,select('#', ...)+1 do
|
madcatzinc@15
|
428 t[i] = tostring(t[i])
|
madcatzinc@15
|
429 end
|
madcatzinc@15
|
430 debugframe:AddMessage(table.concat(t, ' '))
|
madcatzinc@15
|
431 end
|
madcatzinc@0
|
432 end
|
madcatzinc@0
|
433
|
madcatzinc@4
|
434 function CyborgMMO_SetMainPageSize(percent)
|
madcatzinc@21
|
435 CyborgMMO_MainPage:SetScale(percent)
|
madcatzinc@21
|
436 CyborgMMO_OptionPagePluginSizeSlider:SetValue(percent)
|
madcatzinc@21
|
437 if BindingsLoaded then
|
madcatzinc@21
|
438 Settings.Plugin = percent
|
madcatzinc@0
|
439 end
|
madcatzinc@0
|
440 end
|
madcatzinc@0
|
441
|
madcatzinc@4
|
442 function CyborgMMO_SetOpenButtonSize(percent)
|
madcatzinc@21
|
443 CyborgMMO_OpenButtonPage:SetScale(percent)
|
madcatzinc@21
|
444 CyborgMMO_OptionPageCyborgSizeSlider:SetValue(percent)
|
madcatzinc@21
|
445 if SettingsLoaded then
|
madcatzinc@21
|
446 Settings.Cyborg = percent
|
madcatzinc@0
|
447 end
|
madcatzinc@0
|
448 end
|
madcatzinc@0
|
449
|
madcatzinc@21
|
450 function CyborgMMO_SetCyborgHeadButton(visible)
|
madcatzinc@21
|
451 if visible then
|
madcatzinc@21
|
452 CyborgMMO_OpenButtonPage:Show()
|
madcatzinc@0
|
453 else
|
madcatzinc@13
|
454 CyborgMMO_OpenButtonPage:Hide()
|
madcatzinc@0
|
455 end
|
madcatzinc@21
|
456 CyborgMMO_OptionPageCyborgButton:SetChecked(visible)
|
madcatzinc@21
|
457 if SettingsLoaded then
|
madcatzinc@21
|
458 Settings.CyborgButton = visible
|
madcatzinc@21
|
459 end
|
madcatzinc@0
|
460 end
|
madcatzinc@0
|
461
|
madcatzinc@21
|
462 function CyborgMMO_SetMiniMapButton(visible)
|
madcatzinc@21
|
463 if visible then
|
madcatzinc@4
|
464 CyborgMMO_MiniMapFrameButton:Show()
|
madcatzinc@0
|
465 else
|
madcatzinc@4
|
466 CyborgMMO_MiniMapFrameButton:Hide()
|
madcatzinc@0
|
467 end
|
madcatzinc@21
|
468 CyborgMMO_OptionPageMiniMapButton:SetChecked(visible)
|
madcatzinc@21
|
469 if SettingsLoaded then
|
madcatzinc@21
|
470 Settings.MiniMapButton = visible
|
madcatzinc@21
|
471 end
|
madcatzinc@0
|
472 end
|
madcatzinc@0
|
473
|