added trials saving part

René Welbers [01-27-16 - 13:02]
added trials saving part
Filename
PanicModeCombatAnalyzer.lua
diff --git a/PanicModeCombatAnalyzer.lua b/PanicModeCombatAnalyzer.lua
index 70ed3f6..2b4663d 100644
--- a/PanicModeCombatAnalyzer.lua
+++ b/PanicModeCombatAnalyzer.lua
@@ -9,13 +9,17 @@ PanicModeCombatAnalyzer.author        = 'silentgecko, deevilius'
 PanicModeCombatAnalyzer.savedVarsName = 'PMCAVars'

 PanicModeCombatAnalyzer.variables = {
-    fights = {}
+    fights = {},
+    groups = {},
+    trials = {},
 }
 PanicModeCombatAnalyzer.tempVars = {
     lastSave = 0,
     inFight = false,
     lastDps = 0,
     lastDpsCount = 0,
+    trialRunning = false,
+    trialId      = 0,
 }

 -- grab ftc from global
@@ -32,12 +36,47 @@ function PanicModeCombatAnalyzer.Initialize(event, addonName)
     self.savedVariables = ZO_SavedVars:New(self.savedVarsName, self.versionDB, nil, self.variables)

     EVENT_MANAGER:RegisterForEvent(self.name, EVENT_PLAYER_COMBAT_STATE, self.OnPlayerCombatState)
+
+    --trials
+    EVENT_MANAGER:RegisterForEvent(self.name .. "_TRIAL_START", EVENT_RAID_TRIAL_STARTED, self.saveTrials)
+    EVENT_MANAGER:RegisterForEvent(self.name .. "_TRIAL_STOP", EVENT_RAID_TRIAL_COMPLETE, self.saveTrials)
+    EVENT_MANAGER:RegisterForEvent(self.name .. "_TRIAL_STOP", EVENT_RAID_TRIAL_FAILED, self.saveTrials)
+    EVENT_MANAGER:RegisterForEvent(self.name .. "_TRIAL_STOP_GROUP", EVENT_GROUP_MEMBER_LEFT, self.saveTrialsFromGroup)
 end

 function PanicModeCombatAnalyzer.OnPlayerCombatState(event, inCombat)
     PanicModeCombatAnalyzer.tempVars.inFight = inCombat
 end

+function PanicModeCombatAnalyzer.saveTrials(event, raidName)
+    local self         = PanicModeCombatAnalyzer
+    local timeStamp    = GetTimeStamp()
+    local currentRaid  = GetCurrentParticipatingRaidId()
+    local eventStr     = 'start'
+    if event == 131134 or event == '131134' then
+        eventStr = 'start'
+        self.tempVars.trialRunning = true
+        self.tempVars.trialId      = currentRaid
+    else
+        eventStr = 'stop'
+    end
+    self.savedVariables.trials[currentRaid] = self.savedVariables.trials[currentRaid] or {}
+    self.savedVariables.trials[currentRaid][timeStamp] = eventStr
+end
+
+function PanicModeCombatAnalyzer.saveTrialsFromGroup(_, _, reason)
+    local self         = PanicModeCombatAnalyzer
+    local timeStamp    = GetTimeStamp()
+    local currentRaid  = self.tempVars.trialId -- we use our tempvar, because when you zone out of trial, and still in grp, raidid from api is 0
+    local eventStr     = 'stop'
+
+    if (reason == GROUP_LEAVE_REASON_DISBAND or reason == GROUP_LEAVE_REASON_DESTROYED) and currentRaid > 0 and self.tempVars.trialRunning then
+        self.savedVariables.trials[currentRaid] = self.savedVariables.trials[currentRaid] or {}
+        self.savedVariables.trials[currentRaid][timeStamp] = eventStr
+        self.tempVars.trialRunning = false
+    end
+end
+
 --[[
  * Overwrite from origin FTC
  * Update the mini DPS meter
@@ -62,8 +101,8 @@ function FTC.Stats:Update()
     local secs	= ZO_FormatTime( dtime , SI_TIME_FORMAT_TIMESTAMP)

     -- Compute player statistics
-    local dps 	= FTC.DisplayNumber( FTC.Stats.damage  / math.max(time,1) )
-    local hps 	= FTC.DisplayNumber( FTC.Stats.healing / math.max(time,1) )
+    local dps 	= FTC.DisplayNumber( FTC.Stats.damage  / math.max(time, 1) )
+    local hps 	= FTC.DisplayNumber( FTC.Stats.healing / math.max(time, 1) )

     -- added saving vars
     local lastSave     = self.tempVars.lastSave
@@ -74,11 +113,11 @@ function FTC.Stats:Update()
     local dpsForSaving = (FTC.Stats.damage / math.max(time,1))

     if self.tempVars.lastDps == dpsForSaving then
-        self.tempVars.lastDpsCount = self.tempVars.lastDpsCount+1
+        self.tempVars.lastDpsCount = self.tempVars.lastDpsCount + 1
     else
         self.tempVars.lastDpsCount = 0
     end
-    self.tempVars.lastDps  = dpsForSaving
+    self.tempVars.lastDps = dpsForSaving

     -- only save if we don't get three times the same amount of dps, and lastSavediff is more than one second ago and we're in fight
     if self.tempVars.lastDpsCount <= 2 and lastSaveDiff >= 1000 and self.tempVars.inFight then