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 ------------------------------------------------------------------------------ |
