annotate CyborgMMO7.lua @ 61:adba10dfa908

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