Quantcast

- XP : Tighten XP init and event code to hopefully fix error reported on Curse

urnati [07-15-24 - 18:50]
- XP : Tighten XP init and event code to hopefully fix error reported on Curse
Filename
TitanXP/TitanXP.lua
diff --git a/TitanXP/TitanXP.lua b/TitanXP/TitanXP.lua
index 8784808..6a725cf 100644
--- a/TitanXP/TitanXP.lua
+++ b/TitanXP/TitanXP.lua
@@ -58,7 +58,7 @@ ChatFrame_DisplayTimePlayed = function(...)
 		orig_ChatFrame_DisplayTimePlayed(...)
 	end
 end
---****** overload
+--****** Override

 -- ******************************** Functions *******************************

@@ -99,11 +99,17 @@ end
 ---local Reset session and accumulated variables
 ---@param self Button
 local function ResetSession(self)
-	txp.initXP = UnitXP("player")
 	txp.accumXP = 0
 	txp.sessionXP = 0
 	txp.startSessionTime = time() -- clock time
-	txp.lastXP = txp.initXP;
+
+	local xp = UnitXP("player")
+	if xp == nil then
+		txp.initXP = 0
+	else
+		txp.initXP = xp
+	end
+	txp.lastXP = txp.initXP
 end

 ---local Wrapper for menu to use
@@ -137,6 +143,7 @@ end
 ---local Get total time played
 -- Do not send RequestTimePlayed output to Chat if XP requested the info.
 -- Override ChatFrame_DisplayTimePlayed used by RequestTimePlayed().
+-- TIME_PLAYED_MSG used to send response.
 local function RefreshPlayed()
 	txp.frame:RequestTimePlayed()
 end
@@ -146,25 +153,12 @@ end
 local function OnShow(self)
 	local txt = ""

-	if txp.sessionTime then
-		-- No action
-	else
-		-- initial login / PEW
-		txp.sessionTime = time();
-		txt = txt .. "Sess reset"
-	end
-	if txp.initXP then
-		-- No action
-	else -- initial login / PEW
-		ResetSession(self)
-		txt = txt .. " | Init"
-	end
 	self:RegisterEvent("TIME_PLAYED_MSG");
 	self:RegisterEvent("PLAYER_XP_UPDATE");
 	self:RegisterEvent("PLAYER_LEVEL_UP");
 	self:RegisterEvent("CHAT_MSG_COMBAT_XP_GAIN");

-	RefreshPlayed()
+	RefreshPlayed() -- TIME_PLAYED_MSG

 	SetIcon();
 	txt = txt .. " | Events"
@@ -223,12 +217,7 @@ local function OnEvent(self, event, a1, a2, ...)

 		TitanPanelButton_UpdateButton(TITAN_XP_ID)
 	elseif (event == "PLAYER_XP_UPDATE") then
-		if txp.initXP then
-			-- has been initialized
-		else
-			ResetSession(self)
-		end
-
+		-- XP data init on plugin load and PEW (first time)
 		txp.XPGain = UnitXP("player") - txp.lastXP;
 		txp.lastXP = UnitXP("player");
 		if txp.XPGain < 0 then
@@ -663,7 +652,9 @@ local function OnLoad(self)
 			DisplayOnRightSide = false,
 		}
 	};
-	self:RegisterEvent("PLAYER_ENTERING_WORLD");
+	self:RegisterEvent("PLAYER_ENTERING_WORLD")
+
+	ResetSession(self)
 end

 ---local Create needed frames