madcatzinc@13: --~ Warcraft Plugin for Cyborg MMO7 madcatzinc@0: --~ Filename: WowObjects.lua madcatzinc@0: --~ Description: Warcraft in game object models madcatzinc@0: --~ Copyright (C) 2012 Mad Catz Inc. madcatzinc@0: --~ Author: Christopher Hooks madcatzinc@0: madcatzinc@0: --~ This program is free software; you can redistribute it and/or madcatzinc@0: --~ modify it under the terms of the GNU General Public License madcatzinc@0: --~ as published by the Free Software Foundation; either version 2 madcatzinc@0: --~ of the License, or (at your option) any later version. madcatzinc@0: madcatzinc@0: --~ This program is distributed in the hope that it will be useful, madcatzinc@0: --~ but WITHOUT ANY WARRANTY; without even the implied warranty of madcatzinc@0: --~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the madcatzinc@0: --~ GNU General Public License for more details. madcatzinc@0: madcatzinc@0: --~ You should have received a copy of the GNU General Public License madcatzinc@0: --~ along with this program; if not, write to the Free Software madcatzinc@0: --~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. madcatzinc@0: madcatzinc@4: CyborgMMO_WowObject = { madcatzinc@0: new = function(type, detail, subdetail) madcatzinc@13: local self = {} madcatzinc@13: self.Texture = nil madcatzinc@13: self.Name = "NoName" madcatzinc@13: self.Type = type madcatzinc@13: self.Detail = detail madcatzinc@13: self.Subdetail = subdetail madcatzinc@0: madcatzinc@0: -- Methods -- madcatzinc@0: self.DoAction = function() madcatzinc@13: msg("Nothing To Do") madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.Pickup = function() madcatzinc@13: msg("Pick up Item") madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.SetBinding = function(key) madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.PlaySound = function() madcatzinc@13: PlaySound("igAbilityIconDrop") madcatzinc@0: end madcatzinc@0: madcatzinc@13: return self madcatzinc@0: end, madcatzinc@0: madcatzinc@0: ClearBinding = function(key) madcatzinc@13: local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(CyborgMMO_WowObject.DoNothing) madcatzinc@13: local result = SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton") madcatzinc@13: if result ~= 1 then madcatzinc@13: msg("Failed to bind companion to button click") madcatzinc@0: end madcatzinc@0: end, madcatzinc@0: madcatzinc@0: DoNothing = function() madcatzinc@0: end, madcatzinc@0: madcatzinc@0: Load = function(object) madcatzinc@13: if type == "item" then madcatzinc@4: object = CyborgMMO_WowItem.Load(Object) madcatzinc@13: elseif type == "macro" then madcatzinc@4: object = CyborgMMO_WowMacro.Load(object) madcatzinc@13: elseif type == "spell" then madcatzinc@4: object = CyborgMMO_WowSpell.Load(object) madcatzinc@13: elseif type == "petaction" then madcatzinc@4: object = CyborgMMO_WowSpell.Load(object) madcatzinc@13: -- elseif type == "merchant" then madcatzinc@13: -- object = SlotMerchant.new(detail, subdetail) madcatzinc@13: elseif type == "companion" then madcatzinc@4: object = CyborgMMO_WowCompanion.Load(object) madcatzinc@13: elseif type == "equipmentset" then madcatzinc@4: object = CyborgMMO_WowEquipmentSet.Load(object) madcatzinc@0: else madcatzinc@13: object = CyborgMMO_WowObject.new(type, detail, subdetail) madcatzinc@0: end madcatzinc@13: return object madcatzinc@0: end, madcatzinc@0: madcatzinc@0: -- Static Methods -- madcatzinc@0: Create = function(objectType, detail, subdetail) madcatzinc@13: local object madcatzinc@13: if objectType == "item" then madcatzinc@13: object = CyborgMMO_WowItem.new(detail, subdetail) madcatzinc@13: elseif objectType == "macro" then madcatzinc@4: object = CyborgMMO_WowMacro.new(detail) madcatzinc@13: elseif objectType == "spell" then madcatzinc@13: object = CyborgMMO_WowSpell.new(objectType, detail, subdetail) madcatzinc@13: elseif objectType == "petaction" then madcatzinc@13: object = CyborgMMO_WowSpell.new(objectType, detail, subdetail) madcatzinc@13: elseif objectType == "merchant" then madcatzinc@13: object = CyborgMMO_SlotMerchant.new(detail, subdetail) madcatzinc@13: elseif objectType == "companion" then madcatzinc@13: object = CyborgMMO_WowCompanion.new(detail, subdetail) madcatzinc@13: elseif objectType == "equipmentset" then madcatzinc@13: object = CyborgMMO_WowEquipmentSet.new(objectType, detail, subdetail) madcatzinc@13: elseif objectType == "callback" then madcatzinc@13: object = CyborgMMO_WowCallback.new(detail) madcatzinc@0: else madcatzinc@13: object = CyborgMMO_WowObject.new(objectType, detail, subdetail) madcatzinc@0: end madcatzinc@0: madcatzinc@13: return object madcatzinc@13: end, madcatzinc@0: } madcatzinc@0: madcatzinc@13: local CallbackCursor = nil madcatzinc@0: madcatzinc@4: CyborgMMO_CallbackIcons = { madcatzinc@0: new = function(self) madcatzinc@13: self.point, madcatzinc@13: self.relativeTo, madcatzinc@13: self.relativePoint, madcatzinc@13: self.xOfs, madcatzinc@13: self.yOfs = self:GetPoint() madcatzinc@13: -- self:SetPoint(self.point, self.relativeTo, self.relativePoint, self.xOfs, self.yOfs) madcatzinc@13: self.strata = self:GetFrameStrata() madcatzinc@4: self.wowObject = CyborgMMO_WowCallback.new(string.gsub(self:GetName(), self:GetParent():GetName(), "",1)) madcatzinc@13: self.wowObject.SetTextures(self) madcatzinc@0: self:RegisterForDrag("LeftButton","RightButton") madcatzinc@13: self:SetResizable(false) madcatzinc@13: madcatzinc@0: self.OnClick = function() madcatzinc@13: self.wowObject.DoAction() madcatzinc@0: end madcatzinc@13: madcatzinc@0: self.DragStart = function() madcatzinc@13: self:SetMovable(true) madcatzinc@13: self:StartMoving() madcatzinc@13: self.isMoving = true madcatzinc@0: self:SetFrameStrata("TOOLTIP") madcatzinc@0: end madcatzinc@13: madcatzinc@0: self.DragStop = function() madcatzinc@13: self:SetFrameStrata(self.strata) madcatzinc@13: self.isMoving = false madcatzinc@13: self:SetMovable(false) madcatzinc@13: self:StopMovingOrSizing() madcatzinc@0: madcatzinc@13: self:ClearAllPoints() madcatzinc@13: self:SetPoint(self.point, self.relativeTo, self.relativePoint, self.xOfs, self.yOfs) madcatzinc@13: local x,y = GetCursorPosition() madcatzinc@4: CyborgMMO_RatPageController.Instance().CallbackDropped(self) madcatzinc@0: end madcatzinc@13: madcatzinc@13: return self madcatzinc@13: end, madcatzinc@0: } madcatzinc@0: madcatzinc@4: CyborgMMO_WowCallback = { madcatzinc@0: new = function(callbackName) madcatzinc@13: local self = CyborgMMO_WowObject.new("callback", callbackName, "") madcatzinc@13: self.CallbackName = callbackName madcatzinc@0: self.Texture = "Interface\\AddOns\\CyborgMMO7\\Graphics\\"..self.CallbackName.."Unselected.tga" madcatzinc@13: madcatzinc@0: self.SetTextures = function(buttonFrame) madcatzinc@4: msg("TextureName = "..self.CallbackName) madcatzinc@0: buttonFrame:SetNormalTexture("Interface\\AddOns\\CyborgMMO7\\Graphics\\"..self.CallbackName.."Unselected.tga") madcatzinc@0: buttonFrame:SetPushedTexture("Interface\\AddOns\\CyborgMMO7\\Graphics\\"..self.CallbackName.."Down.tga") madcatzinc@0: buttonFrame:SetHighlightTexture("Interface\\AddOns\\CyborgMMO7\\Graphics\\"..self.CallbackName.."Over.tga") madcatzinc@0: end madcatzinc@13: madcatzinc@0: self.DoAction = function() madcatzinc@4: local action = CyborgMMO_CallbackFactory.Instance().GetCallback(self.CallbackName) madcatzinc@13: msg("calling callback:- "..self.CallbackName) madcatzinc@13: action() madcatzinc@0: end madcatzinc@13: madcatzinc@0: self.PickupCallback = function() madcatzinc@13: local slot = nil madcatzinc@13: local observers = CyborgMMO_RatPageModel.Instance().GetAllObservers() madcatzinc@13: for i=1,#observers do madcatzinc@13: if MouseIsOver(observers[i]) then madcatzinc@13: slot = observers[i] madcatzinc@13: break madcatzinc@0: end madcatzinc@0: end madcatzinc@0: slot:SetNormalTexture(slot.UnCheckedTexture) madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.ClickHandler = function(self, button, down) madcatzinc@13: msg("click handler") madcatzinc@13: CallbackCursor:StopMoving() madcatzinc@13: CallbackCursor:Hide() madcatzinc@0: end madcatzinc@13: madcatzinc@0: self.Pickup = function() madcatzinc@0: self.PlaySound() madcatzinc@13: ClearCursor() madcatzinc@13: self.PickupCallback() madcatzinc@13: end madcatzinc@0: madcatzinc@0: self.SetBinding = function(key) madcatzinc@13: local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction) madcatzinc@13: local result = SetOverrideBindingClick(CyborgMMO_CallbackFactory.Instance().Frame, true, key, name, "LeftButton") madcatzinc@13: if result ~= 1 then madcatzinc@13: msg("Failed to Bind modeChange") madcatzinc@0: end madcatzinc@0: end madcatzinc@13: madcatzinc@13: return self madcatzinc@13: end, madcatzinc@0: } madcatzinc@0: madcatzinc@0: -- WowItem Class -- madcatzinc@4: CyborgMMO_WowItem = { madcatzinc@0: new = function(number, itemID) madcatzinc@13: local self = CyborgMMO_WowObject.new("item", number, itemID) -- base class madcatzinc@0: -- Set all the item info. -- madcatzinc@0: self.Name, madcatzinc@0: self.Link, madcatzinc@0: self.Rarity, madcatzinc@0: self.Level, madcatzinc@0: self.MinLevel, madcatzinc@0: self.Type, madcatzinc@0: self.SubType, madcatzinc@0: self.StackCount, madcatzinc@0: self.EquipLoc, madcatzinc@0: self.Texture, madcatzinc@13: self.SellPrice = GetItemInfo(itemID) madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.DoAction = function() madcatzinc@13: msg("Use Item") madcatzinc@0: end madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.Pickup = function() madcatzinc@0: self.PlaySound() madcatzinc@13: ClearCursor() madcatzinc@13: -- SetCursor(self.Texture) madcatzinc@13: return PickupItem(self.Link) madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.SetBinding = function(key) madcatzinc@13: SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "ITEM "..self.Name) madcatzinc@0: end madcatzinc@0: madcatzinc@13: return self madcatzinc@0: end, madcatzinc@0: } madcatzinc@0: madcatzinc@0: -- WowSpell Class -- madcatzinc@4: CyborgMMO_WowSpell = { madcatzinc@0: new = function(type, spellbookID, spellbook) madcatzinc@4: local self = CyborgMMO_WowObject.new(type, spellbookID, spellbook) -- base class madcatzinc@13: self.SpellbookID = spellbookID madcatzinc@13: self.Spellbook = spellbook madcatzinc@13: self.Name,self.Rank = GetSpellBookItemName(spellbookID, spellbook) madcatzinc@13: self.Texture = GetSpellBookItemTexture(spellbookID, spellbook) madcatzinc@13: self.Type = type madcatzinc@0: madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.DoAction = function() madcatzinc@13: msg("Cast Spell") madcatzinc@0: end madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.Pickup = function() madcatzinc@0: self.PlaySound() madcatzinc@13: ClearCursor() madcatzinc@13: -- SetCursor(self.Texture) madcatzinc@13: return PickupSpellBookItem(self.SpellbookID, self.Spellbook) madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.SetBinding = function(key) madcatzinc@0: msg("Binding to key "..key) madcatzinc@0: self.Key = key madcatzinc@13: SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, self.Key, self.Type.." "..self.Name) madcatzinc@0: end madcatzinc@0: madcatzinc@13: return self madcatzinc@0: end, madcatzinc@0: madcatzinc@0: Load = function(object) madcatzinc@13: local o = WowSpell.new(object.Type, object.Detail, object.Subdetail) madcatzinc@13: o.Name = object.Name madcatzinc@13: o.Texture = object.Texture madcatzinc@13: return o madcatzinc@13: end, madcatzinc@0: } madcatzinc@0: madcatzinc@0: -- WowMacro Class -- madcatzinc@4: CyborgMMO_WowMacro = { madcatzinc@0: new = function(index) madcatzinc@13: local self = CyborgMMO_WowObject.new("macro", index, nil) -- base class madcatzinc@0: -- Set all the item info. -- madcatzinc@0: self.Name, madcatzinc@0: self.Texture, madcatzinc@0: self.Body, madcatzinc@13: self.isLocal = GetMacroInfo(index) madcatzinc@13: self.Index = index madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.DoAction = function() madcatzinc@13: msg("Use Item") madcatzinc@0: end madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.Pickup = function() madcatzinc@0: self.PlaySound() madcatzinc@13: ClearCursor() madcatzinc@13: -- SetCursor(self.Texture) madcatzinc@13: return PickupMacro(self.Index) madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.SetBinding = function(key) madcatzinc@13: self.Key = key madcatzinc@13: SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "MACRO "..self.Index) madcatzinc@0: end madcatzinc@0: madcatzinc@13: return self madcatzinc@13: end, madcatzinc@0: } madcatzinc@0: madcatzinc@0: -- WowCompanion Class -- madcatzinc@4: CyborgMMO_WowCompanion = { madcatzinc@0: new = function(index, SubType) madcatzinc@13: local self = CyborgMMO_WowObject.new("companion", index, SubType) -- base class madcatzinc@0: -- Set all the item info. -- madcatzinc@13: self.Id, madcatzinc@13: self.Name, madcatzinc@13: self.SpellId, madcatzinc@13: self.Texture, madcatzinc@13: self.isSummoned = GetCompanionInfo(SubType, index) madcatzinc@13: self.SubType = SubType madcatzinc@13: self.index = index madcatzinc@0: -- override method -- madcatzinc@0: self.DoAction = function() madcatzinc@13: if self.SubType == "MOUNT" and IsMounted() then madcatzinc@13: Dismount() madcatzinc@0: else madcatzinc@13: CallCompanion(self.SubType, self.index) madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.Pickup = function() madcatzinc@0: self.PlaySound() madcatzinc@13: return PickupCompanion(self.SubType, self.index) madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.SetBinding = function(key) madcatzinc@0: self.Key = key madcatzinc@13: local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction) madcatzinc@13: local result = SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton") madcatzinc@13: if result ~= 1 then madcatzinc@13: msg("Failed to bind companion to button click") madcatzinc@0: end madcatzinc@13: -- SetOverrideBinding(hiddenModeChanger, true, key, "MACRO "..self.Index) madcatzinc@0: end madcatzinc@0: madcatzinc@13: return self madcatzinc@0: end, madcatzinc@0: madcatzinc@0: Load = function(object) madcatzinc@13: local o = WowCompanion.new(object.index, object.SubType) madcatzinc@13: return o madcatzinc@13: end, madcatzinc@0: } madcatzinc@0: madcatzinc@0: -- WowMerchant Class -- madcatzinc@4: CyborgMMO_WowMerchant = { madcatzinc@0: new = function(index) madcatzinc@13: local self = CyborgMMO_WowObject.new("macro", index, nil) -- base class madcatzinc@0: -- Set all the item info. -- madcatzinc@0: self.Name, madcatzinc@0: self.Texture, madcatzinc@0: self.Price, madcatzinc@0: self.Quantity, madcatzinc@0: self.NumAvailable, madcatzinc@0: self.IsUsable, madcatzinc@13: self.ExtendedCost = GetMerchantItemInfo(index) madcatzinc@13: self.Index = index madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.DoAction = function() madcatzinc@13: msg("Use Item") madcatzinc@0: end madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.Pickup = function() madcatzinc@0: self.PlaySound() madcatzinc@13: ClearCursor() madcatzinc@13: -- SetCursor(self.Texture) madcatzinc@13: return PickupMerchantItem(self.Index) madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.SetBinding = function(key) madcatzinc@0: self.Key = key madcatzinc@13: SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "MERCHANT "..self.Index) madcatzinc@0: end madcatzinc@0: madcatzinc@13: return self madcatzinc@13: end, madcatzinc@0: } madcatzinc@0: madcatzinc@0: -- WowEquipmentSet Class -- madcatzinc@4: CyborgMMO_WowEquipmentSet = { madcatzinc@0: new = function(objectType, name, index) madcatzinc@13: local self = CyborgMMO_WowObject.new(objectType, name, index) -- base class madcatzinc@0: -- Set all the item info. -- madcatzinc@13: texture,lessIndex = GetEquipmentSetInfoByName(name) madcatzinc@13: self.Texture = "Interface\\Icons\\"..texture madcatzinc@0: self.Name = name madcatzinc@13: self.Index = lessIndex + 1 madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.DoAction = function() madcatzinc@13: UseEquipmentSet(self.Name) madcatzinc@0: end madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.Pickup = function() madcatzinc@0: self.PlaySound() madcatzinc@13: ClearCursor() madcatzinc@13: -- SetCursor(self.Texture) madcatzinc@13: return PickupEquipmentSetByName(self.Name) madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.SetBinding = function(key) madcatzinc@0: self.Key = key madcatzinc@13: local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction); madcatzinc@13: local result = SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton") madcatzinc@13: if result ~= 1 then madcatzinc@13: msg("Failed to bind companion to button click") madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@13: return self madcatzinc@13: end, madcatzinc@0: } madcatzinc@0: madcatzinc@0: -- End Of WowObjects --