Mercurial > wow > cyborg-mmo7
view CyborgMMO7.lua @ 1:a4e2eaf9cad9
Initial Fixes for ticket 1: Added a menu to the interface options page to allow the syncing of the addon to the mouse profile. This should resolve i8n issues
author | madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09 |
---|---|
date | Wed, 23 May 2012 08:26:07 +0000 |
parents | bf9220814fb5 |
children | d186f8cd5000 |
line wrap: on
line source
--~ Warcraft Plugin for Cyborg MMO7 --~ Filename: CyborgMMO7.lua --~ Description: Plugin entry point, String tables and other generic crap that I could not think to put anywhere else. --~ Copyright (C) 2012 Mad Catz Inc. --~ Author: Christopher Hooks --~ This program is free software; you can redistribute it and/or --~ modify it under the terms of the GNU General Public License --~ as published by the Free Software Foundation; either version 2 --~ of the License, or (at your option) any later version. --~ This program is distributed in the hope that it will be useful, --~ but WITHOUT ANY WARRANTY; without even the implied warranty of --~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --~ GNU General Public License for more details. --~ You should have received a copy of the GNU General Public License --~ along with this program; if not, write to the Free Software --~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. function LoadStrings(self) self:SetText(StringTable[self:GetName()]); end local VarsLoaded = false; local EnteredWorld = false; local LoadBinding = false; local SaveName = GetRealmName().."_"..UnitName("player"); local Settings = nil; function CyborgMiniMapButton_Reposition(pos) CyborgMiniMapFrame:SetPoint("TOPLEFT", "Minimap", "TOPLEFT", 52-(80*cos(pos)), (80*sin(pos))-52) end function CyborgMiniMapButton_OnUpdate() local xpos,ypos = GetCursorPosition() local xmin,ymin = Minimap:GetLeft(), Minimap:GetBottom() xpos = (xmin)-(xpos / UIParent:GetScale()) ypos = (ypos/ UIParent:GetScale())-(ymin) local degrees = math.deg(math.atan2(ypos,xpos)); while(degrees < 0) do degrees = degrees + 360; end CyborgMiniMapButton_Reposition(degrees) end function MouseModeChange(mode) local MiniMapTexture = getglobal("CyborgMiniMapButton_Icon") local MiniMapGlowTexture = getglobal("CyborgMiniMapButton_IconGlow") local OpenButtonTexture = getglobal("OpenButtonPage".."OpenMainForm"):GetNormalTexture(); local OpenButtonGlowTexture = getglobal("OpenButtonPage".."OpenMainForm"):GetHighlightTexture(); if(1==mode) then MiniMapTexture:SetVertexColor(1,0,0,1) --MiniMapGlowTexture:SetVertexColor(1,0.26,0.26,.75); OpenButtonTexture:SetVertexColor(1,0,0,0.75); --OpenButtonGlowTexture:SetVertexColor(1,0.26,0.26,0.50); elseif(2==mode) then MiniMapTexture:SetVertexColor(0.07,0.22,1,1) MiniMapGlowTexture:SetVertexColor(0.13,0.56,1,.75); OpenButtonTexture:SetVertexColor(0.07,0.22,1,0.75); OpenButtonGlowTexture:SetVertexColor(0.13,0.56,1,0.5); elseif(3==mode) then MiniMapTexture:SetVertexColor(0.52,0.08,0.89,1) MiniMapGlowTexture:SetVertexColor(0.67,0.31,0.85,.75); OpenButtonTexture:SetVertexColor(0.52,0.08,0.89,0.75); OpenButtonGlowTexture:SetVertexColor(0.67,0.31,0.85,0.5); end end function LoadWowCommands() if (ProfileKeyBindings == nil) then ProfileKeyBindings = {} ProfileKeyBindings = InternationalWowCommands[GetLocale()] end WowCommands = ProfileKeyBindings end function GetSaveData() if(VarsLoaded) then if (CyborgMMO7SaveData == nil) then CyborgMMO7SaveData = {}; CyborgMMO7SaveData[SaveName] = {} end LoadWowCommands() return CyborgMMO7SaveData[SaveName]; end return nil; end function SetSaveData(data, index) if(VarsLoaded) then GetSaveData()[index] = data ProfileKeyBindings = WowCommands end end function Event(self, event, ...) if(event == "VARIABLES_LOADED") then VarsLoaded = true; elseif(event == "PLAYER_ENTERING_WORLD") then EnteredWorld = true; elseif(event == "PLAYER_ENTER_COMBAT") then msg("PLAYER_ENTER_COMBAT"); Close(); elseif(event == nil) then msg("Event is nil"); else msg("Event is " + event); end -- Fire Loading if and only if the player is in the world and vars are loaded if(false == LoadBinding) then if(VarsLoaded) then if(EnteredWorld) then local data = GetSaveData() RatPageModel.Instance().LoadData(); LoadBinding = true; ShowMacroFrame(); HideUIPanel(MacroFrame); SetupModeCallbacks(1); SetupModeCallbacks(2); SetupModeCallbacks(3); --Reload Slider values: if(nil == data["Settings"]) then data["Settings"] = {} data["Settings"]["Cyborg"] = 0.75; data["Settings"]["Plugin"] = 0.75; data["Settings"]["MiniMapButton"] = true; data["Settings"]["CyborgButton"] = true; end Settings = data["Settings"]; CyborgSizeSlider:SetValue(Settings["Cyborg"]); SetOpenButtonSize(Settings["Cyborg"]) PluginSizeSlider:SetValue(Settings["Plugin"]); SetMainPageSize(Settings["Plugin"]); if(Settings["MiniMapButton"] == false) then CyborgMiniMapButton:Hide(); end local xmin,ymin = Minimap:GetLeft(), Minimap:GetBottom() CyborgMiniMapButton_Reposition(math.deg(math.atan2(ymin,xmin))) -- Close the main window for now Close(); end end end end function SetDefaultSettings() OpenButtonPageOpenMainForm:ClearAllPoints(); MainPage:ClearAllPoints(); OpenButtonPageOpenMainForm:SetPoint("LEFT", UIParent, "LEFT", 0, 0); MainPage:SetPoint("LEFT", UIParent, "LEFT", 0, 0); SetOpenButtonSize(0.75); SetMainPageSize(0.75); MiniMapButton:SetChecked(); SetMiniMapButton(true); CyborgButton:SetChecked(); SetCyborgHeadButton(true); end function SetupModeCallbacks(modeNum) fn = function() MouseModeChange(modeNum); RatPageModel.Instance().SetMode(modeNum) end local buttonFrame, parentFrame, name = CallbackFactory.Instance().AddCallback(fn); if(1 ~= SetOverrideBindingClick(parentFrame, true, Mode[modeNum], name, "LeftButton")) then msg("Failed to Bind modeChange"); end end function Loaded() MainPage:RegisterEvent("VARIABLES_LOADED"); MainPage:RegisterEvent("PLAYER_ENTERING_WORLD"); MainPage:RegisterEvent("PLAYER_ENTER_COMBAT"); end function Close() MainPage:Hide(); if(Settings["CyborgButton"] == true) then OpenButtonPage:Show(); end end function Open() MainPage:Show(); RatQuickPage:Hide(); if(Settings["CyborgButton"] == true) then OpenButtonPage:Show(); end end function IsOpen() if(MainPage:IsVisible() == 1) then return true; else return false; end end function Toggle() if(IsOpen()) then Close(); else Open(); end end function msg(m) local id, name = GetChannelName("Debug"); SendChatMessage(m, "CHANNEL", nil, id); end function SetMainPageSize(percent) if(VarsLoaded) then if(EnteredWorld) then MainPage:SetScale(percent); Settings["Plugin"] = percent; local data = GetSaveData() data["Settings"] = Settings PluginSizeSlider:SetValue(percent); end end end function SetOpenButtonSize(percent) if(VarsLoaded) then if(EnteredWorld) then OpenButtonPage:SetScale(percent) Settings["Cyborg"] = percent; local data = GetSaveData() data["Settings"] = Settings CyborgSizeSlider:SetValue(percent); end end end function SetCyborgHeadButton(boolVal) Settings["CyborgButton"] = boolVal; if(Settings["CyborgButton"] == true) then Close(); else OpenButtonPage:Hide(); end local data = GetSaveData() data["Settings"] = Settings end function SetMiniMapButton(boolVal) Settings["MiniMapButton"] = boolVal; if(Settings["MiniMapButton"] == true) then CyborgMiniMapButton:Show(); else CyborgMiniMapButton:Hide(); end local data = GetSaveData() data["Settings"] = Settings end