From 8d4a6ca2b5b82544a5ebb1ee6ffe980d68af74d3 Mon Sep 17 00:00:00 2001 From: Peter Eliasson Date: Tue, 20 Jan 2015 13:58:42 +0100 Subject: [PATCH] Attempt fix for recount not recording encounter id. --- src/parse_modules/recount.lua | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/src/parse_modules/recount.lua b/src/parse_modules/recount.lua index cc4bff5..b725b72 100644 --- a/src/parse_modules/recount.lua +++ b/src/parse_modules/recount.lua @@ -2,19 +2,17 @@ local addonName, addonTable = ... local addon = addonTable[1]; local pmc = addon.parseModulesCore; -local mod = pmc:NewModule("Recount", "AceHook-3.0"); +local mod = pmc:NewModule("Recount", "AceHook-3.0", "AceEvent-3.0"); if not mod then return end; -- Global functions local wipe = wipe; local tinsert = tinsert; - function mod:IsActivatable() return IsAddOnLoaded("Recount"); end - function mod:GetPlayersFromLastFight() local players = {}; -- Pets are not included in player's damage, so keep track @@ -66,7 +64,7 @@ end function mod:ProcessParseRequest(encounter, callback) -- Look at the most recent one, as previous ones might -- be wipes at the same boss - if not Recount.FightingWho or Recount.FightingWho ~= encounter.name then + if self.recountFightEncounterId ~= encounter.id then self:Debug("No Recount fight found for boss"); return callback(false); end @@ -83,7 +81,6 @@ function mod:ProcessParseRequest(encounter, callback) return callback(true, startTime, duration, playerParses); end - function mod:GetParsesForEncounter(encounter, callback) -- If recount hasn't finished the fight, wait for it if Recount.InCombat then @@ -107,14 +104,47 @@ function mod:LeaveCombat() end end +function mod:PutInCombat() + self:Debug("Recount: PutInCombat"); + + self.recountFightEncounterId = self.currentEncounterId; + self.currentEncounterId = nil; +end + +function mod:ENCOUNTER_START(event, encounterID, encounterName, difficultyID, raidSize) + self:Debug("Recount: ENCOUNTER_START"); + + -- Since recount doesn't track the encounter itself, we have to do it. + if Recount.InCombat then + -- If recount currently is in a fight then track + -- the current encounter id as the encounter being fighted. + self.recountFightEncounterId = encounterID; + self.currentEncounterId = nil; + else + -- If recount has not yet started a fight, store the current + -- encounter id. This will be set in the StartCombat hook. + self.currentEncounterId = encounterID; + end +end + function mod:OnEnable() self.pendingParseRequests = {}; + self.currentEncounterId = nil; + self.recountFightEncounterId = nil; + + self:RegisterEvent("ENCOUNTER_START"); self:SecureHook(Recount, "LeaveCombat"); + self:SecureHook(Recount, "PutInCombat"); end function mod:OnDisable() wipe(self.pendingParseRequests); + self.currentEncounterId = nil; + self.recountFightEncounterId = nil; + + self:UnregisterEvent("ENCOUNTER_START"); self:UnHook(Recount, "LeaveCombat"); + self:UnHook(Recount, "PutInCombat"); end -- 1.7.9.5