added "Func Call Spam Protection" for "UNIT_INVENTORY_CHANGED" Event in "DataStore_Stats" file

This commit is contained in:
telkar-rg
2025-07-21 17:28:34 +02:00
parent fb53721d71
commit 111fd0d153
@@ -6,12 +6,15 @@ if not DataStore then return end
local addonName = "DataStore_Stats" local addonName = "DataStore_Stats"
_G[addonName] = LibStub("AceAddon-3.0"):NewAddon(addonName, "AceConsole-3.0", "AceEvent-3.0") _G[addonName] = LibStub("AceAddon-3.0"):NewAddon(addonName, "AceConsole-3.0", "AceEvent-3.0", "AceTimer-3.0")
local addon = _G[addonName] local addon = _G[addonName]
local THIS_ACCOUNT = "Default" local THIS_ACCOUNT = "Default"
-- Func Call Spam Protection
local FCSP_timer_UNIT_INVENTORY_CHANGED
local AddonDB_Defaults = { local AddonDB_Defaults = {
global = { global = {
Characters = { Characters = {
@@ -48,6 +51,9 @@ end
-- *** Scanning functions *** -- *** Scanning functions ***
local function ScanStats() local function ScanStats()
FCSP_timer_UNIT_INVENTORY_CHANGED = nil -- manual reset (safety redundancy)
-- print("DataStore_Stats.lua -- ScanStats", format("%.3f",GetTime()%100)) -- DEBUG 2025 07 21 - 3
local stats = addon.ThisCharacter.Stats local stats = addon.ThisCharacter.Stats
wipe(stats) wipe(stats)
@@ -135,9 +141,11 @@ local function ScanStats()
addon.ThisCharacter.lastUpdate = time() addon.ThisCharacter.lastUpdate = time()
end end
function addon:OnEnable() function addon:OnEnable()
addon:RegisterEvent("PLAYER_ALIVE") addon:RegisterEvent("PLAYER_ALIVE")
addon:RegisterEvent("UNIT_INVENTORY_CHANGED", ScanStats) -- addon:RegisterEvent("UNIT_INVENTORY_CHANGED", ScanStats)
addon:RegisterEvent("UNIT_INVENTORY_CHANGED")
end end
function addon:OnDisable() function addon:OnDisable()
@@ -152,3 +160,12 @@ function addon:PLAYER_ALIVE()
ScanStats() ScanStats()
end end
function addon:UNIT_INVENTORY_CHANGED()
-- this function limits calls to "ScanStats" to max 1 every second
-- print("DataStore_Stats.lua -- UNIT_INVENTORY_CHANGED", DEBUG_CNT, format("%.3f",GetTime()%100)) -- DEBUG 2025 07 21 - 3
if FCSP_timer_UNIT_INVENTORY_CHANGED then return end
FCSP_timer_UNIT_INVENTORY_CHANGED = addon:ScheduleTimer(ScanStats, 1)
end