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@18
|
80 local object = CyborgMMO_WowObject.Create(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@18
|
83 local object = CyborgMMO_WowObject.Create("", "", "")
|
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@18
|
124 object.SetBinding(CyborgMMO_WowCommands[((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@18
|
132 CyborgMMO_WowObject.ClearBinding(CyborgMMO_WowCommands[((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
|