annotate 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
rev   line source
madcatzinc@0 1 --~ Warcraft Plugin for Cyborg MMO7
madcatzinc@0 2 --~ Filename: CyborgMMO7.lua
madcatzinc@0 3 --~ Description: Plugin entry point, String tables and other generic crap that I could not think to put anywhere else.
madcatzinc@0 4 --~ Copyright (C) 2012 Mad Catz Inc.
madcatzinc@0 5 --~ Author: Christopher Hooks
madcatzinc@0 6
madcatzinc@0 7 --~ This program is free software; you can redistribute it and/or
madcatzinc@0 8 --~ modify it under the terms of the GNU General Public License
madcatzinc@0 9 --~ as published by the Free Software Foundation; either version 2
madcatzinc@0 10 --~ of the License, or (at your option) any later version.
madcatzinc@0 11
madcatzinc@0 12 --~ This program is distributed in the hope that it will be useful,
madcatzinc@0 13 --~ but WITHOUT ANY WARRANTY; without even the implied warranty of
madcatzinc@0 14 --~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
madcatzinc@0 15 --~ GNU General Public License for more details.
madcatzinc@0 16
madcatzinc@0 17 --~ You should have received a copy of the GNU General Public License
madcatzinc@0 18 --~ along with this program; if not, write to the Free Software
madcatzinc@0 19 --~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
madcatzinc@0 20
madcatzinc@0 21
madcatzinc@0 22
madcatzinc@0 23
madcatzinc@0 24
madcatzinc@0 25 function LoadStrings(self)
madcatzinc@1 26 self:SetText(StringTable[self:GetName()]);
madcatzinc@0 27 end
madcatzinc@0 28
madcatzinc@0 29 local VarsLoaded = false;
madcatzinc@0 30 local EnteredWorld = false;
madcatzinc@0 31 local LoadBinding = false;
madcatzinc@0 32 local SaveName = GetRealmName().."_"..UnitName("player");
madcatzinc@0 33 local Settings = nil;
madcatzinc@0 34
madcatzinc@0 35
madcatzinc@0 36 function CyborgMiniMapButton_Reposition(pos)
madcatzinc@0 37 CyborgMiniMapFrame:SetPoint("TOPLEFT",
madcatzinc@0 38 "Minimap",
madcatzinc@0 39 "TOPLEFT",
madcatzinc@0 40 52-(80*cos(pos)),
madcatzinc@0 41 (80*sin(pos))-52)
madcatzinc@0 42 end
madcatzinc@0 43
madcatzinc@0 44
madcatzinc@0 45 function CyborgMiniMapButton_OnUpdate()
madcatzinc@0 46
madcatzinc@0 47 local xpos,ypos = GetCursorPosition()
madcatzinc@0 48 local xmin,ymin = Minimap:GetLeft(), Minimap:GetBottom()
madcatzinc@0 49
madcatzinc@0 50 xpos = (xmin)-(xpos / UIParent:GetScale())
madcatzinc@0 51 ypos = (ypos/ UIParent:GetScale())-(ymin)
madcatzinc@0 52
madcatzinc@0 53 local degrees = math.deg(math.atan2(ypos,xpos));
madcatzinc@0 54
madcatzinc@0 55 while(degrees < 0) do
madcatzinc@0 56 degrees = degrees + 360;
madcatzinc@0 57 end
madcatzinc@0 58
madcatzinc@0 59
madcatzinc@0 60 CyborgMiniMapButton_Reposition(degrees)
madcatzinc@0 61 end
madcatzinc@0 62
madcatzinc@0 63 function MouseModeChange(mode)
madcatzinc@0 64 local MiniMapTexture = getglobal("CyborgMiniMapButton_Icon")
madcatzinc@0 65 local MiniMapGlowTexture = getglobal("CyborgMiniMapButton_IconGlow")
madcatzinc@0 66 local OpenButtonTexture = getglobal("OpenButtonPage".."OpenMainForm"):GetNormalTexture();
madcatzinc@0 67 local OpenButtonGlowTexture = getglobal("OpenButtonPage".."OpenMainForm"):GetHighlightTexture();
madcatzinc@0 68 if(1==mode) then
madcatzinc@0 69 MiniMapTexture:SetVertexColor(1,0,0,1)
madcatzinc@0 70 --MiniMapGlowTexture:SetVertexColor(1,0.26,0.26,.75);
madcatzinc@0 71 OpenButtonTexture:SetVertexColor(1,0,0,0.75);
madcatzinc@0 72 --OpenButtonGlowTexture:SetVertexColor(1,0.26,0.26,0.50);
madcatzinc@0 73 elseif(2==mode) then
madcatzinc@0 74 MiniMapTexture:SetVertexColor(0.07,0.22,1,1)
madcatzinc@0 75 MiniMapGlowTexture:SetVertexColor(0.13,0.56,1,.75);
madcatzinc@0 76 OpenButtonTexture:SetVertexColor(0.07,0.22,1,0.75);
madcatzinc@0 77 OpenButtonGlowTexture:SetVertexColor(0.13,0.56,1,0.5);
madcatzinc@0 78 elseif(3==mode) then
madcatzinc@0 79 MiniMapTexture:SetVertexColor(0.52,0.08,0.89,1)
madcatzinc@0 80 MiniMapGlowTexture:SetVertexColor(0.67,0.31,0.85,.75);
madcatzinc@0 81 OpenButtonTexture:SetVertexColor(0.52,0.08,0.89,0.75);
madcatzinc@0 82 OpenButtonGlowTexture:SetVertexColor(0.67,0.31,0.85,0.5);
madcatzinc@0 83 end
madcatzinc@0 84 end
madcatzinc@0 85
madcatzinc@1 86 function LoadWowCommands()
madcatzinc@1 87 if (ProfileKeyBindings == nil) then
madcatzinc@1 88 ProfileKeyBindings = {}
madcatzinc@1 89 ProfileKeyBindings = InternationalWowCommands[GetLocale()]
madcatzinc@1 90 end
madcatzinc@1 91 WowCommands = ProfileKeyBindings
madcatzinc@1 92 end
madcatzinc@1 93
madcatzinc@0 94 function GetSaveData()
madcatzinc@0 95 if(VarsLoaded) then
madcatzinc@0 96 if (CyborgMMO7SaveData == nil) then
madcatzinc@0 97 CyborgMMO7SaveData = {};
madcatzinc@0 98 CyborgMMO7SaveData[SaveName] = {}
madcatzinc@0 99 end
madcatzinc@1 100 LoadWowCommands()
madcatzinc@0 101 return CyborgMMO7SaveData[SaveName];
madcatzinc@0 102 end
madcatzinc@0 103 return nil;
madcatzinc@0 104 end
madcatzinc@0 105
madcatzinc@0 106 function SetSaveData(data, index)
madcatzinc@0 107 if(VarsLoaded) then
madcatzinc@0 108 GetSaveData()[index] = data
madcatzinc@1 109 ProfileKeyBindings = WowCommands
madcatzinc@0 110 end
madcatzinc@0 111 end
madcatzinc@0 112
madcatzinc@0 113 function Event(self, event, ...)
madcatzinc@0 114 if(event == "VARIABLES_LOADED") then
madcatzinc@0 115 VarsLoaded = true;
madcatzinc@0 116 elseif(event == "PLAYER_ENTERING_WORLD") then
madcatzinc@0 117 EnteredWorld = true;
madcatzinc@0 118 elseif(event == "PLAYER_ENTER_COMBAT") then
madcatzinc@0 119 msg("PLAYER_ENTER_COMBAT");
madcatzinc@0 120 Close();
madcatzinc@0 121 elseif(event == nil) then
madcatzinc@0 122 msg("Event is nil");
madcatzinc@0 123 else
madcatzinc@1 124 msg("Event is " + event);
madcatzinc@0 125 end
madcatzinc@0 126
madcatzinc@0 127
madcatzinc@0 128 -- Fire Loading if and only if the player is in the world and vars are loaded
madcatzinc@0 129 if(false == LoadBinding) then
madcatzinc@0 130 if(VarsLoaded) then
madcatzinc@0 131 if(EnteredWorld) then
madcatzinc@0 132 local data = GetSaveData()
madcatzinc@0 133
madcatzinc@0 134 RatPageModel.Instance().LoadData();
madcatzinc@0 135 LoadBinding = true;
madcatzinc@0 136
madcatzinc@0 137 ShowMacroFrame();
madcatzinc@0 138 HideUIPanel(MacroFrame);
madcatzinc@0 139
madcatzinc@0 140
madcatzinc@0 141 SetupModeCallbacks(1);
madcatzinc@0 142 SetupModeCallbacks(2);
madcatzinc@0 143 SetupModeCallbacks(3);
madcatzinc@0 144
madcatzinc@0 145
madcatzinc@0 146 --Reload Slider values:
madcatzinc@0 147 if(nil == data["Settings"]) then
madcatzinc@0 148 data["Settings"] = {}
madcatzinc@0 149 data["Settings"]["Cyborg"] = 0.75;
madcatzinc@0 150 data["Settings"]["Plugin"] = 0.75;
madcatzinc@0 151 data["Settings"]["MiniMapButton"] = true;
madcatzinc@0 152 data["Settings"]["CyborgButton"] = true;
madcatzinc@0 153 end
madcatzinc@0 154
madcatzinc@0 155 Settings = data["Settings"];
madcatzinc@0 156
madcatzinc@0 157 CyborgSizeSlider:SetValue(Settings["Cyborg"]);
madcatzinc@0 158 SetOpenButtonSize(Settings["Cyborg"])
madcatzinc@0 159 PluginSizeSlider:SetValue(Settings["Plugin"]);
madcatzinc@0 160 SetMainPageSize(Settings["Plugin"]);
madcatzinc@0 161
madcatzinc@0 162 if(Settings["MiniMapButton"] == false) then
madcatzinc@0 163 CyborgMiniMapButton:Hide();
madcatzinc@0 164 end
madcatzinc@0 165
madcatzinc@0 166 local xmin,ymin = Minimap:GetLeft(), Minimap:GetBottom()
madcatzinc@0 167 CyborgMiniMapButton_Reposition(math.deg(math.atan2(ymin,xmin)))
madcatzinc@0 168 -- Close the main window for now
madcatzinc@0 169 Close();
madcatzinc@0 170 end
madcatzinc@0 171 end
madcatzinc@0 172 end
madcatzinc@0 173 end
madcatzinc@0 174
madcatzinc@0 175 function SetDefaultSettings()
madcatzinc@0 176 OpenButtonPageOpenMainForm:ClearAllPoints();
madcatzinc@0 177 MainPage:ClearAllPoints();
madcatzinc@0 178 OpenButtonPageOpenMainForm:SetPoint("LEFT", UIParent, "LEFT", 0, 0);
madcatzinc@0 179 MainPage:SetPoint("LEFT", UIParent, "LEFT", 0, 0);
madcatzinc@0 180
madcatzinc@0 181 SetOpenButtonSize(0.75);
madcatzinc@0 182 SetMainPageSize(0.75);
madcatzinc@0 183 MiniMapButton:SetChecked();
madcatzinc@0 184 SetMiniMapButton(true);
madcatzinc@0 185 CyborgButton:SetChecked();
madcatzinc@0 186 SetCyborgHeadButton(true);
madcatzinc@0 187 end
madcatzinc@0 188
madcatzinc@0 189 function SetupModeCallbacks(modeNum)
madcatzinc@0 190
madcatzinc@0 191 fn = function()
madcatzinc@0 192 MouseModeChange(modeNum);
madcatzinc@0 193 RatPageModel.Instance().SetMode(modeNum)
madcatzinc@0 194 end
madcatzinc@0 195
madcatzinc@0 196 local buttonFrame, parentFrame, name = CallbackFactory.Instance().AddCallback(fn);
madcatzinc@1 197 if(1 ~= SetOverrideBindingClick(parentFrame, true, Mode[modeNum], name, "LeftButton")) then
madcatzinc@0 198 msg("Failed to Bind modeChange");
madcatzinc@0 199 end
madcatzinc@0 200 end
madcatzinc@0 201
madcatzinc@0 202 function Loaded()
madcatzinc@0 203 MainPage:RegisterEvent("VARIABLES_LOADED");
madcatzinc@0 204 MainPage:RegisterEvent("PLAYER_ENTERING_WORLD");
madcatzinc@0 205 MainPage:RegisterEvent("PLAYER_ENTER_COMBAT");
madcatzinc@0 206 end
madcatzinc@0 207
madcatzinc@0 208 function Close()
madcatzinc@0 209 MainPage:Hide();
madcatzinc@0 210 if(Settings["CyborgButton"] == true) then
madcatzinc@0 211 OpenButtonPage:Show();
madcatzinc@0 212 end
madcatzinc@0 213 end
madcatzinc@0 214
madcatzinc@0 215 function Open()
madcatzinc@0 216 MainPage:Show();
madcatzinc@0 217 RatQuickPage:Hide();
madcatzinc@0 218 if(Settings["CyborgButton"] == true) then
madcatzinc@0 219 OpenButtonPage:Show();
madcatzinc@0 220 end
madcatzinc@0 221 end
madcatzinc@0 222
madcatzinc@0 223 function IsOpen()
madcatzinc@0 224 if(MainPage:IsVisible() == 1) then
madcatzinc@0 225 return true;
madcatzinc@0 226 else
madcatzinc@0 227 return false;
madcatzinc@0 228 end
madcatzinc@0 229 end
madcatzinc@0 230
madcatzinc@0 231 function Toggle()
madcatzinc@0 232 if(IsOpen()) then
madcatzinc@0 233 Close();
madcatzinc@0 234 else
madcatzinc@0 235 Open();
madcatzinc@0 236 end
madcatzinc@0 237 end
madcatzinc@0 238
madcatzinc@0 239 function msg(m)
madcatzinc@0 240 local id, name = GetChannelName("Debug");
madcatzinc@0 241 SendChatMessage(m, "CHANNEL", nil, id);
madcatzinc@0 242 end
madcatzinc@0 243
madcatzinc@0 244 function SetMainPageSize(percent)
madcatzinc@0 245 if(VarsLoaded) then
madcatzinc@0 246 if(EnteredWorld) then
madcatzinc@0 247 MainPage:SetScale(percent);
madcatzinc@0 248 Settings["Plugin"] = percent;
madcatzinc@0 249 local data = GetSaveData()
madcatzinc@0 250 data["Settings"] = Settings
madcatzinc@0 251 PluginSizeSlider:SetValue(percent);
madcatzinc@0 252 end
madcatzinc@0 253 end
madcatzinc@0 254 end
madcatzinc@0 255
madcatzinc@0 256 function SetOpenButtonSize(percent)
madcatzinc@0 257 if(VarsLoaded) then
madcatzinc@0 258 if(EnteredWorld) then
madcatzinc@0 259 OpenButtonPage:SetScale(percent)
madcatzinc@0 260 Settings["Cyborg"] = percent;
madcatzinc@0 261 local data = GetSaveData()
madcatzinc@0 262 data["Settings"] = Settings
madcatzinc@0 263 CyborgSizeSlider:SetValue(percent);
madcatzinc@0 264 end
madcatzinc@0 265 end
madcatzinc@0 266 end
madcatzinc@0 267
madcatzinc@0 268 function SetCyborgHeadButton(boolVal)
madcatzinc@0 269 Settings["CyborgButton"] = boolVal;
madcatzinc@0 270 if(Settings["CyborgButton"] == true) then
madcatzinc@0 271 Close();
madcatzinc@0 272 else
madcatzinc@0 273 OpenButtonPage:Hide();
madcatzinc@0 274 end
madcatzinc@0 275 local data = GetSaveData()
madcatzinc@0 276 data["Settings"] = Settings
madcatzinc@0 277 end
madcatzinc@0 278
madcatzinc@0 279 function SetMiniMapButton(boolVal)
madcatzinc@0 280 Settings["MiniMapButton"] = boolVal;
madcatzinc@0 281 if(Settings["MiniMapButton"] == true) then
madcatzinc@0 282 CyborgMiniMapButton:Show();
madcatzinc@0 283 else
madcatzinc@0 284 CyborgMiniMapButton:Hide();
madcatzinc@0 285 end
madcatzinc@0 286 local data = GetSaveData()
madcatzinc@0 287 data["Settings"] = Settings
madcatzinc@0 288 end
madcatzinc@0 289