Mercurial > wow > cyborg-mmo7
changeset 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 | e4dec2d465f5 |
children | 33ffeb90b311 |
files | CyborgMMO7.lua OptionView.lua RatPageController.lua RatPageModel.lua RatPageView.lua WowObjects.lua |
diffstat | 6 files changed, 172 insertions(+), 182 deletions(-) [+] |
line wrap: on
line diff
--- a/CyborgMMO7.lua Thu Apr 25 01:30:05 2013 +0000 +++ b/CyborgMMO7.lua Thu Apr 25 01:30:11 2013 +0000 @@ -123,7 +123,7 @@ if CyborgMMO_EnteredWorld then local data = CyborgMMO_GetSaveData() - CyborgMMO_RatPageModel.Instance().LoadData() + CyborgMMO_RatPageModel:LoadData() CyborgMMO_LoadBinding = true ShowMacroFrame() @@ -179,7 +179,7 @@ function CyborgMMO_SetupModeCallbacks(modeNum) fn = function() CyborgMMO_MouseModeChange(modeNum) - CyborgMMO_RatPageModel.Instance().SetMode(modeNum) + CyborgMMO_RatPageModel:SetMode(modeNum) end local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(fn)
--- a/OptionView.lua Thu Apr 25 01:30:05 2013 +0000 +++ b/OptionView.lua Thu Apr 25 01:30:11 2013 +0000 @@ -105,7 +105,7 @@ CyborgMMO_WowCommands[CyborgMMO_GetButtonIndex(lastButton)] = keyOrButton CyborgMMO_GetBindingButtonText(lastButton) CyborgMMO_BindingFrame:Hide() - CyborgMMO_RatPageModel.Instance().LoadData() + CyborgMMO_RatPageModel:LoadData() end function CyborgMMO_BindingFrameOnKeyDown(self, keyOrButton)
--- a/RatPageController.lua Thu Apr 25 01:30:05 2013 +0000 +++ b/RatPageController.lua Thu Apr 25 01:30:11 2013 +0000 @@ -18,66 +18,58 @@ --~ along with this program; if not, write to the Free Software --~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -CyborgMMO_RatPageController = { - new = function() - local self = {} - CyborgMMO_RatPageModel.Instance().SetMode(1) +------------------------------------------------------------------------------ - self.SlotClicked = function(slot) - local slotObject = nil - slotObject = CyborgMMO_RatPageModel.Instance().GetObjectOnButton(slot.Id) - CyborgMMO_RatPageModel.Instance().SetObjectOnButton(slot.Id, CyborgMMO_RatPageModel.Instance().GetMode(), self.GetCursorObject()) +local RatPageController_methods = {} +local RatPageController_mt = {__index=RatPageController_methods} - if slotObject then - slotObject.Pickup() - end +local function RatPageController() + local self = {} +-- CyborgMMO_RatPageModel:SetMode(1) + setmetatable(self, RatPageController_mt) + return self +end + +function RatPageController_methods:SlotClicked(slot) + local slotObject = nil + slotObject = CyborgMMO_RatPageModel:GetObjectOnButton(slot.Id) + CyborgMMO_RatPageModel:SetObjectOnButton(slot.Id, CyborgMMO_RatPageModel:GetMode(), self:GetCursorObject()) + + if slotObject then + slotObject.Pickup() + end +end + +function RatPageController_methods:ModeClicked(mode) + CyborgMMO_DPrint("Setting mode "..tostring(mode.Id)) + CyborgMMO_RatPageModel:SetMode(mode.Id) +end + +function RatPageController_methods:GetCursorObject() + local cursorObject = nil + if GetCursorInfo() then + local type,detail,subdetail = GetCursorInfo() + cursorObject = CyborgMMO_WowObject.Create(type, detail, subdetail) + ClearCursor() + end + return cursorObject +end + +function RatPageController_methods:CallbackDropped(callbackObject) + local slot = nil + local observers = CyborgMMO_RatPageModel:GetAllObservers() + for i=1,#observers do + if MouseIsOver(observers[i]) then + slot = observers[i] + break end + end + if slot then + CyborgMMO_RatPageModel:SetObjectOnButton(slot.Id, CyborgMMO_RatPageModel:GetMode(), callbackObject.wowObject) + end +end - self.ModeClicked = function(mode) - CyborgMMO_DPrint("Setting mode "..tostring(mode.Id)) - CyborgMMO_RatPageModel.Instance().SetMode(mode.Id) - end +------------------------------------------------------------------------------ - self.GetCursorObject = function() - local cursorObject = nil - if GetCursorInfo() then - local type,detail,subdetail = GetCursorInfo() - cursorObject = CyborgMMO_WowObject.Create(type, detail, subdetail) - ClearCursor() - end - return cursorObject - end +CyborgMMO_RatPageController = RatPageController() - self.CallbackDropped = function(callbackObject) - local slot = nil - local observers = CyborgMMO_RatPageModel.Instance().GetAllObservers() - for i=1,#observers do - if MouseIsOver(observers[i]) then - slot = observers[i] - break - end - end - if slot then - CyborgMMO_RatPageModel.Instance().SetObjectOnButton(slot.Id, CyborgMMO_RatPageModel.Instance().GetMode(), callbackObject.wowObject) - end - end - - self.Close = function() - end - - self.Open = function() - end - - return self - end, - - m_Instance = nil, - - Instance = function() - if not CyborgMMO_RatPageController.m_Instance then - CyborgMMO_RatPageController.m_Instance = CyborgMMO_RatPageController.new() - end - return CyborgMMO_RatPageController.m_Instance - end, -} -
--- 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, -} -
--- a/RatPageView.lua Thu Apr 25 01:30:05 2013 +0000 +++ b/RatPageView.lua Thu Apr 25 01:30:11 2013 +0000 @@ -27,12 +27,12 @@ self.SlotClicked = function(slot) CyborgMMO_DPrint("View Recieved Click") - CyborgMMO_RatPageController.Instance().SlotClicked(slot) + CyborgMMO_RatPageController:SlotClicked(slot) end self.ModeClicked = function(mode) CyborgMMO_DPrint("View Recieved Click") - CyborgMMO_RatPageController.Instance().ModeClicked(mode) + CyborgMMO_RatPageController:ModeClicked(mode) end self.RegisterMode = function() @@ -54,7 +54,7 @@ end self.SlotClicked = function(slot) - CyborgMMO_RatPageController.Instance().SlotClicked(slot) + CyborgMMO_RatPageController:SlotClicked(slot) end return self @@ -67,7 +67,7 @@ self._assignedWowObject = nil self:RegisterForClicks("LeftButtonUp", "RightButtonUp") self.Id = self:GetID() - CyborgMMO_RatPageModel.Instance().AddObserver(self) + CyborgMMO_RatPageModel:AddObserver(self) self.UnCheckedTexture = self:GetNormalTexture() -- Object Method -- @@ -99,7 +99,7 @@ new = function(self, parent) self._assignedWowObject = nil self.Id = self:GetID() - CyborgMMO_RatPageModel.Instance().AddObserver(self) + CyborgMMO_RatPageModel:AddObserver(self) self.UnCheckedTexture = self:GetNormalTexture() self.Update = function(data, activeMode) @@ -125,7 +125,7 @@ new = function(self) self.Id = self:GetID() self.Name = self:GetName() - CyborgMMO_RatPageModel.Instance().AddObserver(self) + CyborgMMO_RatPageModel:AddObserver(self) if self.Id ~= 1 then self:Hide() end
--- a/WowObjects.lua Thu Apr 25 01:30:05 2013 +0000 +++ b/WowObjects.lua Thu Apr 25 01:30:11 2013 +0000 @@ -117,7 +117,7 @@ self:ClearAllPoints() self:SetPoint(self.point, self.relativeTo, self.relativePoint, self.xOfs, self.yOfs) local x,y = GetCursorPosition() - CyborgMMO_RatPageController.Instance().CallbackDropped(self) + CyborgMMO_RatPageController:CallbackDropped(self) end return self @@ -145,7 +145,7 @@ self.PickupCallback = function() local slot = nil - local observers = CyborgMMO_RatPageModel.Instance().GetAllObservers() + local observers = CyborgMMO_RatPageModel:GetAllObservers() for i=1,#observers do if MouseIsOver(observers[i]) then slot = observers[i]