Mercurial > wow > cyborg-mmo7
diff 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 |
line wrap: on
line diff
--- a/RatPageModel.lua Thu Apr 25 01:30:05 2013 +0000 +++ b/RatPageModel.lua Thu Apr 25 01:30:11 2013 +0000 @@ -27,135 +27,133 @@ local MIDDLEMOUSE = 1 -CyborgMMO_RatPageModel = { - new = function() - local self = {} - self.m_Mode = 1 - self.ObserverCount = 0 - self.ObserverList = {} - self.Data = {} +------------------------------------------------------------------------------ - for i=1,RAT7.MODES do - self.Data[i] = {} - for j=1,RAT7.BUTTONS do - self.Data[i][j] = {} +local RatPageModel_methods = {} +local RatPageModel_mt = {__index=RatPageModel_methods} + +local function RatPageModel() + local self = {} + self.mode = 1 + self.observers = {} + self.data = {} + + for i=1,RAT7.MODES do + self.data[i] = {} + for j=1,RAT7.BUTTONS do + self.data[i][j] = {} + end + end + + setmetatable(self, RatPageModel_mt) + + 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] = {} end end + end +end - self.InitSaveData = function(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] = {} - 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 + if self.data[mode][button] then + local object = CyborgMMO_WowObject.Create(self.data[mode][button].Type, self.data[mode][button].Detail, self.data[mode][button].Subdetail) + self:SetObjectOnButtonNoUpdate(button, mode, object) + else + local object = CyborgMMO_WowObject.Create("", "", "") + self:SetObjectOnButtonNoUpdate(button, mode, object) + self.data[mode][button] = object end end end + self:UpdateObservers() + end +end - self.LoadData = function() - CyborgMMO_DPrint("Loading...") - local data = CyborgMMO_GetSaveData() +function RatPageModel_methods:SaveData() + CyborgMMO_DPrint("Saving...") + CyborgMMO_SetSaveData(self.data, "Rat") +end - if not data["Rat"] then - data["Rat"] = {} - self.InitSaveData(data) - end +function RatPageModel_methods:SetMode(mode) + self.mode = mode + self:UpdateObservers() +end - self.Data = data["Rat"] - if data then - for mode=1,RAT7.MODES do - for button=1,RAT7.BUTTONS do - if self.Data[mode][button] then - local object = CyborgMMO_WowObject.Create(self.Data[mode][button].Type, self.Data[mode][button].Detail, self.Data[mode][button].Subdetail) - self.SetObjectOnButtonNoUpdate(button, mode, object) - else - local object = CyborgMMO_WowObject.Create("", "", "") - self.SetObjectOnButtonNoUpdate(button, mode, object) - self.Data[mode][button] = object - end - end - end - self.UpdateObservers() - end +function RatPageModel_methods:GetMode() + 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 + return nil + else + return self.data[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 + + if object then + object.SetBinding(CyborgMMO_WowCommands[((mode-1)*RAT7.BUTTONS)+button]) + if("callback" == object.Type) then + CyborgMMO_DPrint("trying to set texture") + local slot = getglobal("CyborgMMO_MainPageSlotListSlot"..button) + slot:SetNormalTexture(object.Texture) end + else + CyborgMMO_DPrint("clearing "..button) + CyborgMMO_WowObject.ClearBinding(CyborgMMO_WowCommands[((mode-1)*RAT7.BUTTONS)+button]) + end +end - self.SaveData = function() - CyborgMMO_DPrint("Saving...") - CyborgMMO_SetSaveData(self.Data, "Rat") - end +function RatPageModel_methods:SetObjectOnButton(button, mode, object) + self:SetObjectOnButtonNoUpdate(button, mode, object) + self:UpdateObservers() +end - self.SetMode = function(mode) - self.m_Mode = mode - self.UpdateObservers() - end +function RatPageModel_methods:AddObserver(view) + table.insert(self.observers, view) +end - self.GetMode = function() - return self.m_Mode - end +function RatPageModel_methods:GetAllObservers() + return self.observers +end - self.GetData = function() - return self.Data,self.m_Mode - end +function RatPageModel_methods:UpdateObservers() + for i=1,#self.observers do + self.observers[i].Update(self.data, self.mode) + end + self:SaveData() +end - self.GetObjectOnButton = function(button) - if not self.Data[self.m_Mode][button] then - return nil - else - return self.Data[self.m_Mode][button] - end - end +------------------------------------------------------------------------------ - self.SetObjectOnButtonNoUpdate = function(button, mode, object) - -- CyborgMMO_DPrint("button = "..tostring(button).." mode = "..tostring(mode)) - self.Data[mode][button] = object +CyborgMMO_RatPageModel = RatPageModel() - if object then - object.SetBinding(CyborgMMO_WowCommands[((mode-1)*RAT7.BUTTONS)+button]) - if("callback" == object.Type) then - CyborgMMO_DPrint("trying to set texture") - local slot = getglobal("CyborgMMO_MainPageSlotListSlot"..button) - slot:SetNormalTexture(object.Texture) - end - else - CyborgMMO_DPrint("clearing "..button) - CyborgMMO_WowObject.ClearBinding(CyborgMMO_WowCommands[((mode-1)*RAT7.BUTTONS)+button]) - end - end - - self.SetObjectOnButton = function(button, mode, object) - self.SetObjectOnButtonNoUpdate(button, mode, object) - self.UpdateObservers() - end - - self.AddObserver = function(view) - table.insert(self.ObserverList, view) - self.observerCount = #self.ObserverList - end - - self.GetAllObservers = function() - return self.ObserverList - end - - self.UpdateObservers = function() - for i=1,#self.ObserverList do - self.ObserverList[i].Update(self.Data, self.m_Mode) - end - self.SaveData() - end - - return self - end, - - m_Instance = nil, - - Instance = function() - if not CyborgMMO_RatPageModel.m_Instance then - CyborgMMO_RatPageModel.m_Instance = CyborgMMO_RatPageModel.new() - end - return CyborgMMO_RatPageModel.m_Instance - end, -} -