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