diff CallbackFactory.lua @ 23:3b1c0b676583

Simplified the CallbackFactory object model.
author madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09
date Thu, 25 Apr 2013 01:30:36 +0000
parents 6cb9a2936580
children ea423ee3a8c1
line wrap: on
line diff
--- a/CallbackFactory.lua	Thu Apr 25 01:30:31 2013 +0000
+++ b/CallbackFactory.lua	Thu Apr 25 01:30:36 2013 +0000
@@ -18,108 +18,75 @@
 --~ along with this program; if not, write to the Free Software
 --~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
-CyborgMMO_CallbackFactory = {
-	new = function()
-		local self = {}
-		self.Frame = CreateFrame("Frame", "CallbackFactoryFrame", UIParent)
-		self.Callbacks = {}
-		self.Id = 1
+------------------------------------------------------------------------------
 
-		self.AddCallback = function(fn)
-			local name = "Button"..self.Id
-			self.Callbacks[name] = CreateFrame("Button", name, self.Frame)
-			self.Callbacks[name]:SetScript("OnClick", fn)
-			self.Id = self.Id + 1
-			return self.Callbacks[name],self.Frame,name
-		end
+local CallbackFactory_methods = {}
+local CallbackFactory_mt = {__index=CallbackFactory_methods}
 
-		self.RemoveCallback = function(name)
-			self.Callbacks[name] = nil
-		end
+local function CallbackFactory()
+	local self = {}
+	self.Frame = CreateFrame("Frame", "CallbackFactoryFrame", UIParent)
+	self.Callbacks = {}
+	self.Id = 1
 
-		self.GetCallback = function(callbackName)
-			local callback = nil
-			if callbackName == "Map" then
-				callback = self.ToggleMap
-			elseif callbackName == "CharacterPage" then
-				callback = self.ToggleCharacterPage
-			elseif callbackName == "Spellbook" then
-				callback = self.ToggleSpellbook
-			elseif callbackName == "Macros" then
-				callback = self.ToggleMacros
-			elseif callbackName == "QuestLog" then
-				callback = self.ToggleQuests
-			elseif callbackName == "Achievement" then
-				callback = self.ToggleAchievements
-			elseif callbackName == "Inventory" then
-				callback = self.ToggleBags
-			end
-			return callback
-		end
+	setmetatable(self, CallbackFactory_mt)
 
+	return self
+end
 
-		self.ToggleMap = function()
-			ToggleFrame(WorldMapFrame)
-		end
+function CallbackFactory_methods:AddCallback(fn)
+	local name = "Button"..self.Id
+	self.Callbacks[name] = CreateFrame("Button", name, self.Frame)
+	self.Callbacks[name]:SetScript("OnClick", fn)
+	self.Id = self.Id + 1
+	return self.Callbacks[name],self.Frame,name
+end
 
-		self.ToggleCharacterPage = function()
-			ToggleCharacter("PaperDollFrame")
-		end
+function CallbackFactory_methods:RemoveCallback(name)
+	self.Callbacks[name] = nil
+end
 
-		self.ToggleSpellbook = function()
-			ToggleFrame(SpellBookFrame)
-			if SpellBookFrame:IsShown() then
-				SpellbookMicroButton:SetButtonState("PUSHED", 1)
-			else
-				SpellbookMicroButton:SetButtonState("NORMAL")
-			end
-		end
+local callbacks = {}
 
-		self.ToggleMacros = function()
-			if MacroFrame:IsShown() and MacroFrame:IsVisible() then
-				HideUIPanel(MacroFrame)
-			else
-				ShowMacroFrame()
-			end
-		end
+function CallbackFactory_methods:GetCallback(name)
+	return callbacks[name]
+end
 
-		self.ToggleQuests = function()
-			ToggleFrame(QuestLogFrame)
-			if QuestLogFrame:IsShown() then
-				QuestLogMicroButton:SetButtonState("PUSHED", 1)
-			else
-				QuestLogMicroButton:SetButtonState("NORMAL")
-			end
-		end
+------------------------------------------------------------------------------
 
-		self.ToggleAchievements = function()
-			ToggleAchievementFrame()
-			if AchievementFrame and AchievementFrame:IsShown() then
-				AchievementMicroButton:SetButtonState("PUSHED", 1)
-			else
-				if (HasCompletedAnyAchievement() or IsInGuild()) and CanShowAchievementUI() then
-					AchievementMicroButton:Enable()
-					AchievementMicroButton:SetButtonState("NORMAL")
-				else
-					AchievementMicroButton:Disable()
-				end
-			end
-		end
+function callbacks.Map()
+	ToggleFrame(WorldMapFrame)
+end
 
-		self.ToggleBags = function()
-			ToggleAllBags()
-		end
-		return self
-	end,
+function callbacks.CharacterPage()
+	ToggleCharacter("PaperDollFrame")
+end
 
-	m_Instance = nil,
+function callbacks.Spellbook()
+	ToggleFrame(SpellBookFrame)
+end
 
-	Instance = function()
-		if not CyborgMMO_CallbackFactory.m_Instance then
-			CyborgMMO_CallbackFactory.m_Instance = CyborgMMO_CallbackFactory.new()
-		end
-		return CyborgMMO_CallbackFactory.m_Instance
-	end,
-}
+function callbacks.Macros()
+	if MacroFrame:IsShown() and MacroFrame:IsVisible() then
+		HideUIPanel(MacroFrame)
+	else
+		ShowMacroFrame()
+	end
+end
 
+function callbacks.QuestLog()
+	ToggleFrame(QuestLogFrame)
+end
 
+function callbacks.Achievement()
+	ToggleAchievementFrame()
+end
+
+function callbacks.Inventory()
+	ToggleAllBags()
+end
+
+------------------------------------------------------------------------------
+
+CyborgMMO_CallbackFactory = CallbackFactory()
+