annotate WowObjects.lua @ 16:a6f4c8f86130

SetOverrideBindingClick has no return value.
author madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09
date Thu, 25 Apr 2013 01:30:00 +0000
parents 80192bc4a108
children e4dec2d465f5
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@4 21 CyborgMMO_WowObject = {
madcatzinc@0 22 new = function(type, detail, subdetail)
madcatzinc@13 23 local self = {}
madcatzinc@13 24 self.Texture = nil
madcatzinc@13 25 self.Name = "NoName"
madcatzinc@13 26 self.Type = type
madcatzinc@13 27 self.Detail = detail
madcatzinc@13 28 self.Subdetail = subdetail
madcatzinc@0 29
madcatzinc@0 30 -- Methods --
madcatzinc@0 31 self.DoAction = function()
madcatzinc@15 32 CyborgMMO_DPrint("Nothing To Do")
madcatzinc@0 33 end
madcatzinc@0 34
madcatzinc@0 35 self.Pickup = function()
madcatzinc@15 36 CyborgMMO_DPrint("Pick up Item")
madcatzinc@0 37 end
madcatzinc@0 38
madcatzinc@0 39 self.SetBinding = function(key)
madcatzinc@0 40 end
madcatzinc@0 41
madcatzinc@0 42 self.PlaySound = function()
madcatzinc@13 43 PlaySound("igAbilityIconDrop")
madcatzinc@0 44 end
madcatzinc@0 45
madcatzinc@13 46 return self
madcatzinc@0 47 end,
madcatzinc@0 48
madcatzinc@0 49 ClearBinding = function(key)
madcatzinc@13 50 local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(CyborgMMO_WowObject.DoNothing)
madcatzinc@16 51 SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton")
madcatzinc@0 52 end,
madcatzinc@0 53
madcatzinc@0 54 DoNothing = function()
madcatzinc@0 55 end,
madcatzinc@0 56
madcatzinc@0 57 Load = function(object)
madcatzinc@13 58 if type == "item" then
madcatzinc@14 59 object = CyborgMMO_WowItem.Load(object)
madcatzinc@13 60 elseif type == "macro" then
madcatzinc@4 61 object = CyborgMMO_WowMacro.Load(object)
madcatzinc@13 62 elseif type == "spell" then
madcatzinc@4 63 object = CyborgMMO_WowSpell.Load(object)
madcatzinc@13 64 elseif type == "petaction" then
madcatzinc@4 65 object = CyborgMMO_WowSpell.Load(object)
madcatzinc@13 66 -- elseif type == "merchant" then
madcatzinc@13 67 -- object = SlotMerchant.new(detail, subdetail)
madcatzinc@13 68 elseif type == "companion" then
madcatzinc@4 69 object = CyborgMMO_WowCompanion.Load(object)
madcatzinc@13 70 elseif type == "equipmentset" then
madcatzinc@4 71 object = CyborgMMO_WowEquipmentSet.Load(object)
madcatzinc@0 72 else
madcatzinc@14 73 object = CyborgMMO_WowObject.new(type, nil, nil)
madcatzinc@0 74 end
madcatzinc@13 75 return object
madcatzinc@0 76 end,
madcatzinc@0 77
madcatzinc@0 78 -- Static Methods --
madcatzinc@0 79 Create = function(objectType, detail, subdetail)
madcatzinc@13 80 local object
madcatzinc@13 81 if objectType == "item" then
madcatzinc@13 82 object = CyborgMMO_WowItem.new(detail, subdetail)
madcatzinc@13 83 elseif objectType == "macro" then
madcatzinc@4 84 object = CyborgMMO_WowMacro.new(detail)
madcatzinc@13 85 elseif objectType == "spell" then
madcatzinc@13 86 object = CyborgMMO_WowSpell.new(objectType, detail, subdetail)
madcatzinc@13 87 elseif objectType == "petaction" then
madcatzinc@13 88 object = CyborgMMO_WowSpell.new(objectType, detail, subdetail)
madcatzinc@13 89 elseif objectType == "merchant" then
madcatzinc@13 90 object = CyborgMMO_SlotMerchant.new(detail, subdetail)
madcatzinc@13 91 elseif objectType == "companion" then
madcatzinc@13 92 object = CyborgMMO_WowCompanion.new(detail, subdetail)
madcatzinc@13 93 elseif objectType == "equipmentset" then
madcatzinc@13 94 object = CyborgMMO_WowEquipmentSet.new(objectType, detail, subdetail)
madcatzinc@13 95 elseif objectType == "callback" then
madcatzinc@13 96 object = CyborgMMO_WowCallback.new(detail)
madcatzinc@0 97 else
madcatzinc@13 98 object = CyborgMMO_WowObject.new(objectType, detail, subdetail)
madcatzinc@0 99 end
madcatzinc@0 100
madcatzinc@13 101 return object
madcatzinc@13 102 end,
madcatzinc@0 103 }
madcatzinc@0 104
madcatzinc@13 105 local CallbackCursor = nil
madcatzinc@0 106
madcatzinc@4 107 CyborgMMO_CallbackIcons = {
madcatzinc@0 108 new = function(self)
madcatzinc@13 109 self.point,
madcatzinc@13 110 self.relativeTo,
madcatzinc@13 111 self.relativePoint,
madcatzinc@13 112 self.xOfs,
madcatzinc@13 113 self.yOfs = self:GetPoint()
madcatzinc@13 114 -- self:SetPoint(self.point, self.relativeTo, self.relativePoint, self.xOfs, self.yOfs)
madcatzinc@13 115 self.strata = self:GetFrameStrata()
madcatzinc@4 116 self.wowObject = CyborgMMO_WowCallback.new(string.gsub(self:GetName(), self:GetParent():GetName(), "",1))
madcatzinc@13 117 self.wowObject.SetTextures(self)
madcatzinc@0 118 self:RegisterForDrag("LeftButton","RightButton")
madcatzinc@13 119 self:SetResizable(false)
madcatzinc@13 120
madcatzinc@0 121 self.OnClick = function()
madcatzinc@13 122 self.wowObject.DoAction()
madcatzinc@0 123 end
madcatzinc@13 124
madcatzinc@0 125 self.DragStart = function()
madcatzinc@13 126 self:SetMovable(true)
madcatzinc@13 127 self:StartMoving()
madcatzinc@13 128 self.isMoving = true
madcatzinc@0 129 self:SetFrameStrata("TOOLTIP")
madcatzinc@0 130 end
madcatzinc@13 131
madcatzinc@0 132 self.DragStop = function()
madcatzinc@13 133 self:SetFrameStrata(self.strata)
madcatzinc@13 134 self.isMoving = false
madcatzinc@13 135 self:SetMovable(false)
madcatzinc@13 136 self:StopMovingOrSizing()
madcatzinc@0 137
madcatzinc@13 138 self:ClearAllPoints()
madcatzinc@13 139 self:SetPoint(self.point, self.relativeTo, self.relativePoint, self.xOfs, self.yOfs)
madcatzinc@13 140 local x,y = GetCursorPosition()
madcatzinc@4 141 CyborgMMO_RatPageController.Instance().CallbackDropped(self)
madcatzinc@0 142 end
madcatzinc@13 143
madcatzinc@13 144 return self
madcatzinc@13 145 end,
madcatzinc@0 146 }
madcatzinc@0 147
madcatzinc@4 148 CyborgMMO_WowCallback = {
madcatzinc@0 149 new = function(callbackName)
madcatzinc@13 150 local self = CyborgMMO_WowObject.new("callback", callbackName, "")
madcatzinc@13 151 self.CallbackName = callbackName
madcatzinc@0 152 self.Texture = "Interface\\AddOns\\CyborgMMO7\\Graphics\\"..self.CallbackName.."Unselected.tga"
madcatzinc@13 153
madcatzinc@0 154 self.SetTextures = function(buttonFrame)
madcatzinc@15 155 CyborgMMO_DPrint("TextureName = "..self.CallbackName)
madcatzinc@0 156 buttonFrame:SetNormalTexture("Interface\\AddOns\\CyborgMMO7\\Graphics\\"..self.CallbackName.."Unselected.tga")
madcatzinc@0 157 buttonFrame:SetPushedTexture("Interface\\AddOns\\CyborgMMO7\\Graphics\\"..self.CallbackName.."Down.tga")
madcatzinc@0 158 buttonFrame:SetHighlightTexture("Interface\\AddOns\\CyborgMMO7\\Graphics\\"..self.CallbackName.."Over.tga")
madcatzinc@0 159 end
madcatzinc@13 160
madcatzinc@0 161 self.DoAction = function()
madcatzinc@4 162 local action = CyborgMMO_CallbackFactory.Instance().GetCallback(self.CallbackName)
madcatzinc@15 163 CyborgMMO_DPrint("calling callback:- "..self.CallbackName)
madcatzinc@13 164 action()
madcatzinc@0 165 end
madcatzinc@13 166
madcatzinc@0 167 self.PickupCallback = function()
madcatzinc@13 168 local slot = nil
madcatzinc@13 169 local observers = CyborgMMO_RatPageModel.Instance().GetAllObservers()
madcatzinc@13 170 for i=1,#observers do
madcatzinc@13 171 if MouseIsOver(observers[i]) then
madcatzinc@13 172 slot = observers[i]
madcatzinc@13 173 break
madcatzinc@0 174 end
madcatzinc@0 175 end
madcatzinc@0 176 slot:SetNormalTexture(slot.UnCheckedTexture)
madcatzinc@0 177 end
madcatzinc@0 178
madcatzinc@0 179 self.ClickHandler = function(self, button, down)
madcatzinc@15 180 CyborgMMO_DPrint("click handler")
madcatzinc@13 181 CallbackCursor:StopMoving()
madcatzinc@13 182 CallbackCursor:Hide()
madcatzinc@0 183 end
madcatzinc@13 184
madcatzinc@0 185 self.Pickup = function()
madcatzinc@0 186 self.PlaySound()
madcatzinc@13 187 ClearCursor()
madcatzinc@13 188 self.PickupCallback()
madcatzinc@13 189 end
madcatzinc@0 190
madcatzinc@0 191 self.SetBinding = function(key)
madcatzinc@13 192 local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction)
madcatzinc@16 193 SetOverrideBindingClick(CyborgMMO_CallbackFactory.Instance().Frame, true, key, name, "LeftButton")
madcatzinc@0 194 end
madcatzinc@13 195
madcatzinc@13 196 return self
madcatzinc@13 197 end,
madcatzinc@0 198 }
madcatzinc@0 199
madcatzinc@0 200 -- WowItem Class --
madcatzinc@4 201 CyborgMMO_WowItem = {
madcatzinc@0 202 new = function(number, itemID)
madcatzinc@13 203 local self = CyborgMMO_WowObject.new("item", number, itemID) -- base class
madcatzinc@0 204 -- Set all the item info. --
madcatzinc@0 205 self.Name,
madcatzinc@0 206 self.Link,
madcatzinc@0 207 self.Rarity,
madcatzinc@0 208 self.Level,
madcatzinc@0 209 self.MinLevel,
madcatzinc@0 210 self.Type,
madcatzinc@0 211 self.SubType,
madcatzinc@0 212 self.StackCount,
madcatzinc@0 213 self.EquipLoc,
madcatzinc@0 214 self.Texture,
madcatzinc@13 215 self.SellPrice = GetItemInfo(itemID)
madcatzinc@0 216
madcatzinc@0 217 -- override method --
madcatzinc@0 218 self.DoAction = function()
madcatzinc@15 219 CyborgMMO_DPrint("Use Item")
madcatzinc@0 220 end
madcatzinc@0 221
madcatzinc@0 222 -- override method --
madcatzinc@0 223 self.Pickup = function()
madcatzinc@0 224 self.PlaySound()
madcatzinc@13 225 ClearCursor()
madcatzinc@13 226 -- SetCursor(self.Texture)
madcatzinc@13 227 return PickupItem(self.Link)
madcatzinc@0 228 end
madcatzinc@0 229
madcatzinc@0 230 self.SetBinding = function(key)
madcatzinc@13 231 SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "ITEM "..self.Name)
madcatzinc@0 232 end
madcatzinc@0 233
madcatzinc@13 234 return self
madcatzinc@0 235 end,
madcatzinc@0 236 }
madcatzinc@0 237
madcatzinc@0 238 -- WowSpell Class --
madcatzinc@4 239 CyborgMMO_WowSpell = {
madcatzinc@0 240 new = function(type, spellbookID, spellbook)
madcatzinc@4 241 local self = CyborgMMO_WowObject.new(type, spellbookID, spellbook) -- base class
madcatzinc@13 242 self.SpellbookID = spellbookID
madcatzinc@13 243 self.Spellbook = spellbook
madcatzinc@13 244 self.Name,self.Rank = GetSpellBookItemName(spellbookID, spellbook)
madcatzinc@13 245 self.Texture = GetSpellBookItemTexture(spellbookID, spellbook)
madcatzinc@13 246 self.Type = type
madcatzinc@0 247
madcatzinc@0 248
madcatzinc@0 249 -- override method --
madcatzinc@0 250 self.DoAction = function()
madcatzinc@15 251 CyborgMMO_DPrint("Cast Spell")
madcatzinc@0 252 end
madcatzinc@0 253
madcatzinc@0 254 -- override method --
madcatzinc@0 255 self.Pickup = function()
madcatzinc@0 256 self.PlaySound()
madcatzinc@13 257 ClearCursor()
madcatzinc@13 258 -- SetCursor(self.Texture)
madcatzinc@13 259 return PickupSpellBookItem(self.SpellbookID, self.Spellbook)
madcatzinc@0 260 end
madcatzinc@0 261
madcatzinc@0 262 self.SetBinding = function(key)
madcatzinc@15 263 CyborgMMO_DPrint("Binding to key "..key)
madcatzinc@0 264 self.Key = key
madcatzinc@13 265 SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, self.Key, self.Type.." "..self.Name)
madcatzinc@0 266 end
madcatzinc@0 267
madcatzinc@13 268 return self
madcatzinc@0 269 end,
madcatzinc@0 270
madcatzinc@0 271 Load = function(object)
madcatzinc@13 272 local o = WowSpell.new(object.Type, object.Detail, object.Subdetail)
madcatzinc@13 273 o.Name = object.Name
madcatzinc@13 274 o.Texture = object.Texture
madcatzinc@13 275 return o
madcatzinc@13 276 end,
madcatzinc@0 277 }
madcatzinc@0 278
madcatzinc@0 279 -- WowMacro Class --
madcatzinc@4 280 CyborgMMO_WowMacro = {
madcatzinc@0 281 new = function(index)
madcatzinc@13 282 local self = CyborgMMO_WowObject.new("macro", index, nil) -- base class
madcatzinc@0 283 -- Set all the item info. --
madcatzinc@0 284 self.Name,
madcatzinc@0 285 self.Texture,
madcatzinc@0 286 self.Body,
madcatzinc@13 287 self.isLocal = GetMacroInfo(index)
madcatzinc@13 288 self.Index = index
madcatzinc@0 289
madcatzinc@0 290 -- override method --
madcatzinc@0 291 self.DoAction = function()
madcatzinc@15 292 CyborgMMO_DPrint("Use Item")
madcatzinc@0 293 end
madcatzinc@0 294
madcatzinc@0 295 -- override method --
madcatzinc@0 296 self.Pickup = function()
madcatzinc@0 297 self.PlaySound()
madcatzinc@13 298 ClearCursor()
madcatzinc@13 299 -- SetCursor(self.Texture)
madcatzinc@13 300 return PickupMacro(self.Index)
madcatzinc@0 301 end
madcatzinc@0 302
madcatzinc@0 303 self.SetBinding = function(key)
madcatzinc@13 304 self.Key = key
madcatzinc@13 305 SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "MACRO "..self.Index)
madcatzinc@0 306 end
madcatzinc@0 307
madcatzinc@13 308 return self
madcatzinc@13 309 end,
madcatzinc@0 310 }
madcatzinc@0 311
madcatzinc@0 312 -- WowCompanion Class --
madcatzinc@4 313 CyborgMMO_WowCompanion = {
madcatzinc@0 314 new = function(index, SubType)
madcatzinc@13 315 local self = CyborgMMO_WowObject.new("companion", index, SubType) -- base class
madcatzinc@0 316 -- Set all the item info. --
madcatzinc@13 317 self.Id,
madcatzinc@13 318 self.Name,
madcatzinc@13 319 self.SpellId,
madcatzinc@13 320 self.Texture,
madcatzinc@13 321 self.isSummoned = GetCompanionInfo(SubType, index)
madcatzinc@13 322 self.SubType = SubType
madcatzinc@13 323 self.index = index
madcatzinc@0 324 -- override method --
madcatzinc@0 325 self.DoAction = function()
madcatzinc@13 326 if self.SubType == "MOUNT" and IsMounted() then
madcatzinc@13 327 Dismount()
madcatzinc@0 328 else
madcatzinc@13 329 CallCompanion(self.SubType, self.index)
madcatzinc@0 330 end
madcatzinc@0 331 end
madcatzinc@0 332
madcatzinc@0 333 -- override method --
madcatzinc@0 334 self.Pickup = function()
madcatzinc@0 335 self.PlaySound()
madcatzinc@13 336 return PickupCompanion(self.SubType, self.index)
madcatzinc@0 337 end
madcatzinc@0 338
madcatzinc@0 339 self.SetBinding = function(key)
madcatzinc@0 340 self.Key = key
madcatzinc@13 341 local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction)
madcatzinc@16 342 SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton")
madcatzinc@13 343 -- SetOverrideBinding(hiddenModeChanger, true, key, "MACRO "..self.Index)
madcatzinc@0 344 end
madcatzinc@0 345
madcatzinc@13 346 return self
madcatzinc@0 347 end,
madcatzinc@0 348
madcatzinc@0 349 Load = function(object)
madcatzinc@13 350 local o = WowCompanion.new(object.index, object.SubType)
madcatzinc@13 351 return o
madcatzinc@13 352 end,
madcatzinc@0 353 }
madcatzinc@0 354
madcatzinc@0 355 -- WowMerchant Class --
madcatzinc@4 356 CyborgMMO_WowMerchant = {
madcatzinc@0 357 new = function(index)
madcatzinc@13 358 local self = CyborgMMO_WowObject.new("macro", index, nil) -- base class
madcatzinc@0 359 -- Set all the item info. --
madcatzinc@0 360 self.Name,
madcatzinc@0 361 self.Texture,
madcatzinc@0 362 self.Price,
madcatzinc@0 363 self.Quantity,
madcatzinc@0 364 self.NumAvailable,
madcatzinc@0 365 self.IsUsable,
madcatzinc@13 366 self.ExtendedCost = GetMerchantItemInfo(index)
madcatzinc@13 367 self.Index = index
madcatzinc@0 368
madcatzinc@0 369 -- override method --
madcatzinc@0 370 self.DoAction = function()
madcatzinc@15 371 CyborgMMO_DPrint("Use Item")
madcatzinc@0 372 end
madcatzinc@0 373
madcatzinc@0 374 -- override method --
madcatzinc@0 375 self.Pickup = function()
madcatzinc@0 376 self.PlaySound()
madcatzinc@13 377 ClearCursor()
madcatzinc@13 378 -- SetCursor(self.Texture)
madcatzinc@13 379 return PickupMerchantItem(self.Index)
madcatzinc@0 380 end
madcatzinc@0 381
madcatzinc@0 382 self.SetBinding = function(key)
madcatzinc@0 383 self.Key = key
madcatzinc@13 384 SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "MERCHANT "..self.Index)
madcatzinc@0 385 end
madcatzinc@0 386
madcatzinc@13 387 return self
madcatzinc@13 388 end,
madcatzinc@0 389 }
madcatzinc@0 390
madcatzinc@0 391 -- WowEquipmentSet Class --
madcatzinc@4 392 CyborgMMO_WowEquipmentSet = {
madcatzinc@0 393 new = function(objectType, name, index)
madcatzinc@13 394 local self = CyborgMMO_WowObject.new(objectType, name, index) -- base class
madcatzinc@0 395 -- Set all the item info. --
madcatzinc@14 396 local texture,lessIndex = GetEquipmentSetInfoByName(name)
madcatzinc@13 397 self.Texture = "Interface\\Icons\\"..texture
madcatzinc@0 398 self.Name = name
madcatzinc@13 399 self.Index = lessIndex + 1
madcatzinc@0 400
madcatzinc@0 401 -- override method --
madcatzinc@0 402 self.DoAction = function()
madcatzinc@13 403 UseEquipmentSet(self.Name)
madcatzinc@0 404 end
madcatzinc@0 405
madcatzinc@0 406 -- override method --
madcatzinc@0 407 self.Pickup = function()
madcatzinc@0 408 self.PlaySound()
madcatzinc@13 409 ClearCursor()
madcatzinc@13 410 -- SetCursor(self.Texture)
madcatzinc@13 411 return PickupEquipmentSetByName(self.Name)
madcatzinc@0 412 end
madcatzinc@0 413
madcatzinc@0 414 self.SetBinding = function(key)
madcatzinc@0 415 self.Key = key
madcatzinc@13 416 local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction);
madcatzinc@16 417 SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton")
madcatzinc@0 418 end
madcatzinc@0 419
madcatzinc@13 420 return self
madcatzinc@13 421 end,
madcatzinc@0 422 }
madcatzinc@0 423
madcatzinc@0 424 -- End Of WowObjects --