Mercurial > wow > cyborg-mmo7
comparison RatPageModel.lua @ 18:cccc7661a2e6
Simplified the Rat page model and controller object models.
author | madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09 |
---|---|
date | Thu, 25 Apr 2013 01:30:11 +0000 |
parents | 80192bc4a108 |
children | b7074b47cfc7 |
comparison
equal
deleted
inserted
replaced
17:e4dec2d465f5 | 18:cccc7661a2e6 |
---|---|
25 SHIFT = 0, | 25 SHIFT = 0, |
26 } | 26 } |
27 | 27 |
28 local MIDDLEMOUSE = 1 | 28 local MIDDLEMOUSE = 1 |
29 | 29 |
30 CyborgMMO_RatPageModel = { | 30 ------------------------------------------------------------------------------ |
31 new = function() | |
32 local self = {} | |
33 self.m_Mode = 1 | |
34 self.ObserverCount = 0 | |
35 self.ObserverList = {} | |
36 self.Data = {} | |
37 | 31 |
38 for i=1,RAT7.MODES do | 32 local RatPageModel_methods = {} |
39 self.Data[i] = {} | 33 local RatPageModel_mt = {__index=RatPageModel_methods} |
40 for j=1,RAT7.BUTTONS do | 34 |
41 self.Data[i][j] = {} | 35 local function RatPageModel() |
36 local self = {} | |
37 self.mode = 1 | |
38 self.observers = {} | |
39 self.data = {} | |
40 | |
41 for i=1,RAT7.MODES do | |
42 self.data[i] = {} | |
43 for j=1,RAT7.BUTTONS do | |
44 self.data[i][j] = {} | |
45 end | |
46 end | |
47 | |
48 setmetatable(self, RatPageModel_mt) | |
49 | |
50 return self | |
51 end | |
52 | |
53 function RatPageModel_methods:InitSaveData(data) | |
54 for i=1,RAT7.MODES do | |
55 if not data["Rat"][i] then | |
56 data["Rat"][i] = {} | |
57 end | |
58 for j=1,RAT7.BUTTONS do | |
59 if not data["Rat"][i][j] then | |
60 data["Rat"][i][j] = {} | |
42 end | 61 end |
43 end | 62 end |
63 end | |
64 end | |
44 | 65 |
45 self.InitSaveData = function(data) | 66 function RatPageModel_methods:LoadData() |
46 for i=1,RAT7.MODES do | 67 CyborgMMO_DPrint("Loading...") |
47 if not data["Rat"][i] then | 68 local data = CyborgMMO_GetSaveData() |
48 data["Rat"][i] = {} | 69 |
49 end | 70 if not data["Rat"] then |
50 for j=1,RAT7.BUTTONS do | 71 data["Rat"] = {} |
51 if not data["Rat"][i][j] then | 72 self:InitSaveData(data) |
52 data["Rat"][i][j] = {} | 73 end |
53 end | 74 |
75 self.data = data["Rat"] | |
76 if data then | |
77 for mode=1,RAT7.MODES do | |
78 for button=1,RAT7.BUTTONS do | |
79 if self.data[mode][button] then | |
80 local object = CyborgMMO_WowObject.Create(self.data[mode][button].Type, self.data[mode][button].Detail, self.data[mode][button].Subdetail) | |
81 self:SetObjectOnButtonNoUpdate(button, mode, object) | |
82 else | |
83 local object = CyborgMMO_WowObject.Create("", "", "") | |
84 self:SetObjectOnButtonNoUpdate(button, mode, object) | |
85 self.data[mode][button] = object | |
54 end | 86 end |
55 end | 87 end |
56 end | 88 end |
89 self:UpdateObservers() | |
90 end | |
91 end | |
57 | 92 |
58 self.LoadData = function() | 93 function RatPageModel_methods:SaveData() |
59 CyborgMMO_DPrint("Loading...") | 94 CyborgMMO_DPrint("Saving...") |
60 local data = CyborgMMO_GetSaveData() | 95 CyborgMMO_SetSaveData(self.data, "Rat") |
96 end | |
61 | 97 |
62 if not data["Rat"] then | 98 function RatPageModel_methods:SetMode(mode) |
63 data["Rat"] = {} | 99 self.mode = mode |
64 self.InitSaveData(data) | 100 self:UpdateObservers() |
65 end | 101 end |
66 | 102 |
67 self.Data = data["Rat"] | 103 function RatPageModel_methods:GetMode() |
68 if data then | 104 return self.mode |
69 for mode=1,RAT7.MODES do | 105 end |
70 for button=1,RAT7.BUTTONS do | 106 |
71 if self.Data[mode][button] then | 107 function RatPageModel_methods:GetData() |
72 local object = CyborgMMO_WowObject.Create(self.Data[mode][button].Type, self.Data[mode][button].Detail, self.Data[mode][button].Subdetail) | 108 return self.data,self.mode |
73 self.SetObjectOnButtonNoUpdate(button, mode, object) | 109 end |
74 else | 110 |
75 local object = CyborgMMO_WowObject.Create("", "", "") | 111 function RatPageModel_methods:GetObjectOnButton(button) |
76 self.SetObjectOnButtonNoUpdate(button, mode, object) | 112 if not self.data[self.mode][button] then |
77 self.Data[mode][button] = object | 113 return nil |
78 end | 114 else |
79 end | 115 return self.data[self.mode][button] |
80 end | 116 end |
81 self.UpdateObservers() | 117 end |
82 end | 118 |
119 function RatPageModel_methods:SetObjectOnButtonNoUpdate(button, mode, object) | |
120 -- CyborgMMO_DPrint("button = "..tostring(button).." mode = "..tostring(mode)) | |
121 self.data[mode][button] = object | |
122 | |
123 if object then | |
124 object.SetBinding(CyborgMMO_WowCommands[((mode-1)*RAT7.BUTTONS)+button]) | |
125 if("callback" == object.Type) then | |
126 CyborgMMO_DPrint("trying to set texture") | |
127 local slot = getglobal("CyborgMMO_MainPageSlotListSlot"..button) | |
128 slot:SetNormalTexture(object.Texture) | |
83 end | 129 end |
130 else | |
131 CyborgMMO_DPrint("clearing "..button) | |
132 CyborgMMO_WowObject.ClearBinding(CyborgMMO_WowCommands[((mode-1)*RAT7.BUTTONS)+button]) | |
133 end | |
134 end | |
84 | 135 |
85 self.SaveData = function() | 136 function RatPageModel_methods:SetObjectOnButton(button, mode, object) |
86 CyborgMMO_DPrint("Saving...") | 137 self:SetObjectOnButtonNoUpdate(button, mode, object) |
87 CyborgMMO_SetSaveData(self.Data, "Rat") | 138 self:UpdateObservers() |
88 end | 139 end |
89 | 140 |
90 self.SetMode = function(mode) | 141 function RatPageModel_methods:AddObserver(view) |
91 self.m_Mode = mode | 142 table.insert(self.observers, view) |
92 self.UpdateObservers() | 143 end |
93 end | |
94 | 144 |
95 self.GetMode = function() | 145 function RatPageModel_methods:GetAllObservers() |
96 return self.m_Mode | 146 return self.observers |
97 end | 147 end |
98 | 148 |
99 self.GetData = function() | 149 function RatPageModel_methods:UpdateObservers() |
100 return self.Data,self.m_Mode | 150 for i=1,#self.observers do |
101 end | 151 self.observers[i].Update(self.data, self.mode) |
152 end | |
153 self:SaveData() | |
154 end | |
102 | 155 |
103 self.GetObjectOnButton = function(button) | 156 ------------------------------------------------------------------------------ |
104 if not self.Data[self.m_Mode][button] then | |
105 return nil | |
106 else | |
107 return self.Data[self.m_Mode][button] | |
108 end | |
109 end | |
110 | 157 |
111 self.SetObjectOnButtonNoUpdate = function(button, mode, object) | 158 CyborgMMO_RatPageModel = RatPageModel() |
112 -- CyborgMMO_DPrint("button = "..tostring(button).." mode = "..tostring(mode)) | |
113 self.Data[mode][button] = object | |
114 | 159 |
115 if object then | |
116 object.SetBinding(CyborgMMO_WowCommands[((mode-1)*RAT7.BUTTONS)+button]) | |
117 if("callback" == object.Type) then | |
118 CyborgMMO_DPrint("trying to set texture") | |
119 local slot = getglobal("CyborgMMO_MainPageSlotListSlot"..button) | |
120 slot:SetNormalTexture(object.Texture) | |
121 end | |
122 else | |
123 CyborgMMO_DPrint("clearing "..button) | |
124 CyborgMMO_WowObject.ClearBinding(CyborgMMO_WowCommands[((mode-1)*RAT7.BUTTONS)+button]) | |
125 end | |
126 end | |
127 | |
128 self.SetObjectOnButton = function(button, mode, object) | |
129 self.SetObjectOnButtonNoUpdate(button, mode, object) | |
130 self.UpdateObservers() | |
131 end | |
132 | |
133 self.AddObserver = function(view) | |
134 table.insert(self.ObserverList, view) | |
135 self.observerCount = #self.ObserverList | |
136 end | |
137 | |
138 self.GetAllObservers = function() | |
139 return self.ObserverList | |
140 end | |
141 | |
142 self.UpdateObservers = function() | |
143 for i=1,#self.ObserverList do | |
144 self.ObserverList[i].Update(self.Data, self.m_Mode) | |
145 end | |
146 self.SaveData() | |
147 end | |
148 | |
149 return self | |
150 end, | |
151 | |
152 m_Instance = nil, | |
153 | |
154 Instance = function() | |
155 if not CyborgMMO_RatPageModel.m_Instance then | |
156 CyborgMMO_RatPageModel.m_Instance = CyborgMMO_RatPageModel.new() | |
157 end | |
158 return CyborgMMO_RatPageModel.m_Instance | |
159 end, | |
160 } | |
161 |