annotate CyborgMMO7.lua @ 51:fb81254bd7b8

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