annotate WowObjects.lua @ 13:6cb9a2936580

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