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@4: function CyborgMMO_LoadStrings(self) madcatzinc@4: --~ msg("LoadStrings("..self:GetName()..") = "..StringTable[self:GetName()]) 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@4: function CyborgMMO_MiniMapButtonReposition(pos) madcatzinc@4: CyborgMMO_MiniMapFrame: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@4: function CyborgMMO_MiniMapButtonOnUpdate() 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@4: CyborgMMO_MiniMapButtonReposition(degrees) madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_MouseModeChange(mode) madcatzinc@4: local MiniMapTexture = getglobal("CyborgMMO_MiniMapFrameButton_Icon") madcatzinc@4: local MiniMapGlowTexture = getglobal("CyborgMMO_MiniMapFrameButton_IconGlow") madcatzinc@4: local OpenButtonTexture = getglobal("CyborgMMO_OpenButtonPage".."OpenMainForm"):GetNormalTexture(); madcatzinc@4: local OpenButtonGlowTexture = getglobal("CyborgMMO_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@4: function CyborgMMO_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@4: function CyborgMMO_GetSaveData() madcatzinc@0: if(VarsLoaded) then madcatzinc@0: if (CyborgMMO7SaveData == nil) then madcatzinc@0: CyborgMMO7SaveData = {}; madcatzinc@0: CyborgMMO7SaveData[SaveName] = {} madcatzinc@0: end madcatzinc@4: CyborgMMO_LoadWowCommands() madcatzinc@0: return CyborgMMO7SaveData[SaveName]; madcatzinc@0: end madcatzinc@0: return nil; madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_SetSaveData(data, index) madcatzinc@0: if(VarsLoaded) then madcatzinc@4: CyborgMMO_GetSaveData()[index] = data madcatzinc@1: ProfileKeyBindings = WowCommands madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_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@4: local data = CyborgMMO_GetSaveData() madcatzinc@0: madcatzinc@4: CyborgMMO_RatPageModel.Instance().LoadData(); madcatzinc@0: LoadBinding = true; madcatzinc@0: madcatzinc@0: ShowMacroFrame(); madcatzinc@0: HideUIPanel(MacroFrame); madcatzinc@0: madcatzinc@0: madcatzinc@4: CyborgMMO_SetupModeCallbacks(1); madcatzinc@4: CyborgMMO_SetupModeCallbacks(2); madcatzinc@4: CyborgMMO_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@4: CyborgMMO_OptionPageCyborgSizeSlider:SetValue(Settings["Cyborg"]); madcatzinc@4: CyborgMMO_SetOpenButtonSize(Settings["Cyborg"]) madcatzinc@4: CyborgMMO_OptionPagePluginSizeSlider:SetValue(Settings["Plugin"]); madcatzinc@4: CyborgMMO_SetMainPageSize(Settings["Plugin"]); madcatzinc@4: madcatzinc@4: CyborgMMO_SetMiniMapButton(Settings["MiniMapButton"]) madcatzinc@4: CyborgMMO_SetCyborgHeadButton(Settings["CyborgButton"]) madcatzinc@0: madcatzinc@0: local xmin,ymin = Minimap:GetLeft(), Minimap:GetBottom() madcatzinc@4: CyborgMMO_MiniMapButtonReposition(math.deg(math.atan2(ymin,xmin))) madcatzinc@0: -- Close the main window for now madcatzinc@4: CyborgMMO_Close(); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_SetDefaultSettings() madcatzinc@4: CyborgMMO_OpenButtonPageOpenMainForm:ClearAllPoints(); madcatzinc@4: CyborgMMO_MainPage:ClearAllPoints(); madcatzinc@4: CyborgMMO_OpenButtonPageOpenMainForm:SetPoint("LEFT", UIParent, "LEFT", 0, 0); madcatzinc@4: CyborgMMO_MainPage:SetPoint("LEFT", UIParent, "LEFT", 0, 0); madcatzinc@0: madcatzinc@4: CyborgMMO_SetOpenButtonSize(0.75); madcatzinc@4: CyborgMMO_SetMainPageSize(0.75); madcatzinc@4: CyborgMMO_SetMiniMapButton(true); madcatzinc@4: CyborgMMO_SetCyborgHeadButton(true); madcatzinc@0: end madcatzinc@0: madcatzinc@0: madcatzinc@4: function CyborgMMO_SetupModeCallbacks(modeNum) madcatzinc@0: fn = function() madcatzinc@4: CyborgMMO_MouseModeChange(modeNum); madcatzinc@4: CyborgMMO_RatPageModel.Instance().SetMode(modeNum) madcatzinc@0: end madcatzinc@0: madcatzinc@4: local buttonFrame, parentFrame, name = CyborgMMO_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@4: function CyborgMMO_Loaded() madcatzinc@4: CyborgMMO_MainPage:RegisterEvent("VARIABLES_LOADED"); madcatzinc@4: CyborgMMO_MainPage:RegisterEvent("PLAYER_ENTERING_WORLD"); madcatzinc@4: CyborgMMO_MainPage:RegisterEvent("PLAYER_ENTER_COMBAT"); madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_Close() madcatzinc@4: CyborgMMO_MainPage:Hide(); madcatzinc@0: if(Settings["CyborgButton"] == true) then madcatzinc@4: CyborgMMO_OpenButtonPage:Show(); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_Open() madcatzinc@4: CyborgMMO_MainPage:Show(); madcatzinc@4: CyborgMMO_RatQuickPage:Hide(); madcatzinc@0: if(Settings["CyborgButton"] == true) then madcatzinc@4: CyborgMMO_OpenButtonPage:Show(); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_IsOpen() madcatzinc@4: if(CyborgMMO_MainPage:IsVisible() == 1) then madcatzinc@0: return true; madcatzinc@0: else madcatzinc@0: return false; madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_Toggle() madcatzinc@4: if(CyborgMMO_IsOpen()) then madcatzinc@4: CyborgMMO_Close(); madcatzinc@0: else madcatzinc@4: CyborgMMO_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@4: function CyborgMMO_SetMainPageSize(percent) madcatzinc@0: if(VarsLoaded) then madcatzinc@0: if(EnteredWorld) then madcatzinc@4: CyborgMMO_MainPage:SetScale(percent); madcatzinc@0: Settings["Plugin"] = percent; madcatzinc@4: local data = CyborgMMO_GetSaveData() madcatzinc@0: data["Settings"] = Settings madcatzinc@4: CyborgMMO_OptionPagePluginSizeSlider:SetValue(percent); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_SetOpenButtonSize(percent) madcatzinc@0: if(VarsLoaded) then madcatzinc@0: if(EnteredWorld) then madcatzinc@4: CyborgMMO_OpenButtonPage:SetScale(percent) madcatzinc@0: Settings["Cyborg"] = percent; madcatzinc@4: local data = CyborgMMO_GetSaveData() madcatzinc@0: data["Settings"] = Settings madcatzinc@4: CyborgMMO_OptionPageCyborgSizeSlider:SetValue(percent); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_SetCyborgHeadButton(boolVal) madcatzinc@0: Settings["CyborgButton"] = boolVal; madcatzinc@4: CyborgMMO_OptionPageCyborgButton:SetChecked(boolVal); madcatzinc@0: if(Settings["CyborgButton"] == true) then madcatzinc@4: CyborgMMO_Close(); madcatzinc@0: else madcatzinc@4: CyborgMMO_OpenButtonPage:Hide(); madcatzinc@0: end madcatzinc@4: local data = CyborgMMO_GetSaveData() madcatzinc@0: data["Settings"] = Settings madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_SetMiniMapButton(boolVal) madcatzinc@4: Settings["MiniMapButton"] = boolVal madcatzinc@4: Settings["MiniMapButton"] = boolVal madcatzinc@4: CyborgMMO_OptionPageMiniMapButton:SetChecked(boolVal) madcatzinc@0: if(Settings["MiniMapButton"] == true) then madcatzinc@4: CyborgMMO_MiniMapFrameButton:Show() madcatzinc@0: else madcatzinc@4: CyborgMMO_MiniMapFrameButton:Hide() madcatzinc@0: end madcatzinc@4: local data = CyborgMMO_GetSaveData() madcatzinc@0: data["Settings"] = Settings madcatzinc@0: end madcatzinc@0: