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
|