annotate RatPageModel.lua @ 29:e8a004a4177b

Merged the ProfileKeyBindings and WowCommands variables (they were pointing at the same value).
author madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09
date Thu, 25 Apr 2013 01:31:06 +0000
parents b7074b47cfc7
children 6ce173840e68
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@18 30 ------------------------------------------------------------------------------
madcatzinc@0 31
madcatzinc@18 32 local RatPageModel_methods = {}
madcatzinc@18 33 local RatPageModel_mt = {__index=RatPageModel_methods}
madcatzinc@18 34
madcatzinc@18 35 local function RatPageModel()
madcatzinc@18 36 local self = {}
madcatzinc@18 37 self.mode = 1
madcatzinc@18 38 self.observers = {}
madcatzinc@18 39 self.data = {}
madcatzinc@18 40
madcatzinc@18 41 for i=1,RAT7.MODES do
madcatzinc@18 42 self.data[i] = {}
madcatzinc@18 43 for j=1,RAT7.BUTTONS do
madcatzinc@18 44 self.data[i][j] = {}
madcatzinc@18 45 end
madcatzinc@18 46 end
madcatzinc@18 47
madcatzinc@18 48 setmetatable(self, RatPageModel_mt)
madcatzinc@18 49
madcatzinc@18 50 return self
madcatzinc@18 51 end
madcatzinc@18 52
madcatzinc@18 53 function RatPageModel_methods:InitSaveData(data)
madcatzinc@18 54 for i=1,RAT7.MODES do
madcatzinc@18 55 if not data["Rat"][i] then
madcatzinc@18 56 data["Rat"][i] = {}
madcatzinc@18 57 end
madcatzinc@18 58 for j=1,RAT7.BUTTONS do
madcatzinc@18 59 if not data["Rat"][i][j] then
madcatzinc@18 60 data["Rat"][i][j] = {}
madcatzinc@0 61 end
madcatzinc@0 62 end
madcatzinc@18 63 end
madcatzinc@18 64 end
madcatzinc@0 65
madcatzinc@18 66 function RatPageModel_methods:LoadData()
madcatzinc@18 67 CyborgMMO_DPrint("Loading...")
madcatzinc@18 68 local data = CyborgMMO_GetSaveData()
madcatzinc@18 69
madcatzinc@18 70 if not data["Rat"] then
madcatzinc@18 71 data["Rat"] = {}
madcatzinc@18 72 self:InitSaveData(data)
madcatzinc@18 73 end
madcatzinc@18 74
madcatzinc@18 75 self.data = data["Rat"]
madcatzinc@18 76 if data then
madcatzinc@18 77 for mode=1,RAT7.MODES do
madcatzinc@18 78 for button=1,RAT7.BUTTONS do
madcatzinc@18 79 if self.data[mode][button] then
madcatzinc@25 80 local object = CyborgMMO_CreateWowObject(self.data[mode][button].Type, self.data[mode][button].Detail, self.data[mode][button].Subdetail)
madcatzinc@18 81 self:SetObjectOnButtonNoUpdate(button, mode, object)
madcatzinc@18 82 else
madcatzinc@25 83 local object = CyborgMMO_CreateWowObject("", "", "")
madcatzinc@18 84 self:SetObjectOnButtonNoUpdate(button, mode, object)
madcatzinc@18 85 self.data[mode][button] = object
madcatzinc@0 86 end
madcatzinc@0 87 end
madcatzinc@0 88 end
madcatzinc@18 89 self:UpdateObservers()
madcatzinc@18 90 end
madcatzinc@18 91 end
madcatzinc@0 92
madcatzinc@18 93 function RatPageModel_methods:SaveData()
madcatzinc@18 94 CyborgMMO_DPrint("Saving...")
madcatzinc@18 95 CyborgMMO_SetSaveData(self.data, "Rat")
madcatzinc@18 96 end
madcatzinc@0 97
madcatzinc@18 98 function RatPageModel_methods:SetMode(mode)
madcatzinc@18 99 self.mode = mode
madcatzinc@18 100 self:UpdateObservers()
madcatzinc@18 101 end
madcatzinc@0 102
madcatzinc@18 103 function RatPageModel_methods:GetMode()
madcatzinc@18 104 return self.mode
madcatzinc@18 105 end
madcatzinc@18 106
madcatzinc@18 107 function RatPageModel_methods:GetData()
madcatzinc@18 108 return self.data,self.mode
madcatzinc@18 109 end
madcatzinc@18 110
madcatzinc@18 111 function RatPageModel_methods:GetObjectOnButton(button)
madcatzinc@18 112 if not self.data[self.mode][button] then
madcatzinc@18 113 return nil
madcatzinc@18 114 else
madcatzinc@18 115 return self.data[self.mode][button]
madcatzinc@18 116 end
madcatzinc@18 117 end
madcatzinc@18 118
madcatzinc@18 119 function RatPageModel_methods:SetObjectOnButtonNoUpdate(button, mode, object)
madcatzinc@18 120 -- CyborgMMO_DPrint("button = "..tostring(button).." mode = "..tostring(mode))
madcatzinc@18 121 self.data[mode][button] = object
madcatzinc@18 122
madcatzinc@18 123 if object then
madcatzinc@29 124 object:SetBinding(CyborgMMO_ProfileKeyBindings[((mode-1)*RAT7.BUTTONS)+button])
madcatzinc@18 125 if("callback" == object.Type) then
madcatzinc@18 126 CyborgMMO_DPrint("trying to set texture")
madcatzinc@18 127 local slot = getglobal("CyborgMMO_MainPageSlotListSlot"..button)
madcatzinc@18 128 slot:SetNormalTexture(object.Texture)
madcatzinc@0 129 end
madcatzinc@18 130 else
madcatzinc@18 131 CyborgMMO_DPrint("clearing "..button)
madcatzinc@29 132 CyborgMMO_ClearBinding(CyborgMMO_ProfileKeyBindings[((mode-1)*RAT7.BUTTONS)+button])
madcatzinc@18 133 end
madcatzinc@18 134 end
madcatzinc@0 135
madcatzinc@18 136 function RatPageModel_methods:SetObjectOnButton(button, mode, object)
madcatzinc@18 137 self:SetObjectOnButtonNoUpdate(button, mode, object)
madcatzinc@18 138 self:UpdateObservers()
madcatzinc@18 139 end
madcatzinc@0 140
madcatzinc@18 141 function RatPageModel_methods:AddObserver(view)
madcatzinc@18 142 table.insert(self.observers, view)
madcatzinc@18 143 end
madcatzinc@0 144
madcatzinc@18 145 function RatPageModel_methods:GetAllObservers()
madcatzinc@18 146 return self.observers
madcatzinc@18 147 end
madcatzinc@0 148
madcatzinc@18 149 function RatPageModel_methods:UpdateObservers()
madcatzinc@18 150 for i=1,#self.observers do
madcatzinc@18 151 self.observers[i].Update(self.data, self.mode)
madcatzinc@18 152 end
madcatzinc@18 153 self:SaveData()
madcatzinc@18 154 end
madcatzinc@0 155
madcatzinc@18 156 ------------------------------------------------------------------------------
madcatzinc@0 157
madcatzinc@18 158 CyborgMMO_RatPageModel = RatPageModel()
madcatzinc@0 159