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]