Mercurial > wow > cyborg-mmo7
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 ------------------------------------------------------------------------------ |