annotate WowObjects.lua @ 4:d186f8cd5000

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