madcatzinc@0
|
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@0
|
22 local RAT7 = { BUTTONS = 13, MODES = 3, SHIFT = 0}
|
madcatzinc@0
|
23
|
madcatzinc@0
|
24 local MIDDLEMOUSE = 1;
|
madcatzinc@0
|
25
|
madcatzinc@4
|
26 CyborgMMO_RatPageModel = {
|
madcatzinc@0
|
27 new = function()
|
madcatzinc@0
|
28 local self = {}
|
madcatzinc@0
|
29 self.m_Mode = 1;
|
madcatzinc@0
|
30 self.ObserverCount = 0;
|
madcatzinc@0
|
31 self.ObserverList = {}
|
madcatzinc@0
|
32 self.Data = {}
|
madcatzinc@0
|
33
|
madcatzinc@0
|
34 for i = 1,RAT7.MODES do
|
madcatzinc@0
|
35 self.Data[i] = {}
|
madcatzinc@0
|
36 for j = 1, RAT7.BUTTONS do
|
madcatzinc@0
|
37 self.Data[i][j] = {};
|
madcatzinc@0
|
38 end
|
madcatzinc@0
|
39 end
|
madcatzinc@0
|
40
|
madcatzinc@0
|
41 self.InitSaveData = function(data)
|
madcatzinc@0
|
42 for i = 1,RAT7.MODES do
|
madcatzinc@0
|
43 if (nil == data["Rat"][i]) then
|
madcatzinc@0
|
44 data["Rat"][i] = {}
|
madcatzinc@0
|
45 end
|
madcatzinc@0
|
46 for j = 1, RAT7.BUTTONS do
|
madcatzinc@0
|
47 if (nil == data["Rat"][i][j]) then
|
madcatzinc@0
|
48 data["Rat"][i][j] = {}
|
madcatzinc@0
|
49 end
|
madcatzinc@0
|
50 end
|
madcatzinc@0
|
51 end
|
madcatzinc@0
|
52 end
|
madcatzinc@0
|
53
|
madcatzinc@0
|
54
|
madcatzinc@0
|
55 self.LoadData = function()
|
madcatzinc@0
|
56 msg("Loading...")
|
madcatzinc@4
|
57 local data = CyborgMMO_GetSaveData();
|
madcatzinc@0
|
58
|
madcatzinc@0
|
59
|
madcatzinc@0
|
60 if (nil == data["Rat"]) then
|
madcatzinc@0
|
61 data["Rat"] = {}
|
madcatzinc@0
|
62 self.InitSaveData(data);
|
madcatzinc@0
|
63 end
|
madcatzinc@0
|
64
|
madcatzinc@0
|
65 self.Data = data["Rat"]
|
madcatzinc@0
|
66 if(data ~= nil) then
|
madcatzinc@0
|
67 for mode = 1,RAT7.MODES do
|
madcatzinc@0
|
68 for button = 1, RAT7.BUTTONS do
|
madcatzinc@0
|
69 if(self.Data[mode][button] ~= nil) then
|
madcatzinc@4
|
70 object = CyborgMMO_WowObject.Create(self.Data[mode][button].Type, self.Data[mode][button].Detail, self.Data[mode][button].Subdetail);
|
madcatzinc@0
|
71 self.SetObjectOnButtonNoUpdate(button, mode, object);
|
madcatzinc@0
|
72 else
|
madcatzinc@4
|
73 object = CyborgMMO_WowObject.Create("", "", "");
|
madcatzinc@0
|
74 self.SetObjectOnButtonNoUpdate(button, mode, object);
|
madcatzinc@0
|
75 self.Data[mode][button] = object;
|
madcatzinc@0
|
76 end
|
madcatzinc@0
|
77 end
|
madcatzinc@0
|
78 end
|
madcatzinc@0
|
79 self.UpdateObservers();
|
madcatzinc@0
|
80 end
|
madcatzinc@0
|
81 end
|
madcatzinc@0
|
82
|
madcatzinc@0
|
83 self.SaveData = function()
|
madcatzinc@0
|
84 msg("Saving...")
|
madcatzinc@4
|
85 CyborgMMO_SetSaveData(self.Data, "Rat");
|
madcatzinc@0
|
86 end
|
madcatzinc@0
|
87
|
madcatzinc@0
|
88 self.SetMode = function(mode)
|
madcatzinc@0
|
89 self.m_Mode = mode;
|
madcatzinc@0
|
90 self.UpdateObservers();
|
madcatzinc@0
|
91 end
|
madcatzinc@0
|
92
|
madcatzinc@0
|
93 self.GetMode = function()
|
madcatzinc@0
|
94 return self.m_Mode;
|
madcatzinc@0
|
95 end
|
madcatzinc@0
|
96
|
madcatzinc@0
|
97 self.GetData = function()
|
madcatzinc@0
|
98 return self.Data, self.m_Mode;
|
madcatzinc@0
|
99 end
|
madcatzinc@0
|
100
|
madcatzinc@0
|
101 self.GetObjectOnButton = function(button)
|
madcatzinc@0
|
102 if(nil == self.Data[self.m_Mode][button]) then
|
madcatzinc@0
|
103 return nil;
|
madcatzinc@0
|
104 else
|
madcatzinc@0
|
105 return self.Data[self.m_Mode][button]
|
madcatzinc@0
|
106 end
|
madcatzinc@0
|
107 end
|
madcatzinc@0
|
108
|
madcatzinc@0
|
109 self.SetObjectOnButtonNoUpdate = function(button, mode, object)
|
madcatzinc@0
|
110 --msg("button = "..tostring(button).." mode = "..tostring(mode))
|
madcatzinc@0
|
111 self.Data[mode][button] = object;
|
madcatzinc@0
|
112
|
madcatzinc@0
|
113 if(nil ~= object) then
|
madcatzinc@1
|
114 object.SetBinding(WowCommands[((mode-1)*RAT7.BUTTONS)+button]);
|
madcatzinc@0
|
115 if("callback" == object.Type) then
|
madcatzinc@0
|
116 msg("trying to set texture")
|
madcatzinc@4
|
117 local slot = getglobal("CyborgMMO_MainPageSlotListSlot"..button);
|
madcatzinc@0
|
118 slot:SetNormalTexture(object.Texture)
|
madcatzinc@0
|
119 end
|
madcatzinc@0
|
120 else
|
madcatzinc@0
|
121 msg("clearing "..button)
|
madcatzinc@4
|
122 CyborgMMO_WowObject.ClearBinding(WowCommands[((mode-1)*RAT7.BUTTONS)+button])
|
madcatzinc@0
|
123 end
|
madcatzinc@0
|
124 end
|
madcatzinc@0
|
125
|
madcatzinc@0
|
126 self.SetObjectOnButton = function(button, mode, object)
|
madcatzinc@0
|
127 self.SetObjectOnButtonNoUpdate(button, mode, object);
|
madcatzinc@0
|
128 self.UpdateObservers()
|
madcatzinc@0
|
129 end
|
madcatzinc@0
|
130
|
madcatzinc@0
|
131 self.AddObserver = function(view)
|
madcatzinc@0
|
132 table.insert(self.ObserverList,view)
|
madcatzinc@0
|
133 self.observerCount = # self.ObserverList
|
madcatzinc@0
|
134 end
|
madcatzinc@0
|
135
|
madcatzinc@0
|
136 self.GetAllObservers = function()
|
madcatzinc@0
|
137 return self.ObserverList;
|
madcatzinc@0
|
138 end
|
madcatzinc@0
|
139
|
madcatzinc@0
|
140 self.UpdateObservers = function()
|
madcatzinc@0
|
141 for i = 1, (# self.ObserverList) do
|
madcatzinc@0
|
142 self.ObserverList[i].Update(self.Data, self.m_Mode)
|
madcatzinc@0
|
143 end
|
madcatzinc@0
|
144 self.SaveData()
|
madcatzinc@0
|
145 end
|
madcatzinc@0
|
146 return self;
|
madcatzinc@0
|
147 end,
|
madcatzinc@0
|
148
|
madcatzinc@0
|
149 m_Instance = nil,
|
madcatzinc@0
|
150
|
madcatzinc@0
|
151 Instance = function()
|
madcatzinc@4
|
152 if(nil == CyborgMMO_RatPageModel.m_Instance) then
|
madcatzinc@4
|
153 CyborgMMO_RatPageModel.m_Instance = CyborgMMO_RatPageModel.new();
|
madcatzinc@0
|
154 end
|
madcatzinc@4
|
155 return CyborgMMO_RatPageModel.m_Instance;
|
madcatzinc@0
|
156 end
|
madcatzinc@0
|
157 }
|