annotate WowObjects.lua @ 24:6906d8ffd580

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