refactored event storing

René Welbers [02-02-16 - 17:35]
refactored event storing
Filename
PanicModeCombatAnalyzer.lua
PanicModeCombatAnalyzer.txt
diff --git a/PanicModeCombatAnalyzer.lua b/PanicModeCombatAnalyzer.lua
index 9f5aecb..95ddae7 100644
--- a/PanicModeCombatAnalyzer.lua
+++ b/PanicModeCombatAnalyzer.lua
@@ -2,7 +2,7 @@
 PanicModeCombatAnalyzer = PanicModeCombatAnalyzer or {}

 PanicModeCombatAnalyzer.name		  = 'PanicModeCombatAnalyzer'
-PanicModeCombatAnalyzer.version	      = '1.0.8'
+PanicModeCombatAnalyzer.version	      = '1.0.9'
 PanicModeCombatAnalyzer.versionDB	  = 2
 PanicModeCombatAnalyzer.loaded	      = false
 PanicModeCombatAnalyzer.author        = 'silentgecko, deevilius'
@@ -43,11 +43,35 @@ function PanicModeCombatAnalyzer.Initialize(_, addonName)

     self.cleanUp()

+    -- death/alive/rezz
     EVENT_MANAGER:RegisterForEvent(self.name, EVENT_PLAYER_DEAD, self.onDeath)
+    EVENT_MANAGER:RegisterForEvent(self.name, EVENT_PLAYER_ALIVE, self.onAlive)
+    EVENT_MANAGER:RegisterForEvent(self.name, EVENT_RESURRECT_REQUEST, self.onRezz)
+
+    --combat state
+    EVENT_MANAGER:RegisterForEvent(self.name, EVENT_PLAYER_COMBAT_STATE, self.OnPlayerCombatState)
+
+    -- group change
+    EVENT_MANAGER:RegisterForEvent(self.name, EVENT_GROUP_UPDATE, self.onGroupChange)
+    EVENT_MANAGER:RegisterForEvent(self.name, EVENT_GROUP_MEMBER_JOINED, self.onGroupChange)
+    EVENT_MANAGER:RegisterForEvent(self.name, EVENT_GROUP_MEMBER_LEFT, self.onGroupChange)

     CALLBACK_MANAGER:RegisterCallback("FTC_NewDamage", self.addDamage)
 end

+-- fight status
+function PanicModeCombatAnalyzer.OnPlayerCombatState(_, inCombat)
+    local self       = PanicModeCombatAnalyzer
+    local timeStamp  = GetTimeStamp()
+    local data       = self.savedVariables.data or {}
+
+    data[timeStamp]          = data[timeStamp] or {}
+    data[timeStamp]['event'] = data[timeStamp]['event'] or {}
+    table.insert(data[timeStamp]['event'], {combat = inCombat})
+
+    self.savedVariables.data[timeStamp] = data[timeStamp]
+end
+
 -- cleanup
 function PanicModeCombatAnalyzer.cleanUp()
     local self      = PanicModeCombatAnalyzer
@@ -121,7 +145,6 @@ function PanicModeCombatAnalyzer.addDamage(damage)

         -- 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]
@@ -136,13 +159,54 @@ function PanicModeCombatAnalyzer.onDeath(event)
     local data       = self.savedVariables.data or {}
     data[timeStamp] = data[timeStamp] or {}
     if (event == EVENT_PLAYER_DEAD) then -- player died
-        data[timeStamp]['event'] = 'died'
+        data[timeStamp]['event'] = data[timeStamp]['event'] or {}
+        table.insert(data[timeStamp]['event'], {death = true})
     else -- player lives again
-        data[timeStamp]['event'] = 'revive'
+        data[timeStamp]['event'] = data[timeStamp]['event'] or {}
+        table.insert(data[timeStamp]['event'], {revive = true})
     end
     self.savedVariables.data[timeStamp] = data[timeStamp]
 end

+-- player alive
+function PanicModeCombatAnalyzer.onAlive(event)
+    local self       = PanicModeCombatAnalyzer
+    local timeStamp  = GetTimeStamp()
+    local data       = self.savedVariables.data or {}
+
+    data[timeStamp]          = data[timeStamp] or {}
+    data[timeStamp]['event'] = data[timeStamp]['event'] or {}
+    table.insert(data[timeStamp]['event'], {alive = true})
+
+    self.savedVariables.data[timeStamp] = data[timeStamp]
+end
+
+-- group change
+function PanicModeCombatAnalyzer.onGroupChange(event)
+    local self       = PanicModeCombatAnalyzer
+    local timeStamp  = GetTimeStamp()
+    local data       = self.savedVariables.data or {}
+
+    data[timeStamp]          = data[timeStamp] or {}
+    data[timeStamp]['event'] = data[timeStamp]['event'] or {}
+    table.insert(data[timeStamp]['event'], {group = self.getGroup()})
+
+    self.savedVariables.data[timeStamp] = data[timeStamp]
+end
+
+-- player rezz
+function PanicModeCombatAnalyzer.onRezz(event, requesterCharacterName, timeLeftToAccept)
+    local self       = PanicModeCombatAnalyzer
+    local timeStamp  = GetTimeStamp()
+    local data       = self.savedVariables.data or {}
+
+    data[timeStamp]          = data[timeStamp] or {}
+    data[timeStamp]['event'] = data[timeStamp]['event'] or {}
+
+    table.insert(data[timeStamp]['event'], {rezz = zo_strformat("<<!aC:1>>", requesterCharacterName)})
+    self.savedVariables.data[timeStamp] = data[timeStamp]
+end
+
 -- get group
 function PanicModeCombatAnalyzer.getGroup()
     local self      = PanicModeCombatAnalyzer
diff --git a/PanicModeCombatAnalyzer.txt b/PanicModeCombatAnalyzer.txt
index abc62fb..284aa19 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.8
+## Version: 1.0.9
 ## APIVersion: 100013
 ## SavedVariables: PMCAVars
 ## OptionalDependsOn: FoundryTacticalCombat