madcatzinc@0: --~ 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@0: local self = {}; madcatzinc@0: self.Texture = nil; madcatzinc@0: self.Name = "NoName"; madcatzinc@0: self.Type = type; madcatzinc@0: self.Detail = detail; madcatzinc@0: self.Subdetail = subdetail; madcatzinc@0: madcatzinc@0: madcatzinc@0: -- Methods -- madcatzinc@0: self.DoAction = function() madcatzinc@0: msg("Nothing To Do"); madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.Pickup = function() madcatzinc@0: 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@0: PlaySound("igAbilityIconDrop"); madcatzinc@0: end madcatzinc@0: madcatzinc@0: return self; madcatzinc@0: end, madcatzinc@0: madcatzinc@0: ClearBinding = function(key) madcatzinc@4: local buttonFrame, parentFrame, name = CyborgMMO_CallbackFactory.Instance().AddCallback(CyborgMMO_WowObject.DoNothing); madcatzinc@0: if(1 ~= SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton")) then madcatzinc@0: 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@0: if("item" == type) then madcatzinc@4: object = CyborgMMO_WowItem.Load(Object) madcatzinc@0: elseif("macro" == type) then madcatzinc@4: object = CyborgMMO_WowMacro.Load(object) madcatzinc@0: elseif("spell" == type) then madcatzinc@4: object = CyborgMMO_WowSpell.Load(object) madcatzinc@0: elseif("petaction" == type) then madcatzinc@4: object = CyborgMMO_WowSpell.Load(object) madcatzinc@0: --elseif("merchant"== type) then madcatzinc@0: --object = SlotMerchant.new(detail,subdetail) madcatzinc@0: elseif("companion" == type) then madcatzinc@4: object = CyborgMMO_WowCompanion.Load(object) madcatzinc@0: elseif("equipmentset" == type) then madcatzinc@4: object = CyborgMMO_WowEquipmentSet.Load(object) madcatzinc@0: else madcatzinc@4: object = CyborgMMO_WowObject.new(type,detail, subdetail) madcatzinc@0: end madcatzinc@0: return object; madcatzinc@0: end, madcatzinc@0: madcatzinc@0: -- Static Methods -- madcatzinc@0: Create = function(objectType, detail, subdetail) madcatzinc@0: local object; madcatzinc@0: if("item" == objectType) then madcatzinc@4: object = CyborgMMO_WowItem.new(detail,subdetail) madcatzinc@0: elseif("macro" == objectType) then madcatzinc@4: object = CyborgMMO_WowMacro.new(detail) madcatzinc@0: elseif("spell" == objectType) then madcatzinc@4: object = CyborgMMO_WowSpell.new(objectType, detail,subdetail) madcatzinc@0: elseif("petaction" == objectType) then madcatzinc@4: object = CyborgMMO_WowSpell.new(objectType, detail,subdetail) madcatzinc@0: elseif("merchant"== objectType) then madcatzinc@4: object = CyborgMMO_SlotMerchant.new(detail,subdetail) madcatzinc@0: elseif("companion" == objectType) then madcatzinc@4: object = CyborgMMO_WowCompanion.new(detail,subdetail) madcatzinc@0: elseif("equipmentset" == objectType) then madcatzinc@4: object = CyborgMMO_WowEquipmentSet.new(objectType,detail,subdetail) madcatzinc@0: elseif("callback" == objectType) then madcatzinc@4: object = CyborgMMO_WowCallback.new(detail); madcatzinc@0: else madcatzinc@4: object = CyborgMMO_WowObject.new(objectType,detail, subdetail) madcatzinc@0: end madcatzinc@0: madcatzinc@0: return object; madcatzinc@0: end madcatzinc@0: } madcatzinc@0: madcatzinc@0: local CallbackCursor = nil; madcatzinc@0: madcatzinc@4: CyborgMMO_CallbackIcons = { madcatzinc@0: new = function(self) madcatzinc@0: self.point, self.relativeTo, self.relativePoint, self.xOfs, self.yOfs = self:GetPoint(); madcatzinc@0: --self:SetPoint(self.point, self.relativeTo, self.relativePoint, self.xOfs, self.yOfs); madcatzinc@0: self.strata = self:GetFrameStrata(); madcatzinc@4: self.wowObject = CyborgMMO_WowCallback.new(string.gsub(self:GetName(), self:GetParent():GetName(), "",1)) madcatzinc@0: self.wowObject.SetTextures(self); madcatzinc@0: self:RegisterForDrag("LeftButton","RightButton") madcatzinc@0: self:SetResizable(false); madcatzinc@0: madcatzinc@0: self.OnClick = function() madcatzinc@0: self.wowObject.DoAction(); madcatzinc@0: end madcatzinc@0: madcatzinc@0: madcatzinc@0: self.DragStart = function() madcatzinc@0: self:SetMovable(true); madcatzinc@0: self:StartMoving(); madcatzinc@0: self.isMoving = true; madcatzinc@0: self:SetFrameStrata("TOOLTIP") madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.DragStop = function() madcatzinc@0: madcatzinc@0: self:SetFrameStrata(self.strata); madcatzinc@0: self.isMoving = false; madcatzinc@0: self:SetMovable(false); madcatzinc@0: self:StopMovingOrSizing(); madcatzinc@0: madcatzinc@0: self:ClearAllPoints(); madcatzinc@0: self:SetPoint(self.point, self.relativeTo, self.relativePoint, self.xOfs, self.yOfs); madcatzinc@0: local x, y = GetCursorPosition(); madcatzinc@4: CyborgMMO_RatPageController.Instance().CallbackDropped(self) madcatzinc@0: end madcatzinc@0: madcatzinc@0: return self; madcatzinc@0: end madcatzinc@0: } madcatzinc@0: madcatzinc@4: CyborgMMO_WowCallback = { madcatzinc@0: new = function(callbackName) madcatzinc@4: local self = CyborgMMO_WowObject.new("callback", callbackName, ""); madcatzinc@0: self.CallbackName = callbackName; madcatzinc@0: self.Texture = "Interface\\AddOns\\CyborgMMO7\\Graphics\\"..self.CallbackName.."Unselected.tga" madcatzinc@0: 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@0: madcatzinc@0: self.DoAction = function() madcatzinc@4: local action = CyborgMMO_CallbackFactory.Instance().GetCallback(self.CallbackName) madcatzinc@0: msg("calling callback:- "..self.CallbackName); madcatzinc@0: action(); madcatzinc@0: madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.PickupCallback = function() madcatzinc@0: madcatzinc@0: local slot = nil; madcatzinc@4: local observers = CyborgMMO_RatPageModel.Instance().GetAllObservers(); madcatzinc@0: for i = 1, (# observers) do madcatzinc@0: if(MouseIsOver(observers[i])) then madcatzinc@0: slot = observers[i]; madcatzinc@0: break; madcatzinc@0: end madcatzinc@0: end madcatzinc@0: slot:SetNormalTexture(slot.UnCheckedTexture) madcatzinc@0: end madcatzinc@0: madcatzinc@0: madcatzinc@0: self.ClickHandler = function(self, button, down) madcatzinc@0: msg("click handler"); madcatzinc@0: CallbackCursor:StopMoving(); madcatzinc@0: CallbackCursor:Hide(); madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.Pickup = function() madcatzinc@0: self.PlaySound() madcatzinc@0: ClearCursor(); madcatzinc@0: self.PickupCallback(); madcatzinc@0: madcatzinc@0: end madcatzinc@0: madcatzinc@0: madcatzinc@0: self.SetBinding = function(key) madcatzinc@4: local buttonFrame, parentFrame, name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction); madcatzinc@4: if(1 ~= SetOverrideBindingClick(CyborgMMO_CallbackFactory.Instance().Frame, true, key, name, "LeftButton")) then madcatzinc@0: msg("Failed to Bind modeChange"); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: return self; madcatzinc@0: end madcatzinc@0: } madcatzinc@0: madcatzinc@0: -- WowItem Class -- madcatzinc@0: madcatzinc@4: CyborgMMO_WowItem = { madcatzinc@0: new = function(number, itemID) madcatzinc@4: 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@0: self.SellPrice = GetItemInfo(itemID); madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.DoAction = function() madcatzinc@0: msg("Use Item"); madcatzinc@0: end madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.Pickup = function() madcatzinc@0: self.PlaySound() madcatzinc@0: ClearCursor(); madcatzinc@0: --SetCursor(self.Texture); madcatzinc@0: return PickupItem(self.Link); madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.SetBinding = function(key) madcatzinc@4: SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "ITEM "..self.Name); madcatzinc@0: end madcatzinc@0: madcatzinc@0: return self; madcatzinc@0: end, madcatzinc@0: } madcatzinc@0: madcatzinc@0: -- WowSpell Class -- madcatzinc@0: madcatzinc@4: CyborgMMO_WowSpell = { madcatzinc@0: new = function(type, spellbookID, spellbook) madcatzinc@4: local self = CyborgMMO_WowObject.new(type, spellbookID, spellbook) -- base class madcatzinc@0: self.SpellbookID = spellbookID; madcatzinc@0: self.Spellbook = spellbook; madcatzinc@0: self.Name, self.Rank = GetSpellBookItemName(spellbookID, spellbook); madcatzinc@0: self.Texture = GetSpellBookItemTexture(spellbookID, spellbook); madcatzinc@0: self.Type = type; madcatzinc@0: madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.DoAction = function() madcatzinc@0: msg("Cast Spell"); madcatzinc@0: end madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.Pickup = function() madcatzinc@0: self.PlaySound() madcatzinc@0: ClearCursor(); madcatzinc@0: --SetCursor(self.Texture); madcatzinc@0: 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@4: SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, self.Key, self.Type.." "..self.Name); madcatzinc@0: end madcatzinc@0: madcatzinc@0: return self; madcatzinc@0: madcatzinc@0: end, madcatzinc@0: madcatzinc@0: Load = function(object) madcatzinc@0: local o = WowSpell.new(object.Type, object.Detail, object.Subdetail); madcatzinc@0: o.Name = object.Name; madcatzinc@0: o.Texture = object.Texture; madcatzinc@0: return o; madcatzinc@0: end madcatzinc@0: } madcatzinc@0: madcatzinc@0: -- WowMacro Class -- madcatzinc@0: madcatzinc@4: CyborgMMO_WowMacro = { madcatzinc@0: new = function(index) madcatzinc@4: 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@0: self.isLocal = GetMacroInfo(index); madcatzinc@0: self.Index = index; madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.DoAction = function() madcatzinc@0: msg("Use Item"); madcatzinc@0: end madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.Pickup = function() madcatzinc@0: self.PlaySound() madcatzinc@0: ClearCursor(); madcatzinc@0: --SetCursor(self.Texture); madcatzinc@0: return PickupMacro(self.Index); madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.SetBinding = function(key) madcatzinc@0: self.Key = key; madcatzinc@4: SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "MACRO "..self.Index); madcatzinc@0: end madcatzinc@0: madcatzinc@0: return self; madcatzinc@0: end, madcatzinc@0: } madcatzinc@0: madcatzinc@0: madcatzinc@0: -- WowCompanion Class -- madcatzinc@0: madcatzinc@4: CyborgMMO_WowCompanion = { madcatzinc@0: new = function(index, SubType) madcatzinc@4: local self = CyborgMMO_WowObject.new("companion", index, SubType); -- base class madcatzinc@0: -- Set all the item info. -- madcatzinc@0: self.Id, self.Name, self.SpellId, self.Texture, self.isSummoned = GetCompanionInfo(SubType, index); madcatzinc@0: self.SubType = SubType; madcatzinc@0: self.index = index; madcatzinc@0: -- override method -- madcatzinc@0: self.DoAction = function() madcatzinc@0: if((self.SubType == "MOUNT") and IsMounted()) then madcatzinc@0: Dismount(); madcatzinc@0: else madcatzinc@0: 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@0: return PickupCompanion(self.SubType, self.index); madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.SetBinding = function(key) madcatzinc@0: self.Key = key madcatzinc@4: local buttonFrame, parentFrame, name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction); madcatzinc@0: if(1 ~= SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton")) then madcatzinc@0: msg("Failed to bind companion to button click"); madcatzinc@0: end madcatzinc@0: --SetOverrideBinding(hiddenModeChanger, true, key, "MACRO "..self.Index); madcatzinc@0: end madcatzinc@0: madcatzinc@0: return self; madcatzinc@0: end, madcatzinc@0: madcatzinc@0: Load = function(object) madcatzinc@0: local o = WowCompanion.new(object.index, object.SubType); madcatzinc@0: return o; madcatzinc@0: end madcatzinc@0: } madcatzinc@0: madcatzinc@0: -- WowMerchant Class -- madcatzinc@4: CyborgMMO_WowMerchant = { madcatzinc@0: new = function(index) madcatzinc@4: 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@0: self.ExtendedCost = GetMerchantItemInfo(index); madcatzinc@0: self.Index = index; madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.DoAction = function() madcatzinc@0: msg("Use Item"); madcatzinc@0: end madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.Pickup = function() madcatzinc@0: self.PlaySound() madcatzinc@0: ClearCursor(); madcatzinc@0: --SetCursor(self.Texture); madcatzinc@0: return PickupMerchantItem(self.Index); madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.SetBinding = function(key) madcatzinc@0: self.Key = key madcatzinc@4: SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "MERCHANT "..self.Index); madcatzinc@0: end madcatzinc@0: madcatzinc@0: return self; madcatzinc@0: end, madcatzinc@0: } madcatzinc@0: madcatzinc@0: -- WowEquipmentSet Class -- madcatzinc@4: CyborgMMO_WowEquipmentSet = { madcatzinc@0: new = function(objectType, name, index) madcatzinc@4: local self = CyborgMMO_WowObject.new(objectType, name, index); -- base class madcatzinc@0: -- Set all the item info. -- madcatzinc@0: texture, lessIndex = GetEquipmentSetInfoByName(name); madcatzinc@0: self.Texture = "Interface\\Icons\\"..texture; madcatzinc@0: self.Name = name madcatzinc@0: self.Index = lessIndex+1; madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.DoAction = function() madcatzinc@0: UseEquipmentSet(self.Name); madcatzinc@0: end madcatzinc@0: madcatzinc@0: -- override method -- madcatzinc@0: self.Pickup = function() madcatzinc@0: self.PlaySound() madcatzinc@0: ClearCursor(); madcatzinc@0: --SetCursor(self.Texture); madcatzinc@0: return PickupEquipmentSetByName(self.Name); madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.SetBinding = function(key) madcatzinc@0: self.Key = key madcatzinc@4: local buttonFrame, parentFrame, name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction); madcatzinc@0: if(1 ~= SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton")) then madcatzinc@0: msg("Failed to bind companion to button click"); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: return self; madcatzinc@0: end, madcatzinc@0: } madcatzinc@0: madcatzinc@0: madcatzinc@0: -- End Of WowObjects --