# HG changeset patch # User madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09 # Date 1367623444 0 # Node ID fb81254bd7b8c4a5f64c66d7a6297e102e3adb93 # Parent 7cbd32de1fdda82b5a15d27374ae473357d31052 Clarified the distinction between data (what is actually saved) and the objects (which store the data, but also have methods and other attributes). diff -r 7cbd32de1fdd -r fb81254bd7b8 CyborgMMO7.lua --- a/CyborgMMO7.lua Fri May 03 23:23:58 2013 +0000 +++ b/CyborgMMO7.lua Fri May 03 23:24:04 2013 +0000 @@ -92,18 +92,22 @@ return CyborgMMO7SaveData end -function CyborgMMO_SetRatSaveData(data) +function CyborgMMO_SetRatSaveData(objects) assert(VarsLoaded) - local saveData = {} + local data = {} for mode=1,RAT7.MODES do - saveData[mode] = {} + data[mode] = {} for button=1,RAT7.BUTTONS do - if data[mode][button] then - saveData[mode][button] = data[mode][button]:SaveData() + if objects[mode][button] then + data[mode][button] = objects[mode][button]:SaveData() end end end - CyborgMMO_GetSaveData().Rat = saveData + CyborgMMO_GetSaveData().Rat = data +end + +function CyborgMMO_GetRatSaveData() + return CyborgMMO_GetSaveData().Rat end local function GetSpellID(name) diff -r 7cbd32de1fdd -r fb81254bd7b8 RatPageModel.lua --- a/RatPageModel.lua Fri May 03 23:23:58 2013 +0000 +++ b/RatPageModel.lua Fri May 03 23:24:04 2013 +0000 @@ -36,13 +36,10 @@ local self = {} self.mode = 1 self.observers = {} - self.data = {} + self.objects = {} - for i=1,RAT7.MODES do - self.data[i] = {} - for j=1,RAT7.BUTTONS do - self.data[i][j] = {} - end + for mode=1,RAT7.MODES do + self.objects[mode] = {} end setmetatable(self, RatPageModel_mt) @@ -50,48 +47,26 @@ return self end -function RatPageModel_methods:InitSaveData(data) - for i=1,RAT7.MODES do - if not data["Rat"][i] then - data["Rat"][i] = {} - end - for j=1,RAT7.BUTTONS do - if not data["Rat"][i][j] then - data["Rat"][i][j] = {} +function RatPageModel_methods:LoadData() + CyborgMMO_DPrint("Loading...") + local data = CyborgMMO_GetRatSaveData() + for mode=1,RAT7.MODES do + for button=1,RAT7.BUTTONS do + local buttonData = data and data[mode] and data[mode][button] + if buttonData and buttonData.type then + local object = CyborgMMO_CreateWowObject(buttonData.type, buttonData.detail, buttonData.subdetail) + self:SetObjectOnButtonNoUpdate(button, mode, object) + else + self:SetObjectOnButtonNoUpdate(button, mode, nil) end end end -end - -function RatPageModel_methods:LoadData() - CyborgMMO_DPrint("Loading...") - local data = CyborgMMO_GetSaveData() - - if not data["Rat"] then - data["Rat"] = {} - self:InitSaveData(data) - end - - self.data = data["Rat"] - if data then - for mode=1,RAT7.MODES do - for button=1,RAT7.BUTTONS do - local data = self.data[mode][button] - if data and data.type then - local object = CyborgMMO_CreateWowObject(data.type, data.detail, data.subdetail) - self:SetObjectOnButtonNoUpdate(button, mode, object) - else - self:SetObjectOnButtonNoUpdate(button, mode, nil) - end - end - end - self:UpdateObservers() - end + self:UpdateObservers() end function RatPageModel_methods:SaveData() CyborgMMO_DPrint("Saving...") - CyborgMMO_SetRatSaveData(self.data) + CyborgMMO_SetRatSaveData(self.objects) end function RatPageModel_methods:SetMode(mode) @@ -103,21 +78,17 @@ return self.mode end -function RatPageModel_methods:GetData() - return self.data,self.mode -end - function RatPageModel_methods:GetObjectOnButton(button) - if not self.data[self.mode][button] then + if not self.objects[self.mode][button] then return nil else - return self.data[self.mode][button] + return self.objects[self.mode][button] end end function RatPageModel_methods:SetObjectOnButtonNoUpdate(button, mode, object) -- CyborgMMO_DPrint("button = "..tostring(button).." mode = "..tostring(mode)) - self.data[mode][button] = object + self.objects[mode][button] = object if object then object:SetBinding(CyborgMMO_ProfileKeyBindings[((mode-1)*RAT7.BUTTONS)+button]) @@ -149,7 +120,7 @@ function RatPageModel_methods:UpdateObservers() for i=1,#self.observers do - self.observers[i].Update(self.data, self.mode) + self.observers[i].Update(self.objects, self.mode) end self:SaveData() end