annotate WowObjects.lua @ 33:1c0af1810e06

Removed the "petaction" and "merchant" objects. They are not (no longer?) supported by regular action bars, and so shouldn't be necessary on button bindings.
author madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09
date Thu, 25 Apr 2013 01:31:26 +0000
parents b7074b47cfc7
children 6ce173840e68
rev   line source
madcatzinc@13 1 --~ Warcraft Plugin for Cyborg MMO7
madcatzinc@0 2 --~ Filename: WowObjects.lua
madcatzinc@0 3 --~ Description: Warcraft in game object models
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@25 21 ------------------------------------------------------------------------------
madcatzinc@0 22
madcatzinc@25 23 local WowObject_methods = {}
madcatzinc@25 24 local WowObject_mt = {__index=WowObject_methods}
madcatzinc@25 25
madcatzinc@25 26 local function WowObject(type, detail, subdetail)
madcatzinc@25 27 local self = {}
madcatzinc@25 28
madcatzinc@25 29 self.Texture = nil
madcatzinc@25 30 self.Name = "NoName"
madcatzinc@25 31 self.Type = type
madcatzinc@25 32 self.Detail = detail
madcatzinc@25 33 self.Subdetail = subdetail
madcatzinc@25 34
madcatzinc@25 35 setmetatable(self, WowObject_mt)
madcatzinc@25 36
madcatzinc@25 37 return self
madcatzinc@25 38 end
madcatzinc@25 39
madcatzinc@25 40 function WowObject_methods:DoAction()
madcatzinc@25 41 CyborgMMO_DPrint("Nothing To Do")
madcatzinc@25 42 end
madcatzinc@25 43
madcatzinc@25 44 function WowObject_methods:Pickup()
madcatzinc@25 45 CyborgMMO_DPrint("Pick up Item")
madcatzinc@25 46 end
madcatzinc@25 47
madcatzinc@25 48 function WowObject_methods:SetBinding(key)
madcatzinc@25 49 end
madcatzinc@25 50
madcatzinc@25 51 function WowObject_methods:PlaySound()
madcatzinc@25 52 PlaySound("igAbilityIconDrop")
madcatzinc@25 53 end
madcatzinc@25 54
madcatzinc@25 55 ------------------------------------------------------------------------------
madcatzinc@25 56
madcatzinc@25 57 local WowCallback_methods = setmetatable({}, {__index=WowObject_methods})
madcatzinc@25 58 local WowCallback_mt = {__index=WowCallback_methods}
madcatzinc@25 59
madcatzinc@25 60 local function WowCallback(callbackName)
madcatzinc@25 61 local self = WowObject("callback", callbackName, "")
madcatzinc@25 62
madcatzinc@25 63 self.CallbackName = callbackName
madcatzinc@25 64 self.Texture = "Interface\\AddOns\\CyborgMMO7\\Graphics\\"..self.CallbackName.."Unselected.tga"
madcatzinc@25 65
madcatzinc@25 66 setmetatable(self, WowCallback_mt)
madcatzinc@25 67
madcatzinc@25 68 return self
madcatzinc@25 69 end
madcatzinc@25 70
madcatzinc@25 71 function WowCallback_methods:SetTextures(buttonFrame)
madcatzinc@25 72 CyborgMMO_DPrint("TextureName = "..self.CallbackName)
madcatzinc@25 73 buttonFrame:SetNormalTexture("Interface\\AddOns\\CyborgMMO7\\Graphics\\"..self.CallbackName.."Unselected.tga")
madcatzinc@25 74 buttonFrame:SetPushedTexture("Interface\\AddOns\\CyborgMMO7\\Graphics\\"..self.CallbackName.."Down.tga")
madcatzinc@25 75 buttonFrame:SetHighlightTexture("Interface\\AddOns\\CyborgMMO7\\Graphics\\"..self.CallbackName.."Over.tga")
madcatzinc@25 76 end
madcatzinc@25 77
madcatzinc@25 78 function WowCallback_methods:DoAction()
madcatzinc@25 79 local action = CyborgMMO_CallbackFactory:GetCallback(self.CallbackName)
madcatzinc@25 80 CyborgMMO_DPrint("calling callback:- "..self.CallbackName)
madcatzinc@25 81 action()
madcatzinc@25 82 end
madcatzinc@25 83
madcatzinc@25 84 function WowCallback_methods:PickupCallback()
madcatzinc@25 85 local slot = nil
madcatzinc@25 86 local observers = CyborgMMO_RatPageModel:GetAllObservers()
madcatzinc@25 87 for i=1,#observers do
madcatzinc@25 88 if MouseIsOver(observers[i]) then
madcatzinc@25 89 slot = observers[i]
madcatzinc@25 90 break
madcatzinc@0 91 end
madcatzinc@25 92 end
madcatzinc@25 93 slot:SetNormalTexture(slot.UnCheckedTexture)
madcatzinc@25 94 end
madcatzinc@0 95
madcatzinc@25 96 function WowCallback_methods:Pickup()
madcatzinc@25 97 self:PlaySound()
madcatzinc@25 98 ClearCursor()
madcatzinc@25 99 self:PickupCallback()
madcatzinc@25 100 end
madcatzinc@0 101
madcatzinc@25 102 function WowCallback_methods:SetBinding(key)
madcatzinc@25 103 local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(function(...) return self:DoAction(...) end)
madcatzinc@25 104 SetOverrideBindingClick(CyborgMMO_CallbackFactory.Frame, true, key, name, "LeftButton")
madcatzinc@25 105 end
madcatzinc@0 106
madcatzinc@25 107 ------------------------------------------------------------------------------
madcatzinc@0 108
madcatzinc@25 109 local WowItem_methods = setmetatable({}, {__index=WowObject_methods})
madcatzinc@25 110 local WowItem_mt = {__index=WowItem_methods}
madcatzinc@0 111
madcatzinc@25 112 local function WowItem(number, itemID)
madcatzinc@25 113 local self = WowObject("item", number, itemID)
madcatzinc@0 114
madcatzinc@25 115 self.Name,
madcatzinc@25 116 self.Link,
madcatzinc@25 117 self.Rarity,
madcatzinc@25 118 self.Level,
madcatzinc@25 119 self.MinLevel,
madcatzinc@25 120 self.Type,
madcatzinc@25 121 self.SubType,
madcatzinc@25 122 self.StackCount,
madcatzinc@25 123 self.EquipLoc,
madcatzinc@25 124 self.Texture,
madcatzinc@25 125 self.SellPrice = GetItemInfo(itemID)
madcatzinc@0 126
madcatzinc@25 127 setmetatable(self, WowItem_mt)
madcatzinc@0 128
madcatzinc@25 129 return self
madcatzinc@25 130 end
madcatzinc@0 131
madcatzinc@25 132 function WowItem_methods:DoAction()
madcatzinc@25 133 CyborgMMO_DPrint("Use Item")
madcatzinc@25 134 end
madcatzinc@25 135
madcatzinc@25 136 function WowItem_methods:Pickup()
madcatzinc@25 137 self:PlaySound()
madcatzinc@25 138 ClearCursor()
madcatzinc@25 139 -- SetCursor(self.Texture)
madcatzinc@25 140 return PickupItem(self.Link)
madcatzinc@25 141 end
madcatzinc@25 142
madcatzinc@25 143 function WowItem_methods:SetBinding(key)
madcatzinc@25 144 SetOverrideBinding(CyborgMMO_CallbackFactory.Frame, true, key, "ITEM "..self.Name)
madcatzinc@25 145 end
madcatzinc@25 146
madcatzinc@25 147 ------------------------------------------------------------------------------
madcatzinc@25 148
madcatzinc@25 149 local WowSpell_methods = setmetatable({}, {__index=WowObject_methods})
madcatzinc@25 150 local WowSpell_mt = {__index=WowSpell_methods}
madcatzinc@25 151
madcatzinc@33 152 local function WowSpell(spellbookID, spellbook)
madcatzinc@33 153 local self = WowObject("spell", spellbookID, spellbook)
madcatzinc@25 154
madcatzinc@25 155 self.SpellbookID = spellbookID
madcatzinc@25 156 self.Spellbook = spellbook
madcatzinc@25 157 self.Name,self.Rank = GetSpellBookItemName(spellbookID, spellbook)
madcatzinc@25 158 self.Texture = GetSpellBookItemTexture(spellbookID, spellbook)
madcatzinc@25 159
madcatzinc@25 160 setmetatable(self, WowSpell_mt)
madcatzinc@25 161
madcatzinc@25 162 return self
madcatzinc@25 163 end
madcatzinc@25 164
madcatzinc@25 165 function WowSpell_methods:DoAction()
madcatzinc@25 166 CyborgMMO_DPrint("Cast Spell")
madcatzinc@25 167 end
madcatzinc@25 168
madcatzinc@25 169 function WowSpell_methods:Pickup()
madcatzinc@25 170 self:PlaySound()
madcatzinc@25 171 ClearCursor()
madcatzinc@25 172 -- SetCursor(self.Texture)
madcatzinc@25 173 return PickupSpellBookItem(self.SpellbookID, self.Spellbook)
madcatzinc@25 174 end
madcatzinc@25 175
madcatzinc@25 176 function WowSpell_methods:SetBinding(key)
madcatzinc@25 177 CyborgMMO_DPrint("Binding to key "..key)
madcatzinc@25 178 self.Key = key
madcatzinc@25 179 SetOverrideBinding(CyborgMMO_CallbackFactory.Frame, true, self.Key, self.Type.." "..self.Name)
madcatzinc@25 180 end
madcatzinc@25 181
madcatzinc@25 182 ------------------------------------------------------------------------------
madcatzinc@25 183
madcatzinc@25 184 local WowMacro_methods = setmetatable({}, {__index=WowObject_methods})
madcatzinc@25 185 local WowMacro_mt = {__index=WowMacro_methods}
madcatzinc@25 186
madcatzinc@25 187 local function WowMacro(index)
madcatzinc@25 188 local self = WowObject("macro", index, nil)
madcatzinc@25 189
madcatzinc@25 190 self.Name,
madcatzinc@25 191 self.Texture,
madcatzinc@25 192 self.Body,
madcatzinc@25 193 self.isLocal = GetMacroInfo(index)
madcatzinc@25 194 self.Index = index
madcatzinc@25 195
madcatzinc@25 196 setmetatable(self, WowMacro_mt)
madcatzinc@25 197
madcatzinc@25 198 return self
madcatzinc@25 199 end
madcatzinc@25 200
madcatzinc@25 201 function WowMacro_methods:DoAction()
madcatzinc@25 202 CyborgMMO_DPrint("Use Item")
madcatzinc@25 203 end
madcatzinc@25 204
madcatzinc@25 205 function WowMacro_methods:Pickup()
madcatzinc@25 206 self:PlaySound()
madcatzinc@25 207 ClearCursor()
madcatzinc@25 208 -- SetCursor(self.Texture)
madcatzinc@25 209 return PickupMacro(self.Index)
madcatzinc@25 210 end
madcatzinc@25 211
madcatzinc@25 212 function WowMacro_methods:SetBinding(key)
madcatzinc@25 213 self.Key = key
madcatzinc@25 214 SetOverrideBinding(CyborgMMO_CallbackFactory.Frame, true, key, "MACRO "..self.Index)
madcatzinc@25 215 end
madcatzinc@25 216
madcatzinc@25 217 ------------------------------------------------------------------------------
madcatzinc@25 218
madcatzinc@25 219 local WowCompanion_methods = setmetatable({}, {__index=WowObject_methods})
madcatzinc@25 220 local WowCompanion_mt = {__index=WowCompanion_methods}
madcatzinc@25 221
madcatzinc@25 222 local function WowCompanion(index, SubType)
madcatzinc@25 223 local self = WowObject("companion", index, SubType)
madcatzinc@25 224
madcatzinc@25 225 self.Id,
madcatzinc@25 226 self.Name,
madcatzinc@25 227 self.SpellId,
madcatzinc@25 228 self.Texture,
madcatzinc@25 229 self.isSummoned = GetCompanionInfo(SubType, index)
madcatzinc@25 230 self.SubType = SubType
madcatzinc@25 231 self.index = index
madcatzinc@25 232
madcatzinc@25 233 setmetatable(self, WowCompanion_mt)
madcatzinc@25 234
madcatzinc@25 235 return self
madcatzinc@25 236 end
madcatzinc@25 237
madcatzinc@25 238 function WowCompanion_methods:DoAction()
madcatzinc@25 239 if self.SubType == "MOUNT" and IsMounted() then
madcatzinc@25 240 Dismount()
madcatzinc@25 241 else
madcatzinc@25 242 CallCompanion(self.SubType, self.index)
madcatzinc@25 243 end
madcatzinc@25 244 end
madcatzinc@25 245
madcatzinc@25 246 function WowCompanion_methods:Pickup()
madcatzinc@25 247 self:PlaySound()
madcatzinc@25 248 return PickupCompanion(self.SubType, self.index)
madcatzinc@25 249 end
madcatzinc@25 250
madcatzinc@25 251 function WowCompanion_methods:SetBinding(key)
madcatzinc@25 252 self.Key = key
madcatzinc@25 253 local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(function() self:DoAction() end)
madcatzinc@25 254 SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton")
madcatzinc@25 255 -- SetOverrideBinding(hiddenModeChanger, true, key, "MACRO "..self.Index)
madcatzinc@25 256 end
madcatzinc@25 257
madcatzinc@25 258 ------------------------------------------------------------------------------
madcatzinc@25 259
madcatzinc@25 260 local WowEquipmentSet_methods = setmetatable({}, {__index=WowObject_methods})
madcatzinc@25 261 local WowEquipmentSet_mt = {__index=WowEquipmentSet_methods}
madcatzinc@25 262
madcatzinc@25 263 local function WowEquipmentSet(objectType, name, index)
madcatzinc@25 264 local self = WowObject(objectType, name, index)
madcatzinc@25 265
madcatzinc@25 266 local texture,lessIndex = GetEquipmentSetInfoByName(name)
madcatzinc@25 267 self.Texture = "Interface\\Icons\\"..texture
madcatzinc@25 268 self.Name = name
madcatzinc@25 269 self.Index = lessIndex + 1
madcatzinc@25 270
madcatzinc@25 271 setmetatable(self, WowEquipmentSet_mt)
madcatzinc@25 272
madcatzinc@25 273 return self
madcatzinc@25 274 end
madcatzinc@25 275
madcatzinc@25 276 function WowEquipmentSet_methods:DoAction()
madcatzinc@25 277 UseEquipmentSet(self.Name)
madcatzinc@25 278 end
madcatzinc@25 279
madcatzinc@25 280 function WowEquipmentSet_methods:Pickup()
madcatzinc@25 281 self:PlaySound()
madcatzinc@25 282 ClearCursor()
madcatzinc@25 283 -- SetCursor(self.Texture)
madcatzinc@25 284 return PickupEquipmentSetByName(self.Name)
madcatzinc@25 285 end
madcatzinc@25 286
madcatzinc@25 287 function WowEquipmentSet_methods:SetBinding(key)
madcatzinc@25 288 self.Key = key
madcatzinc@25 289 local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(function() self:DoAction() end);
madcatzinc@25 290 SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton")
madcatzinc@25 291 end
madcatzinc@25 292
madcatzinc@25 293 ------------------------------------------------------------------------------
madcatzinc@25 294
madcatzinc@25 295 -- this class is used by pre-defined icons in the corner of the Rat page
madcatzinc@4 296 CyborgMMO_CallbackIcons = {
madcatzinc@0 297 new = function(self)
madcatzinc@13 298 self.point,
madcatzinc@13 299 self.relativeTo,
madcatzinc@13 300 self.relativePoint,
madcatzinc@13 301 self.xOfs,
madcatzinc@13 302 self.yOfs = self:GetPoint()
madcatzinc@13 303 -- self:SetPoint(self.point, self.relativeTo, self.relativePoint, self.xOfs, self.yOfs)
madcatzinc@13 304 self.strata = self:GetFrameStrata()
madcatzinc@25 305 self.wowObject = WowCallback(string.gsub(self:GetName(), self:GetParent():GetName(), "",1))
madcatzinc@25 306 self.wowObject:SetTextures(self)
madcatzinc@0 307 self:RegisterForDrag("LeftButton","RightButton")
madcatzinc@13 308 self:SetResizable(false)
madcatzinc@13 309
madcatzinc@0 310 self.OnClick = function()
madcatzinc@25 311 self.wowObject:DoAction()
madcatzinc@0 312 end
madcatzinc@13 313
madcatzinc@0 314 self.DragStart = function()
madcatzinc@13 315 self:SetMovable(true)
madcatzinc@13 316 self:StartMoving()
madcatzinc@13 317 self.isMoving = true
madcatzinc@0 318 self:SetFrameStrata("TOOLTIP")
madcatzinc@0 319 end
madcatzinc@13 320
madcatzinc@0 321 self.DragStop = function()
madcatzinc@13 322 self:SetFrameStrata(self.strata)
madcatzinc@13 323 self.isMoving = false
madcatzinc@13 324 self:SetMovable(false)
madcatzinc@13 325 self:StopMovingOrSizing()
madcatzinc@0 326
madcatzinc@13 327 self:ClearAllPoints()
madcatzinc@13 328 self:SetPoint(self.point, self.relativeTo, self.relativePoint, self.xOfs, self.yOfs)
madcatzinc@13 329 local x,y = GetCursorPosition()
madcatzinc@18 330 CyborgMMO_RatPageController:CallbackDropped(self)
madcatzinc@0 331 end
madcatzinc@13 332
madcatzinc@13 333 return self
madcatzinc@13 334 end,
madcatzinc@0 335 }
madcatzinc@0 336
madcatzinc@25 337 ------------------------------------------------------------------------------
madcatzinc@13 338
madcatzinc@25 339 function CyborgMMO_CreateWowObject(type, ...)
madcatzinc@25 340 local object
madcatzinc@13 341
madcatzinc@25 342 if type == "item" then
madcatzinc@25 343 object = WowItem(...)
madcatzinc@25 344 elseif type == "macro" then
madcatzinc@25 345 object = WowMacro(...)
madcatzinc@25 346 elseif type == "spell" then
madcatzinc@33 347 object = WowSpell(...)
madcatzinc@25 348 elseif type == "companion" then
madcatzinc@25 349 object = WowCompanion(...)
madcatzinc@25 350 elseif type == "equipmentset" then
madcatzinc@25 351 object = WowEquipmentSet(type, ...)
madcatzinc@25 352 elseif type == "callback" then
madcatzinc@25 353 object = WowCallback(...)
madcatzinc@25 354 else
madcatzinc@25 355 object = WowObject(type, ...)
madcatzinc@25 356 end
madcatzinc@13 357
madcatzinc@25 358 return object
madcatzinc@25 359 end
madcatzinc@0 360
madcatzinc@25 361 function CyborgMMO_ClearBinding(key)
madcatzinc@25 362 SetOverrideBinding(CyborgMMO_CallbackFactory.Frame, true, key, nil)
madcatzinc@25 363 end
madcatzinc@13 364