feat(Core/Time): Implement saparated manager for game time (#8630)

This commit is contained in:
Kargatum
2022-01-24 17:55:00 +07:00
committed by GitHub
parent 12da792a90
commit 8b7df23f06
129 changed files with 1147 additions and 817 deletions

View File

@@ -23,6 +23,7 @@
#include "Chat.h"
#include "Config.h"
#include "DatabaseEnv.h"
#include "GameTime.h"
#include "GuildMgr.h"
#include "GuildPackets.h"
#include "Language.h"
@@ -172,6 +173,9 @@ inline uint32 Guild::LogHolder<Entry>::GetNextGUID()
return m_nextGUID;
}
Guild::LogEntry::LogEntry(uint32 guildId, ObjectGuid::LowType guid) :
m_guildId(guildId), m_guid(guid), m_timestamp(GameTime::GetGameTime().count()) { }
// EventLogEntry
void Guild::EventLogEntry::SaveToDB(CharacterDatabaseTransaction trans) const
{
@@ -201,7 +205,7 @@ void Guild::EventLogEntry::WritePacket(WorldPackets::Guild::GuildEventLogQueryRe
eventEntry.PlayerGUID = playerGUID;
eventEntry.OtherGUID = otherGUID;
eventEntry.TransactionType = uint8(m_eventType);
eventEntry.TransactionDate = uint32(::time(nullptr) - m_timestamp);
eventEntry.TransactionDate = uint32(GameTime::GetGameTime().count() - m_timestamp);
eventEntry.RankID = uint8(m_newRank);
packet.Entry.push_back(eventEntry);
}
@@ -235,7 +239,7 @@ void Guild::BankEventLogEntry::WritePacket(WorldPackets::Guild::GuildBankLogQuer
{
WorldPackets::Guild::GuildBankLogEntry bankLogEntry;
bankLogEntry.PlayerGUID = ObjectGuid::Create<HighGuid::Player>(m_playerGuid.GetCounter());
bankLogEntry.TimeOffset = int32(::time(nullptr) - m_timestamp);
bankLogEntry.TimeOffset = int32(GameTime::GetGameTime().count() - m_timestamp);
bankLogEntry.EntryType = int8(m_eventType);
switch(m_eventType)
@@ -576,6 +580,11 @@ void Guild::Member::ChangeRank(uint8 newRank)
CharacterDatabase.Execute(stmt);
}
void Guild::Member::UpdateLogoutTime()
{
m_logoutTime = GameTime::GetGameTime().count();
}
void Guild::Member::SaveToDB(CharacterDatabaseTransaction trans) const
{
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_MEMBER);
@@ -1050,7 +1059,7 @@ bool Guild::Create(Player* pLeader, std::string_view name)
m_info = "";
m_motd = "No message set.";
m_bankMoney = 0;
m_createdDate = sWorld->GetGameTime();
m_createdDate = GameTime::GetGameTime().count();
LOG_DEBUG("guild", "GUILD: creating guild [%s] for leader %s (%s)",
m_name.c_str(), pLeader->GetName().c_str(), m_leaderGuid.ToString().c_str());
@@ -1198,7 +1207,7 @@ void Guild::HandleRoster(WorldSession* session)
memberData.Guid = member.GetGUID();
memberData.RankID = int32(member.GetRankId());
memberData.AreaID = int32(member.GetZoneId());
memberData.LastSave = float(float(::time(nullptr) - member.GetLogoutTime()) / DAY);
memberData.LastSave = float(float(GameTime::GetGameTime().count() - member.GetLogoutTime()) / DAY);
memberData.Status = member.GetFlags();
memberData.Level = member.GetLevel();