madcatzinc@0: --~ Warcraft Plugin for Cyborg MMO7 madcatzinc@0: --~ Filename: CyborgMMO7.lua madcatzinc@0: --~ Description: Plugin entry point, String tables and other generic crap that I could not think to put anywhere else. 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@0: madcatzinc@0: madcatzinc@0: madcatzinc@0: madcatzinc@0: function LoadStrings(self) madcatzinc@1: self:SetText(StringTable[self:GetName()]); madcatzinc@0: end madcatzinc@0: madcatzinc@0: local VarsLoaded = false; madcatzinc@0: local EnteredWorld = false; madcatzinc@0: local LoadBinding = false; madcatzinc@0: local SaveName = GetRealmName().."_"..UnitName("player"); madcatzinc@0: local Settings = nil; madcatzinc@0: madcatzinc@0: madcatzinc@0: function CyborgMiniMapButton_Reposition(pos) madcatzinc@0: CyborgMiniMapFrame:SetPoint("TOPLEFT", madcatzinc@0: "Minimap", madcatzinc@0: "TOPLEFT", madcatzinc@0: 52-(80*cos(pos)), madcatzinc@0: (80*sin(pos))-52) madcatzinc@0: end madcatzinc@0: madcatzinc@0: madcatzinc@0: function CyborgMiniMapButton_OnUpdate() madcatzinc@0: madcatzinc@0: local xpos,ypos = GetCursorPosition() madcatzinc@0: local xmin,ymin = Minimap:GetLeft(), Minimap:GetBottom() madcatzinc@0: madcatzinc@0: xpos = (xmin)-(xpos / UIParent:GetScale()) madcatzinc@0: ypos = (ypos/ UIParent:GetScale())-(ymin) madcatzinc@0: madcatzinc@0: local degrees = math.deg(math.atan2(ypos,xpos)); madcatzinc@0: madcatzinc@0: while(degrees < 0) do madcatzinc@0: degrees = degrees + 360; madcatzinc@0: end madcatzinc@0: madcatzinc@0: madcatzinc@0: CyborgMiniMapButton_Reposition(degrees) madcatzinc@0: end madcatzinc@0: madcatzinc@0: function MouseModeChange(mode) madcatzinc@0: local MiniMapTexture = getglobal("CyborgMiniMapButton_Icon") madcatzinc@0: local MiniMapGlowTexture = getglobal("CyborgMiniMapButton_IconGlow") madcatzinc@0: local OpenButtonTexture = getglobal("OpenButtonPage".."OpenMainForm"):GetNormalTexture(); madcatzinc@0: local OpenButtonGlowTexture = getglobal("OpenButtonPage".."OpenMainForm"):GetHighlightTexture(); madcatzinc@0: if(1==mode) then madcatzinc@0: MiniMapTexture:SetVertexColor(1,0,0,1) madcatzinc@0: --MiniMapGlowTexture:SetVertexColor(1,0.26,0.26,.75); madcatzinc@0: OpenButtonTexture:SetVertexColor(1,0,0,0.75); madcatzinc@0: --OpenButtonGlowTexture:SetVertexColor(1,0.26,0.26,0.50); madcatzinc@0: elseif(2==mode) then madcatzinc@0: MiniMapTexture:SetVertexColor(0.07,0.22,1,1) madcatzinc@0: MiniMapGlowTexture:SetVertexColor(0.13,0.56,1,.75); madcatzinc@0: OpenButtonTexture:SetVertexColor(0.07,0.22,1,0.75); madcatzinc@0: OpenButtonGlowTexture:SetVertexColor(0.13,0.56,1,0.5); madcatzinc@0: elseif(3==mode) then madcatzinc@0: MiniMapTexture:SetVertexColor(0.52,0.08,0.89,1) madcatzinc@0: MiniMapGlowTexture:SetVertexColor(0.67,0.31,0.85,.75); madcatzinc@0: OpenButtonTexture:SetVertexColor(0.52,0.08,0.89,0.75); madcatzinc@0: OpenButtonGlowTexture:SetVertexColor(0.67,0.31,0.85,0.5); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@1: function LoadWowCommands() madcatzinc@1: if (ProfileKeyBindings == nil) then madcatzinc@1: ProfileKeyBindings = {} madcatzinc@1: ProfileKeyBindings = InternationalWowCommands[GetLocale()] madcatzinc@1: end madcatzinc@1: WowCommands = ProfileKeyBindings madcatzinc@1: end madcatzinc@1: madcatzinc@0: function GetSaveData() madcatzinc@0: if(VarsLoaded) then madcatzinc@0: if (CyborgMMO7SaveData == nil) then madcatzinc@0: CyborgMMO7SaveData = {}; madcatzinc@0: CyborgMMO7SaveData[SaveName] = {} madcatzinc@0: end madcatzinc@1: LoadWowCommands() madcatzinc@0: return CyborgMMO7SaveData[SaveName]; madcatzinc@0: end madcatzinc@0: return nil; madcatzinc@0: end madcatzinc@0: madcatzinc@0: function SetSaveData(data, index) madcatzinc@0: if(VarsLoaded) then madcatzinc@0: GetSaveData()[index] = data madcatzinc@1: ProfileKeyBindings = WowCommands madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: function Event(self, event, ...) madcatzinc@0: if(event == "VARIABLES_LOADED") then madcatzinc@0: VarsLoaded = true; madcatzinc@0: elseif(event == "PLAYER_ENTERING_WORLD") then madcatzinc@0: EnteredWorld = true; madcatzinc@0: elseif(event == "PLAYER_ENTER_COMBAT") then madcatzinc@0: msg("PLAYER_ENTER_COMBAT"); madcatzinc@0: Close(); madcatzinc@0: elseif(event == nil) then madcatzinc@0: msg("Event is nil"); madcatzinc@0: else madcatzinc@1: msg("Event is " + event); madcatzinc@0: end madcatzinc@0: madcatzinc@0: madcatzinc@0: -- Fire Loading if and only if the player is in the world and vars are loaded madcatzinc@0: if(false == LoadBinding) then madcatzinc@0: if(VarsLoaded) then madcatzinc@0: if(EnteredWorld) then madcatzinc@0: local data = GetSaveData() madcatzinc@0: madcatzinc@0: RatPageModel.Instance().LoadData(); madcatzinc@0: LoadBinding = true; madcatzinc@0: madcatzinc@0: ShowMacroFrame(); madcatzinc@0: HideUIPanel(MacroFrame); madcatzinc@0: madcatzinc@0: madcatzinc@0: SetupModeCallbacks(1); madcatzinc@0: SetupModeCallbacks(2); madcatzinc@0: SetupModeCallbacks(3); madcatzinc@0: madcatzinc@0: madcatzinc@0: --Reload Slider values: madcatzinc@0: if(nil == data["Settings"]) then madcatzinc@0: data["Settings"] = {} madcatzinc@0: data["Settings"]["Cyborg"] = 0.75; madcatzinc@0: data["Settings"]["Plugin"] = 0.75; madcatzinc@0: data["Settings"]["MiniMapButton"] = true; madcatzinc@0: data["Settings"]["CyborgButton"] = true; madcatzinc@0: end madcatzinc@0: madcatzinc@0: Settings = data["Settings"]; madcatzinc@0: madcatzinc@0: CyborgSizeSlider:SetValue(Settings["Cyborg"]); madcatzinc@0: SetOpenButtonSize(Settings["Cyborg"]) madcatzinc@0: PluginSizeSlider:SetValue(Settings["Plugin"]); madcatzinc@0: SetMainPageSize(Settings["Plugin"]); madcatzinc@0: madcatzinc@0: if(Settings["MiniMapButton"] == false) then madcatzinc@0: CyborgMiniMapButton:Hide(); madcatzinc@0: end madcatzinc@0: madcatzinc@0: local xmin,ymin = Minimap:GetLeft(), Minimap:GetBottom() madcatzinc@0: CyborgMiniMapButton_Reposition(math.deg(math.atan2(ymin,xmin))) madcatzinc@0: -- Close the main window for now madcatzinc@0: Close(); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: function SetDefaultSettings() madcatzinc@0: OpenButtonPageOpenMainForm:ClearAllPoints(); madcatzinc@0: MainPage:ClearAllPoints(); madcatzinc@0: OpenButtonPageOpenMainForm:SetPoint("LEFT", UIParent, "LEFT", 0, 0); madcatzinc@0: MainPage:SetPoint("LEFT", UIParent, "LEFT", 0, 0); madcatzinc@0: madcatzinc@0: SetOpenButtonSize(0.75); madcatzinc@0: SetMainPageSize(0.75); madcatzinc@0: MiniMapButton:SetChecked(); madcatzinc@0: SetMiniMapButton(true); madcatzinc@0: CyborgButton:SetChecked(); madcatzinc@0: SetCyborgHeadButton(true); madcatzinc@0: end madcatzinc@0: madcatzinc@0: function SetupModeCallbacks(modeNum) madcatzinc@0: madcatzinc@0: fn = function() madcatzinc@0: MouseModeChange(modeNum); madcatzinc@0: RatPageModel.Instance().SetMode(modeNum) madcatzinc@0: end madcatzinc@0: madcatzinc@0: local buttonFrame, parentFrame, name = CallbackFactory.Instance().AddCallback(fn); madcatzinc@1: if(1 ~= SetOverrideBindingClick(parentFrame, true, Mode[modeNum], name, "LeftButton")) then madcatzinc@0: msg("Failed to Bind modeChange"); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: function Loaded() madcatzinc@0: MainPage:RegisterEvent("VARIABLES_LOADED"); madcatzinc@0: MainPage:RegisterEvent("PLAYER_ENTERING_WORLD"); madcatzinc@0: MainPage:RegisterEvent("PLAYER_ENTER_COMBAT"); madcatzinc@0: end madcatzinc@0: madcatzinc@0: function Close() madcatzinc@0: MainPage:Hide(); madcatzinc@0: if(Settings["CyborgButton"] == true) then madcatzinc@0: OpenButtonPage:Show(); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: function Open() madcatzinc@0: MainPage:Show(); madcatzinc@0: RatQuickPage:Hide(); madcatzinc@0: if(Settings["CyborgButton"] == true) then madcatzinc@0: OpenButtonPage:Show(); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: function IsOpen() madcatzinc@0: if(MainPage:IsVisible() == 1) then madcatzinc@0: return true; madcatzinc@0: else madcatzinc@0: return false; madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: function Toggle() madcatzinc@0: if(IsOpen()) then madcatzinc@0: Close(); madcatzinc@0: else madcatzinc@0: Open(); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: function msg(m) madcatzinc@0: local id, name = GetChannelName("Debug"); madcatzinc@0: SendChatMessage(m, "CHANNEL", nil, id); madcatzinc@0: end madcatzinc@0: madcatzinc@0: function SetMainPageSize(percent) madcatzinc@0: if(VarsLoaded) then madcatzinc@0: if(EnteredWorld) then madcatzinc@0: MainPage:SetScale(percent); madcatzinc@0: Settings["Plugin"] = percent; madcatzinc@0: local data = GetSaveData() madcatzinc@0: data["Settings"] = Settings madcatzinc@0: PluginSizeSlider:SetValue(percent); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: function SetOpenButtonSize(percent) madcatzinc@0: if(VarsLoaded) then madcatzinc@0: if(EnteredWorld) then madcatzinc@0: OpenButtonPage:SetScale(percent) madcatzinc@0: Settings["Cyborg"] = percent; madcatzinc@0: local data = GetSaveData() madcatzinc@0: data["Settings"] = Settings madcatzinc@0: CyborgSizeSlider:SetValue(percent); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: function SetCyborgHeadButton(boolVal) madcatzinc@0: Settings["CyborgButton"] = boolVal; madcatzinc@0: if(Settings["CyborgButton"] == true) then madcatzinc@0: Close(); madcatzinc@0: else madcatzinc@0: OpenButtonPage:Hide(); madcatzinc@0: end madcatzinc@0: local data = GetSaveData() madcatzinc@0: data["Settings"] = Settings madcatzinc@0: end madcatzinc@0: madcatzinc@0: function SetMiniMapButton(boolVal) madcatzinc@0: Settings["MiniMapButton"] = boolVal; madcatzinc@0: if(Settings["MiniMapButton"] == true) then madcatzinc@0: CyborgMiniMapButton:Show(); madcatzinc@0: else madcatzinc@0: CyborgMiniMapButton:Hide(); madcatzinc@0: end madcatzinc@0: local data = GetSaveData() madcatzinc@0: data["Settings"] = Settings madcatzinc@0: end madcatzinc@0: