annotate RatPageModel.lua @ 13:6cb9a2936580

Miscellanous Lua code consistency improvements: - no semicolon except between statements on same line - use of implicit cast to bool in if/while conditions, instead of various eq/neq against true, false or nil - no parenthesis around if/while conditions (C-ism) - avoid long function calls in if conditions - removed space in comma-separated expressions lists in multiple assignments - added spaces between arguments of functions calls - use tabs for indentation (in Lua files only) - don't reverse == in if conditions, like "if 42==foo then" (C-ism) - removed some extra parenthesis in complex expressions (C-ism) - added spaces around operators in most expressions for ease of reading - added comma after last element of table initializers - removed space after # operator - moved comment prefix of disabled code into tab (to keep disabled code aligned)
author madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09
date Thu, 25 Apr 2013 01:29:45 +0000
parents 8428fa7cf0e4
children 9f2d838d4f8e
rev   line source
madcatzinc@13 1 --~ Warcraft Plugin for Cyborg MMO7
madcatzinc@0 2 --~ Filename: RatPageModel.lua
madcatzinc@0 3 --~ Description: Code model of the MMO7 mouse
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 -- Constants --
madcatzinc@0 21
madcatzinc@13 22 local RAT7 = {
madcatzinc@13 23 BUTTONS = 13,
madcatzinc@13 24 MODES = 3,
madcatzinc@13 25 SHIFT = 0,
madcatzinc@13 26 }
madcatzinc@0 27
madcatzinc@13 28 local MIDDLEMOUSE = 1
madcatzinc@0 29
madcatzinc@4 30 CyborgMMO_RatPageModel = {
madcatzinc@0 31 new = function()
madcatzinc@13 32 local self = {}
madcatzinc@13 33 self.m_Mode = 1
madcatzinc@13 34 self.ObserverCount = 0
madcatzinc@0 35 self.ObserverList = {}
madcatzinc@0 36 self.Data = {}
madcatzinc@0 37
madcatzinc@13 38 for i=1,RAT7.MODES do
madcatzinc@0 39 self.Data[i] = {}
madcatzinc@13 40 for j=1,RAT7.BUTTONS do
madcatzinc@13 41 self.Data[i][j] = {}
madcatzinc@0 42 end
madcatzinc@0 43 end
madcatzinc@0 44
madcatzinc@0 45 self.InitSaveData = function(data)
madcatzinc@13 46 for i=1,RAT7.MODES do
madcatzinc@13 47 if not data["Rat"][i] then
madcatzinc@0 48 data["Rat"][i] = {}
madcatzinc@0 49 end
madcatzinc@13 50 for j=1,RAT7.BUTTONS do
madcatzinc@13 51 if not data["Rat"][i][j] then
madcatzinc@0 52 data["Rat"][i][j] = {}
madcatzinc@0 53 end
madcatzinc@0 54 end
madcatzinc@0 55 end
madcatzinc@0 56 end
madcatzinc@0 57
madcatzinc@0 58 self.LoadData = function()
madcatzinc@0 59 msg("Loading...")
madcatzinc@13 60 local data = CyborgMMO_GetSaveData()
madcatzinc@0 61
madcatzinc@13 62 if not data["Rat"] then
madcatzinc@0 63 data["Rat"] = {}
madcatzinc@13 64 self.InitSaveData(data)
madcatzinc@0 65 end
madcatzinc@0 66
madcatzinc@0 67 self.Data = data["Rat"]
madcatzinc@13 68 if data then
madcatzinc@13 69 for mode=1,RAT7.MODES do
madcatzinc@13 70 for button=1,RAT7.BUTTONS do
madcatzinc@13 71 if self.Data[mode][button] then
madcatzinc@13 72 object = CyborgMMO_WowObject.Create(self.Data[mode][button].Type, self.Data[mode][button].Detail, self.Data[mode][button].Subdetail)
madcatzinc@13 73 self.SetObjectOnButtonNoUpdate(button, mode, object)
madcatzinc@0 74 else
madcatzinc@13 75 object = CyborgMMO_WowObject.Create("", "", "")
madcatzinc@13 76 self.SetObjectOnButtonNoUpdate(button, mode, object)
madcatzinc@13 77 self.Data[mode][button] = object
madcatzinc@0 78 end
madcatzinc@0 79 end
madcatzinc@0 80 end
madcatzinc@13 81 self.UpdateObservers()
madcatzinc@0 82 end
madcatzinc@0 83 end
madcatzinc@0 84
madcatzinc@0 85 self.SaveData = function()
madcatzinc@0 86 msg("Saving...")
madcatzinc@13 87 CyborgMMO_SetSaveData(self.Data, "Rat")
madcatzinc@0 88 end
madcatzinc@0 89
madcatzinc@0 90 self.SetMode = function(mode)
madcatzinc@13 91 self.m_Mode = mode
madcatzinc@13 92 self.UpdateObservers()
madcatzinc@0 93 end
madcatzinc@0 94
madcatzinc@0 95 self.GetMode = function()
madcatzinc@13 96 return self.m_Mode
madcatzinc@0 97 end
madcatzinc@0 98
madcatzinc@0 99 self.GetData = function()
madcatzinc@13 100 return self.Data,self.m_Mode
madcatzinc@0 101 end
madcatzinc@0 102
madcatzinc@0 103 self.GetObjectOnButton = function(button)
madcatzinc@13 104 if not self.Data[self.m_Mode][button] then
madcatzinc@13 105 return nil
madcatzinc@0 106 else
madcatzinc@0 107 return self.Data[self.m_Mode][button]
madcatzinc@0 108 end
madcatzinc@0 109 end
madcatzinc@0 110
madcatzinc@0 111 self.SetObjectOnButtonNoUpdate = function(button, mode, object)
madcatzinc@13 112 -- msg("button = "..tostring(button).." mode = "..tostring(mode))
madcatzinc@13 113 self.Data[mode][button] = object
madcatzinc@0 114
madcatzinc@13 115 if object then
madcatzinc@13 116 object.SetBinding(CyborgMMO_WowCommands[((mode-1)*RAT7.BUTTONS)+button])
madcatzinc@0 117 if("callback" == object.Type) then
madcatzinc@0 118 msg("trying to set texture")
madcatzinc@13 119 local slot = getglobal("CyborgMMO_MainPageSlotListSlot"..button)
madcatzinc@0 120 slot:SetNormalTexture(object.Texture)
madcatzinc@0 121 end
madcatzinc@0 122 else
madcatzinc@0 123 msg("clearing "..button)
madcatzinc@5 124 CyborgMMO_WowObject.ClearBinding(CyborgMMO_WowCommands[((mode-1)*RAT7.BUTTONS)+button])
madcatzinc@0 125 end
madcatzinc@0 126 end
madcatzinc@0 127
madcatzinc@0 128 self.SetObjectOnButton = function(button, mode, object)
madcatzinc@13 129 self.SetObjectOnButtonNoUpdate(button, mode, object)
madcatzinc@0 130 self.UpdateObservers()
madcatzinc@0 131 end
madcatzinc@0 132
madcatzinc@0 133 self.AddObserver = function(view)
madcatzinc@13 134 table.insert(self.ObserverList, view)
madcatzinc@13 135 self.observerCount = #self.ObserverList
madcatzinc@0 136 end
madcatzinc@13 137
madcatzinc@0 138 self.GetAllObservers = function()
madcatzinc@13 139 return self.ObserverList
madcatzinc@0 140 end
madcatzinc@0 141
madcatzinc@0 142 self.UpdateObservers = function()
madcatzinc@13 143 for i=1,#self.ObserverList do
madcatzinc@0 144 self.ObserverList[i].Update(self.Data, self.m_Mode)
madcatzinc@0 145 end
madcatzinc@0 146 self.SaveData()
madcatzinc@0 147 end
madcatzinc@13 148
madcatzinc@13 149 return self
madcatzinc@0 150 end,
madcatzinc@0 151
madcatzinc@0 152 m_Instance = nil,
madcatzinc@0 153
madcatzinc@0 154 Instance = function()
madcatzinc@13 155 if not CyborgMMO_RatPageModel.m_Instance then
madcatzinc@13 156 CyborgMMO_RatPageModel.m_Instance = CyborgMMO_RatPageModel.new()
madcatzinc@0 157 end
madcatzinc@13 158 return CyborgMMO_RatPageModel.m_Instance
madcatzinc@13 159 end,
madcatzinc@0 160 }
madcatzinc@13 161