madcatzinc@13: --~ 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@4: function CyborgMMO_LoadStrings(self) madcatzinc@15: -- CyborgMMO_DPrint("LoadStrings("..self:GetName()..") = "..CyborgMMO_StringTable[self:GetName()]) madcatzinc@13: self:SetText(CyborgMMO_StringTable[self:GetName()]) madcatzinc@0: end madcatzinc@0: madcatzinc@13: local CyborgMMO_VarsLoaded = false madcatzinc@13: local CyborgMMO_EnteredWorld = false madcatzinc@13: local CyborgMMO_LoadBinding = false madcatzinc@13: local CyborgMMO_SaveName = GetRealmName().."_"..UnitName("player") madcatzinc@13: local CyborgMMO_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@13: 52 - (80 * cos(pos)), madcatzinc@13: (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@13: local degrees = math.deg(math.atan2(ypos, xpos)) madcatzinc@0: madcatzinc@13: while degrees < 0 do madcatzinc@13: degrees = degrees + 360 madcatzinc@0: end 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@13: local OpenButtonTexture = getglobal("CyborgMMO_OpenButtonPage".."OpenMainForm"):GetNormalTexture() madcatzinc@13: local OpenButtonGlowTexture = getglobal("CyborgMMO_OpenButtonPage".."OpenMainForm"):GetHighlightTexture() madcatzinc@13: if mode == 1 then madcatzinc@0: MiniMapTexture:SetVertexColor(1,0,0,1) madcatzinc@13: -- MiniMapGlowTexture:SetVertexColor(1,0.26,0.26,.75) madcatzinc@13: OpenButtonTexture:SetVertexColor(1,0,0,0.75) madcatzinc@13: -- OpenButtonGlowTexture:SetVertexColor(1,0.26,0.26,0.50) madcatzinc@13: elseif mode == 2 then madcatzinc@0: MiniMapTexture:SetVertexColor(0.07,0.22,1,1) madcatzinc@13: MiniMapGlowTexture:SetVertexColor(0.13,0.56,1,.75) madcatzinc@13: OpenButtonTexture:SetVertexColor(0.07,0.22,1,0.75) madcatzinc@13: OpenButtonGlowTexture:SetVertexColor(0.13,0.56,1,0.5) madcatzinc@13: elseif mode == 3 then madcatzinc@0: MiniMapTexture:SetVertexColor(0.52,0.08,0.89,1) madcatzinc@13: MiniMapGlowTexture:SetVertexColor(0.67,0.31,0.85,.75) madcatzinc@13: OpenButtonTexture:SetVertexColor(0.52,0.08,0.89,0.75) madcatzinc@13: OpenButtonGlowTexture:SetVertexColor(0.67,0.31,0.85,0.5) madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_LoadWowCommands() madcatzinc@13: if not CyborgMMO_ProfileKeyBindings then madcatzinc@9: CyborgMMO_ProfileKeyBindings = CyborgMMO_DefaultWowCommands madcatzinc@1: end madcatzinc@13: CyborgMMO_WowCommands = CyborgMMO_ProfileKeyBindings madcatzinc@1: end madcatzinc@1: madcatzinc@4: function CyborgMMO_GetSaveData() madcatzinc@13: if CyborgMMO_VarsLoaded then madcatzinc@13: if not CyborgMMO7SaveData then madcatzinc@13: CyborgMMO7SaveData = {} madcatzinc@5: CyborgMMO7SaveData[CyborgMMO_SaveName] = {} madcatzinc@0: end madcatzinc@4: CyborgMMO_LoadWowCommands() madcatzinc@13: return CyborgMMO7SaveData[CyborgMMO_SaveName] madcatzinc@0: end madcatzinc@13: return nil madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_SetSaveData(data, index) madcatzinc@13: if CyborgMMO_VarsLoaded then madcatzinc@4: CyborgMMO_GetSaveData()[index] = data madcatzinc@5: CyborgMMO_ProfileKeyBindings = CyborgMMO_WowCommands madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_Event(self, event, ...) madcatzinc@13: if event == "VARIABLES_LOADED" then madcatzinc@13: CyborgMMO_VarsLoaded = true madcatzinc@13: elseif event == "PLAYER_ENTERING_WORLD" then madcatzinc@13: CyborgMMO_EnteredWorld = true madcatzinc@13: elseif event == "PLAYER_ENTER_COMBAT" then madcatzinc@15: CyborgMMO_DPrint("PLAYER_ENTER_COMBAT") madcatzinc@13: CyborgMMO_Close() madcatzinc@0: else madcatzinc@15: CyborgMMO_DPrint("Event is "..tostring(event)) madcatzinc@13: end madcatzinc@0: madcatzinc@0: -- Fire Loading if and only if the player is in the world and vars are loaded madcatzinc@13: if not CyborgMMO_LoadBinding then madcatzinc@13: if CyborgMMO_VarsLoaded then madcatzinc@13: if CyborgMMO_EnteredWorld then madcatzinc@4: local data = CyborgMMO_GetSaveData() madcatzinc@0: madcatzinc@18: CyborgMMO_RatPageModel:LoadData() madcatzinc@13: CyborgMMO_LoadBinding = true madcatzinc@0: madcatzinc@13: ShowMacroFrame() madcatzinc@13: HideUIPanel(MacroFrame) madcatzinc@0: madcatzinc@0: madcatzinc@13: CyborgMMO_SetupModeCallbacks(1) madcatzinc@13: CyborgMMO_SetupModeCallbacks(2) madcatzinc@13: CyborgMMO_SetupModeCallbacks(3) madcatzinc@0: madcatzinc@0: madcatzinc@0: --Reload Slider values: madcatzinc@13: if not data["Settings"] then madcatzinc@0: data["Settings"] = {} madcatzinc@13: data["Settings"]["Cyborg"] = 0.75 madcatzinc@13: data["Settings"]["Plugin"] = 0.75 madcatzinc@13: data["Settings"]["MiniMapButton"] = true madcatzinc@13: data["Settings"]["CyborgButton"] = true madcatzinc@0: end madcatzinc@0: madcatzinc@13: CyborgMMO_Settings = data["Settings"] madcatzinc@0: madcatzinc@13: CyborgMMO_OptionPageCyborgSizeSlider:SetValue(CyborgMMO_Settings["Cyborg"]) madcatzinc@5: CyborgMMO_SetOpenButtonSize(CyborgMMO_Settings["Cyborg"]) madcatzinc@13: CyborgMMO_OptionPagePluginSizeSlider:SetValue(CyborgMMO_Settings["Plugin"]) madcatzinc@13: CyborgMMO_SetMainPageSize(CyborgMMO_Settings["Plugin"]) madcatzinc@13: madcatzinc@5: CyborgMMO_SetMiniMapButton(CyborgMMO_Settings["MiniMapButton"]) madcatzinc@5: CyborgMMO_SetCyborgHeadButton(CyborgMMO_Settings["CyborgButton"]) madcatzinc@0: madcatzinc@13: local xmin,ymin = Minimap:GetLeft(),Minimap:GetBottom() madcatzinc@13: CyborgMMO_MiniMapButtonReposition(math.deg(math.atan2(ymin, xmin))) madcatzinc@0: -- Close the main window for now madcatzinc@13: CyborgMMO_Close() madcatzinc@0: end madcatzinc@0: end madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_SetDefaultSettings() madcatzinc@13: CyborgMMO_OpenButtonPageOpenMainForm:ClearAllPoints() madcatzinc@13: CyborgMMO_MainPage:ClearAllPoints() madcatzinc@13: CyborgMMO_OpenButtonPageOpenMainForm:SetPoint("LEFT", UIParent, "LEFT", 0, 0) madcatzinc@13: CyborgMMO_MainPage:SetPoint("LEFT", UIParent, "LEFT", 0, 0) madcatzinc@0: madcatzinc@13: CyborgMMO_SetOpenButtonSize(0.75) madcatzinc@13: CyborgMMO_SetMainPageSize(0.75) madcatzinc@13: CyborgMMO_SetMiniMapButton(true) madcatzinc@13: CyborgMMO_SetCyborgHeadButton(true) madcatzinc@0: end madcatzinc@0: madcatzinc@0: madcatzinc@4: function CyborgMMO_SetupModeCallbacks(modeNum) madcatzinc@0: fn = function() madcatzinc@13: CyborgMMO_MouseModeChange(modeNum) madcatzinc@18: CyborgMMO_RatPageModel:SetMode(modeNum) madcatzinc@0: end madcatzinc@0: madcatzinc@13: local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(fn) madcatzinc@16: SetOverrideBindingClick(parentFrame, true, CyborgMMO_Mode[modeNum], name, "LeftButton") madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_Loaded() madcatzinc@13: CyborgMMO_MainPage:RegisterEvent("VARIABLES_LOADED") madcatzinc@13: CyborgMMO_MainPage:RegisterEvent("PLAYER_ENTERING_WORLD") madcatzinc@13: CyborgMMO_MainPage:RegisterEvent("PLAYER_ENTER_COMBAT") madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_Close() madcatzinc@13: CyborgMMO_MainPage:Hide() madcatzinc@13: if CyborgMMO_Settings["CyborgButton"] then madcatzinc@13: CyborgMMO_OpenButtonPage:Show() madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_Open() madcatzinc@13: CyborgMMO_MainPage:Show() madcatzinc@13: CyborgMMO_RatQuickPage:Hide() madcatzinc@13: if CyborgMMO_Settings["CyborgButton"] then madcatzinc@13: CyborgMMO_OpenButtonPage:Show() madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_IsOpen() madcatzinc@13: if CyborgMMO_MainPage:IsVisible() == 1 then madcatzinc@13: return true madcatzinc@0: else madcatzinc@13: return false madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_Toggle() madcatzinc@13: if CyborgMMO_IsOpen() then madcatzinc@13: CyborgMMO_Close() madcatzinc@0: else madcatzinc@13: CyborgMMO_Open() madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@15: function CyborgMMO_GetDebugFrame() madcatzinc@15: for i=1,NUM_CHAT_WINDOWS do madcatzinc@15: local windowName = GetChatWindowInfo(i); madcatzinc@15: if windowName == "Debug" then madcatzinc@15: return getglobal("ChatFrame" .. i) madcatzinc@15: end madcatzinc@15: end madcatzinc@15: end madcatzinc@15: madcatzinc@15: local log_prefix = "|cffff6666".."CyborgMMO".."|r:" madcatzinc@15: madcatzinc@15: function CyborgMMO_DPrint(...) madcatzinc@15: local debugframe = CyborgMMO_GetDebugFrame() madcatzinc@15: if debugframe then madcatzinc@15: local t = {log_prefix, ...} madcatzinc@15: for i=1,select('#', ...)+1 do madcatzinc@15: t[i] = tostring(t[i]) madcatzinc@15: end madcatzinc@15: debugframe:AddMessage(table.concat(t, ' ')) madcatzinc@15: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_SetMainPageSize(percent) madcatzinc@13: if CyborgMMO_VarsLoaded then madcatzinc@13: if CyborgMMO_EnteredWorld then madcatzinc@13: CyborgMMO_MainPage:SetScale(percent) madcatzinc@13: CyborgMMO_Settings["Plugin"] = percent madcatzinc@4: local data = CyborgMMO_GetSaveData() madcatzinc@5: data["Settings"] = CyborgMMO_Settings madcatzinc@13: CyborgMMO_OptionPagePluginSizeSlider:SetValue(percent) madcatzinc@0: end madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_SetOpenButtonSize(percent) madcatzinc@13: if CyborgMMO_VarsLoaded then madcatzinc@13: if CyborgMMO_EnteredWorld then madcatzinc@4: CyborgMMO_OpenButtonPage:SetScale(percent) madcatzinc@13: CyborgMMO_Settings["Cyborg"] = percent madcatzinc@4: local data = CyborgMMO_GetSaveData() madcatzinc@5: data["Settings"] = CyborgMMO_Settings madcatzinc@13: CyborgMMO_OptionPageCyborgSizeSlider:SetValue(percent) madcatzinc@0: end madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_SetCyborgHeadButton(boolVal) madcatzinc@13: CyborgMMO_Settings["CyborgButton"] = boolVal madcatzinc@13: CyborgMMO_OptionPageCyborgButton:SetChecked(boolVal) madcatzinc@13: if CyborgMMO_Settings["CyborgButton"] then madcatzinc@13: CyborgMMO_Close() madcatzinc@0: else madcatzinc@13: CyborgMMO_OpenButtonPage:Hide() madcatzinc@0: end madcatzinc@4: local data = CyborgMMO_GetSaveData() madcatzinc@5: data["Settings"] = CyborgMMO_Settings madcatzinc@0: end madcatzinc@0: madcatzinc@4: function CyborgMMO_SetMiniMapButton(boolVal) madcatzinc@5: CyborgMMO_Settings["MiniMapButton"] = boolVal madcatzinc@4: CyborgMMO_OptionPageMiniMapButton:SetChecked(boolVal) madcatzinc@13: if CyborgMMO_Settings["MiniMapButton"] then madcatzinc@4: CyborgMMO_MiniMapFrameButton:Show() madcatzinc@0: else madcatzinc@4: CyborgMMO_MiniMapFrameButton:Hide() madcatzinc@0: end madcatzinc@4: local data = CyborgMMO_GetSaveData() madcatzinc@5: data["Settings"] = CyborgMMO_Settings madcatzinc@0: end madcatzinc@0: