You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.9 KiB
69 lines
1.9 KiB
|
2 years ago
|
local Addon = LibStub('AceAddon-3.0'):GetAddon('WoWthing_Collector')
|
||
|
|
local Module = Addon:NewModule('TimePlayed', 'AceHook-3.0')
|
||
|
|
|
||
|
|
|
||
|
|
-- Hook the time played message so that we don't print it to chat every time
|
||
|
|
do
|
||
|
|
local originalDisplayTimePlayed = _G.ChatFrame_DisplayTimePlayed
|
||
|
|
_G.ChatFrame_DisplayTimePlayed = function(...)
|
||
|
|
if Module.requestingPlayedTime then
|
||
|
|
C_Timer.After(0.2, function()
|
||
|
|
Module.requestingPlayedTime = false
|
||
|
|
end)
|
||
|
|
return
|
||
|
|
end
|
||
|
|
return originalDisplayTimePlayed(...)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function Module:OnEnable()
|
||
|
|
-- self:RawHook('ChatFrame_DisplayTimePlayed', true)
|
||
|
|
self:RegisterEvent('PLAYER_LEVEL_UP')
|
||
|
|
self:RegisterEvent('TIME_PLAYED_MSG')
|
||
|
|
end
|
||
|
|
|
||
|
|
function Module:OnEnteringWorld()
|
||
|
|
self:RequestTimePlayed()
|
||
|
|
end
|
||
|
|
|
||
|
|
function Module:OnLogout()
|
||
|
|
self:SaveData()
|
||
|
|
end
|
||
|
|
|
||
|
|
function Module:RequestTimePlayed()
|
||
|
|
self.requestingPlayedTime = true
|
||
|
|
RequestTimePlayed()
|
||
|
|
end
|
||
|
|
|
||
|
|
function Module:SaveData()
|
||
|
|
local now = time()
|
||
|
|
|
||
|
|
if self.playedLevel ~= nil then
|
||
|
|
Addon.charData.playedLevel = self.playedLevel + (now - self.playedLevelUpdated)
|
||
|
|
end
|
||
|
|
if self.playedTotal ~= nil then
|
||
|
|
Addon.charData.playedTotal = self.playedTotal + (now - self.playedTotalUpdated)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Don't display the chat message if we're asking for the data
|
||
|
|
-- function Module:ChatFrame_DisplayTimePlayed(...)
|
||
|
|
-- if self.requestingPlayedTime then
|
||
|
|
-- self.requestingPlayedTime = false
|
||
|
|
-- return
|
||
|
|
-- end
|
||
|
|
|
||
|
|
-- self.hooks.ChatFrame_DisplayTimePlayed(...)
|
||
|
|
-- end
|
||
|
|
|
||
|
|
function Module:PLAYER_LEVEL_UP()
|
||
|
|
self.playedLevel, self.playedLevelUpdated = 0, time()
|
||
|
|
end
|
||
|
|
|
||
|
|
function Module:TIME_PLAYED_MSG(_, total, level)
|
||
|
|
local now = time()
|
||
|
|
self.playedLevel, self.playedLevelUpdated = level, now
|
||
|
|
self.playedTotal, self.playedTotalUpdated = total, now
|
||
|
|
self:SaveData()
|
||
|
|
end
|