comparison RatPageModel.lua @ 51:fb81254bd7b8

Clarified the distinction between data (what is actually saved) and the objects (which store the data, but also have methods and other attributes).
author madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09
date Fri, 03 May 2013 23:24:04 +0000
parents ce4ddefb68c2
children da98db8191f5
comparison
equal deleted inserted replaced
50:7cbd32de1fdd 51:fb81254bd7b8
34 34
35 local function RatPageModel() 35 local function RatPageModel()
36 local self = {} 36 local self = {}
37 self.mode = 1 37 self.mode = 1
38 self.observers = {} 38 self.observers = {}
39 self.data = {} 39 self.objects = {}
40 40
41 for i=1,RAT7.MODES do 41 for mode=1,RAT7.MODES do
42 self.data[i] = {} 42 self.objects[mode] = {}
43 for j=1,RAT7.BUTTONS do
44 self.data[i][j] = {}
45 end
46 end 43 end
47 44
48 setmetatable(self, RatPageModel_mt) 45 setmetatable(self, RatPageModel_mt)
49 46
50 return self 47 return self
51 end 48 end
52 49
53 function RatPageModel_methods:InitSaveData(data) 50 function RatPageModel_methods:LoadData()
54 for i=1,RAT7.MODES do 51 CyborgMMO_DPrint("Loading...")
55 if not data["Rat"][i] then 52 local data = CyborgMMO_GetRatSaveData()
56 data["Rat"][i] = {} 53 for mode=1,RAT7.MODES do
57 end 54 for button=1,RAT7.BUTTONS do
58 for j=1,RAT7.BUTTONS do 55 local buttonData = data and data[mode] and data[mode][button]
59 if not data["Rat"][i][j] then 56 if buttonData and buttonData.type then
60 data["Rat"][i][j] = {} 57 local object = CyborgMMO_CreateWowObject(buttonData.type, buttonData.detail, buttonData.subdetail)
58 self:SetObjectOnButtonNoUpdate(button, mode, object)
59 else
60 self:SetObjectOnButtonNoUpdate(button, mode, nil)
61 end 61 end
62 end 62 end
63 end 63 end
64 end 64 self:UpdateObservers()
65
66 function RatPageModel_methods:LoadData()
67 CyborgMMO_DPrint("Loading...")
68 local data = CyborgMMO_GetSaveData()
69
70 if not data["Rat"] then
71 data["Rat"] = {}
72 self:InitSaveData(data)
73 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 local data = self.data[mode][button]
80 if data and data.type then
81 local object = CyborgMMO_CreateWowObject(data.type, data.detail, data.subdetail)
82 self:SetObjectOnButtonNoUpdate(button, mode, object)
83 else
84 self:SetObjectOnButtonNoUpdate(button, mode, nil)
85 end
86 end
87 end
88 self:UpdateObservers()
89 end
90 end 65 end
91 66
92 function RatPageModel_methods:SaveData() 67 function RatPageModel_methods:SaveData()
93 CyborgMMO_DPrint("Saving...") 68 CyborgMMO_DPrint("Saving...")
94 CyborgMMO_SetRatSaveData(self.data) 69 CyborgMMO_SetRatSaveData(self.objects)
95 end 70 end
96 71
97 function RatPageModel_methods:SetMode(mode) 72 function RatPageModel_methods:SetMode(mode)
98 self.mode = mode 73 self.mode = mode
99 self:UpdateObservers() 74 self:UpdateObservers()
101 76
102 function RatPageModel_methods:GetMode() 77 function RatPageModel_methods:GetMode()
103 return self.mode 78 return self.mode
104 end 79 end
105 80
106 function RatPageModel_methods:GetData()
107 return self.data,self.mode
108 end
109
110 function RatPageModel_methods:GetObjectOnButton(button) 81 function RatPageModel_methods:GetObjectOnButton(button)
111 if not self.data[self.mode][button] then 82 if not self.objects[self.mode][button] then
112 return nil 83 return nil
113 else 84 else
114 return self.data[self.mode][button] 85 return self.objects[self.mode][button]
115 end 86 end
116 end 87 end
117 88
118 function RatPageModel_methods:SetObjectOnButtonNoUpdate(button, mode, object) 89 function RatPageModel_methods:SetObjectOnButtonNoUpdate(button, mode, object)
119 -- CyborgMMO_DPrint("button = "..tostring(button).." mode = "..tostring(mode)) 90 -- CyborgMMO_DPrint("button = "..tostring(button).." mode = "..tostring(mode))
120 self.data[mode][button] = object 91 self.objects[mode][button] = object
121 92
122 if object then 93 if object then
123 object:SetBinding(CyborgMMO_ProfileKeyBindings[((mode-1)*RAT7.BUTTONS)+button]) 94 object:SetBinding(CyborgMMO_ProfileKeyBindings[((mode-1)*RAT7.BUTTONS)+button])
124 if "callback" == object.type then 95 if "callback" == object.type then
125 CyborgMMO_DPrint("trying to set texture") 96 CyborgMMO_DPrint("trying to set texture")
147 return self.observers 118 return self.observers
148 end 119 end
149 120
150 function RatPageModel_methods:UpdateObservers() 121 function RatPageModel_methods:UpdateObservers()
151 for i=1,#self.observers do 122 for i=1,#self.observers do
152 self.observers[i].Update(self.data, self.mode) 123 self.observers[i].Update(self.objects, self.mode)
153 end 124 end
154 self:SaveData() 125 self:SaveData()
155 end 126 end
156 127
157 ------------------------------------------------------------------------------ 128 ------------------------------------------------------------------------------