From bbd2cb095d9b4bd8e7d7834ed17c399c0c59af81 Mon Sep 17 00:00:00 2001 From: "Johnny C. Lam" Date: Thu, 28 Mar 2013 04:34:42 +0000 Subject: [PATCH] Disperse damage meter score-handling to the meter modules. Simplify main Ovale class by moving all of the routines for receiving the Ovale score broadcasts to the OvaleRecount and OvaleSkada modules directly. The main Ovale class now just broadcasts the player's own score to any interested parties when combat ends. git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@842 d5049fe3-3747-40f7-a4b5-f36d6801af5f --- Ovale.lua | 41 ++++++++--------------------------------- OvaleRecount.lua | 22 ++++++++++++++++------ OvaleSkada.lua | 17 ++++++++++++----- 3 files changed, 36 insertions(+), 44 deletions(-) diff --git a/Ovale.lua b/Ovale.lua index 7856a61..79318fb 100644 --- a/Ovale.lua +++ b/Ovale.lua @@ -12,20 +12,17 @@ local Ovale = LibStub("AceAddon-3.0"):NewAddon(addonNamespace, "Ovale", "AceCons -- local L = LibStub("AceLocale-3.0"):GetLocale("Ovale") +local OvaleGUID = nil local OvaleOptions = nil local pairs = pairs -local strsplit = string.split local wipe = table.wipe local API_GetTime = GetTime -local API_RegisterAddonMessagePrefix = RegisterAddonMessagePrefix local API_SendAddonMessage = SendAddonMessage local API_UnitCanAttack = UnitCanAttack local API_UnitExists = UnitExists local API_UnitHasVehicleUI = UnitHasVehicleUI local API_UnitIsDead = UnitIsDead - -local self_damageMeterModules = {} -- -- @@ -74,13 +71,12 @@ end function Ovale:OnEnable() -- Called when the addon is enabled - API_RegisterAddonMessagePrefix("Ovale") + OvaleGUID = Ovale:GetModule("OvaleGUID") + OvaleOptions = Ovale:GetModule("OvaleOptions") + self:RegisterEvent("PLAYER_REGEN_ENABLED"); self:RegisterEvent("PLAYER_REGEN_DISABLED"); self:RegisterEvent("PLAYER_TARGET_CHANGED") - self:RegisterEvent("CHAT_MSG_ADDON") - - OvaleOptions = Ovale:GetModule("OvaleOptions") self.frame = LibStub("AceGUI-3.0"):Create("OvaleFrame") self:UpdateFrame() @@ -91,7 +87,6 @@ function Ovale:OnDisable() self:UnregisterEvent("PLAYER_REGEN_ENABLED") self:UnregisterEvent("PLAYER_REGEN_DISABLED") self:UnregisterEvent("PLAYER_TARGET_CHANGED") - self:UnregisterEvent("CHAT_MSG_ADDON") self.frame:Hide() end @@ -103,14 +98,6 @@ function Ovale:PLAYER_TARGET_CHANGED() self:UpdateVisibility() end -function Ovale:CHAT_MSG_ADDON(event, prefix, msg, type, author) - if prefix ~= "Ovale" then return end - if type ~= "RAID" and type~= "PARTY" then return end - - local value, maxValue, guid = strsplit(";", msg) - self:SendScoreToDamageMeter(author, guid, value, maxValue) -end - function Ovale:PLAYER_REGEN_ENABLED() self.enCombat = false self:UpdateVisibility() @@ -120,8 +107,10 @@ function Ovale:PLAYER_REGEN_ENABLED() end function Ovale:PLAYER_REGEN_DISABLED() - if self.maxScore>0 then - API_SendAddonMessage("Ovale", self.score..";"..self.maxScore..";"..UnitGUID("player"), "RAID") + if self.maxScore > 0 then + -- Broadcast message is "score;maxScore;playerGUID" + local message = self.score .. ";" .. self.maxScore .. ";" .. OvaleGUID:GetGUID("player") + API_SendAddonMessage("Ovale", message, "RAID") end self.enCombat = true self.score = 0 @@ -130,20 +119,6 @@ function Ovale:PLAYER_REGEN_DISABLED() self:UpdateVisibility() end -function Ovale:AddDamageMeter(name, module) - self_damageMeterModules[name] = module -end - -function Ovale:RemoveDamageMeter(name) - self_damageMeterModules[name] = nil -end - -function Ovale:SendScoreToDamageMeter(name, guid, scored, scoreMax) - for _, module in pairs(self_damageMeterModules) do - module:SendScoreToDamageMeter(name, guid, scored, scoreMax) - end -end - function Ovale:Log(text) if self.trace then self:Print(text) diff --git a/OvaleRecount.lua b/OvaleRecount.lua index 384e959..61e37aa 100644 --- a/OvaleRecount.lua +++ b/OvaleRecount.lua @@ -8,7 +8,7 @@ ----------------------------------------------------------------------]] local _, Ovale = ... -local OvaleRecount = Ovale:NewModule("OvaleRecount") +local OvaleRecount = Ovale:NewModule("OvaleRecount", "AceEvent-3.0") Ovale.OvaleRecount = OvaleRecount -- @@ -17,6 +17,9 @@ local L = LibStub("AceLocale-3.0"):GetLocale("Recount", true) if not L then L = setmetatable({}, { __index = function(t, k) t[k] = k; return k; end }) end + +local strsplit = string.split +local API_RegisterAddonMessagePrefix = RegisterAddonMessagePrefix -- -- @@ -53,16 +56,23 @@ function OvaleRecount:OnInitialize() end function OvaleRecount:OnEnable() - Ovale:AddDamageMeter("OvaleRecount", self) + if not Recount then return end + self:RegisterEvent("CHAT_MSG_ADDON") + API_RegisterAddonMessagePrefix("Ovale") end function OvaleRecount:OnDisable() - Ovale:RemoveDamageMeter("OvaleRecount") + if not Recount then return end + self:UnregisterEvent("CHAT_MSG_ADDON") end -function OvaleRecount:SendScoreToDamageMeter(name, guid, scored, scoreMax) - if not Recount then return end - local source = Recount.db2.combatants[name] +function OvaleRecount:CHAT_MSG_ADDON(event, ...) + local prefix, message, channel, sender = ... + if prefix ~= "Ovale" then return end + if channel ~= "RAID" and channel ~= "PARTY" then return end + + local scored, scoreMax, guid = strsplit(";", message) + local source = Recount.db2.combatants[sender] if source then Recount:AddAmount(source, "Ovale", scored) Recount:AddAmount(source, "OvaleMax", scoreMax) diff --git a/OvaleSkada.lua b/OvaleSkada.lua index 7495717..393d9f3 100644 --- a/OvaleSkada.lua +++ b/OvaleSkada.lua @@ -8,7 +8,7 @@ ----------------------------------------------------------------------]] local _, Ovale = ... -local OvaleSkada = Ovale:NewModule("OvaleSkada") +local OvaleSkada = Ovale:NewModule("OvaleSkada", "AceEvent-3.0") Ovale.OvaleSkada = OvaleSkada -- @@ -17,7 +17,9 @@ local SkadaModule = Skada and Skada:NewModule("Ovale Spell Priority") or { noSka local ipairs = ipairs local math = math +local strsplit = string.split local tostring = tostring +local API_RegisterAddonMessagePrefix = RegisterAddonMessagePrefix -- -- @@ -93,22 +95,27 @@ end function OvaleSkada:OnEnable() if SkadaModule.noSkada then return end - Ovale:AddDamageMeter("OvaleSkada", self) if not SkadaModule:IsEnabled() then SkadaModule:Enable() end + self:RegisterEvent("CHAT_MSG_ADDON") + API_RegisterAddonMessagePrefix("Ovale") end function OvaleSkada:OnDisable() if SkadaModule.noSkada then return end - Ovale:RemoveDamageMeter("OvaleSkada") + self:UnregisterEvent("CHAT_MSG_ADDON") if SkadaModule:IsEnabled() then SkadaModule:Disable() end end -function OvaleSkada:SendScoreToDamageMeter(name, guid, scored, scoreMax) - if SkadaModule.noSkada then return end +function OvaleSkada:CHAT_MSG_ADDON(event, ...) + local prefix, message, channel, sender = ... + if prefix ~= "Ovale" then return end + if channel ~= "RAID" and channel ~= "PARTY" then return end + + local scored, scoreMax, guid = strsplit(";", message) if not guid or not Skada.current or not Skada.total then return end local player = Skada:get_player(Skada.current, guid, nil) -- 1.7.9.5