added player death events

René Welbers [02-01-16 - 16:00]
added player death events
cleanup code
Filename
PanicModeCombatAnalyzer.lua
PanicModeCombatAnalyzer.txt
diff --git a/PanicModeCombatAnalyzer.lua b/PanicModeCombatAnalyzer.lua
index 577261c..1a6dc87 100644
--- a/PanicModeCombatAnalyzer.lua
+++ b/PanicModeCombatAnalyzer.lua
@@ -2,7 +2,7 @@
 PanicModeCombatAnalyzer = PanicModeCombatAnalyzer or {}

 PanicModeCombatAnalyzer.name		  = 'PanicModeCombatAnalyzer'
-PanicModeCombatAnalyzer.version	      = '1.0.6'
+PanicModeCombatAnalyzer.version	      = '1.0.7'
 PanicModeCombatAnalyzer.versionDB	  = 2
 PanicModeCombatAnalyzer.loaded	      = false
 PanicModeCombatAnalyzer.author        = 'silentgecko, deevilius'
@@ -43,6 +43,8 @@ function PanicModeCombatAnalyzer.Initialize(_, addonName)

     self.cleanUp()

+    EVENT_MANAGER:RegisterForEvent(self.name, EVENT_PLAYER_DEAD, self.onDeath)
+
     CALLBACK_MANAGER:RegisterCallback("FTC_NewDamage", self.addDamage)
 end

@@ -103,22 +105,43 @@ function PanicModeCombatAnalyzer.addDamage(damage)
             if damage['result'] == ACTION_RESULT_HEAL or damage['result'] == ACTION_RESULT_CRITICAL_HEAL or damage['result'] == ACTION_RESULT_HOT_TICK or damage['result'] == ACTION_RESULT_HOT_TICK_CRITICAL then
                 local currentData = data[lastSaveTS]['healing'][damage['target']] or {}
                 table.insert(currentData, damageData)
-                data[lastSaveTS]['healing'][damage['target']] = currentData
+                if next(currentData) ~=nil then
+                    data[lastSaveTS]['healing'][damage['target']] = currentData
+                end
             end
         else
             --filter unwanted stuff
             if damage['result'] == ACTION_RESULT_DAMAGE or damage['result'] == ACTION_RESULT_CRITICAL_DAMAGE or damage['result'] == ACTION_RESULT_DOT_TICK or damage['result'] == ACTION_RESULT_DOT_TICK_CRITICAL then
                 local currentData = data[lastSaveTS]['damage'][damage['target']] or {}
                 table.insert(currentData, damageData)
-                data[lastSaveTS]['damage'][damage['target']] = currentData
+                if next(currentData) ~=nil then
+                    data[lastSaveTS]['damage'][damage['target']] = currentData
+                end
             end
         end

-        data[lastSaveTS]['group'] = self.getGroup()
-        data[lastSaveTS]['trial'] = self.getTrial()
+        -- only store, when we have damage or healing
+        if next(data[lastSaveTS]['damage']) ~= nil or next(data[lastSaveTS]['healing']) ~= nil then
+            data[lastSaveTS]['group'] = self.getGroup()
+            data[lastSaveTS]['trial'] = self.getTrial()
+
+            self.savedVariables.data[lastSaveTS] = data[lastSaveTS]
+        end
+    end
+end

-        self.savedVariables.data[lastSaveTS] = data[lastSaveTS]
+-- player death / revive
+function PanicModeCombatAnalyzer.onDeath(event)
+    local self       = PanicModeCombatAnalyzer
+    local timeStamp  = GetTimeStamp()
+    local data       = self.savedVariables.data or {}
+    data[timeStamp] = data[timeStamp] or {}
+    if (event == EVENT_PLAYER_DEAD) then -- player died
+        data[timeStamp]['event'] = 'died'
+    else -- player lives again
+        data[timeStamp]['event'] = 'revive'
     end
+    self.savedVariables.data[timeStamp] = data[timeStamp]
 end

 -- get group
diff --git a/PanicModeCombatAnalyzer.txt b/PanicModeCombatAnalyzer.txt
index 0653b88..97111d9 100644
--- a/PanicModeCombatAnalyzer.txt
+++ b/PanicModeCombatAnalyzer.txt
@@ -1,7 +1,7 @@
 ## Title: |cEFEBBEPanic Mode Combat Analyzer|r
 ## Description: Saves your dps during fight, based on FTC DPS Meter.
 ## Author: |c009ad6silentgecko|r, deevilius
-## Version: 1.0.6
+## Version: 1.0.7
 ## APIVersion: 100013
 ## SavedVariables: PMCAVars
 ## OptionalDependsOn: FoundryTacticalCombat