mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Arena: Fix lag caused by arena distribution (#17989)
Avoid queueing unneeded queries to save arena teams and arena team members data if nothing was changed during that week.
This commit is contained in:
@@ -899,6 +899,10 @@ void ArenaTeam::SaveToDB()
|
||||
|
||||
for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr)
|
||||
{
|
||||
// Save the effort and go
|
||||
if (itr->WeekGames == 0)
|
||||
continue;
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ARENA_TEAM_MEMBER);
|
||||
stmt->setUInt16(0, itr->PersonalRating);
|
||||
stmt->setUInt16(1, itr->WeekGames);
|
||||
@@ -919,8 +923,12 @@ void ArenaTeam::SaveToDB()
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
}
|
||||
|
||||
void ArenaTeam::FinishWeek()
|
||||
bool ArenaTeam::FinishWeek()
|
||||
{
|
||||
// No need to go further than this
|
||||
if (Stats.WeekGames == 0)
|
||||
return false;
|
||||
|
||||
// Reset team stats
|
||||
Stats.WeekGames = 0;
|
||||
Stats.WeekWins = 0;
|
||||
@@ -931,6 +939,8 @@ void ArenaTeam::FinishWeek()
|
||||
itr->WeekGames = 0;
|
||||
itr->WeekWins = 0;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ArenaTeam::IsFighting() const
|
||||
|
||||
@@ -180,7 +180,7 @@ class TC_GAME_API ArenaTeam
|
||||
|
||||
void UpdateArenaPointsHelper(std::map<uint32, uint32> & PlayerPoints);
|
||||
|
||||
void FinishWeek();
|
||||
bool FinishWeek(); // returns true if arena team played this week
|
||||
void FinishGame(int32 mod);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -186,8 +186,9 @@ void ArenaTeamMgr::DistributeArenaPoints()
|
||||
{
|
||||
if (ArenaTeam* at = titr->second)
|
||||
{
|
||||
at->FinishWeek();
|
||||
at->SaveToDB();
|
||||
if (at->FinishWeek())
|
||||
at->SaveToDB();
|
||||
|
||||
at->NotifyStatsChanged();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user