diff options
author | Ivan Bakula <ivan.bakula@outlook.com> | 2016-10-21 12:20:24 +0200 |
---|---|---|
committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-10-15 16:11:11 +0200 |
commit | 08c45b48c5fdf86dd12e76e06601610ce37168fd (patch) | |
tree | a8101ae8b1392550963a0d92e627d5180258a1e7 | |
parent | 227dc49f5aff304077ebb66cd5e6e0408c679567 (diff) |
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.
(cherry picked from commit 3f3dee804904042486741320519553a49c3149bb)
-rw-r--r-- | src/server/game/Battlegrounds/ArenaTeam.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Battlegrounds/ArenaTeam.h | 2 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp index 7669cc05f63..870fc44d264 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.cpp +++ b/src/server/game/Battlegrounds/ArenaTeam.cpp @@ -747,6 +747,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); @@ -767,8 +771,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; @@ -779,6 +787,8 @@ void ArenaTeam::FinishWeek() itr->WeekGames = 0; itr->WeekWins = 0; } + + return true; } bool ArenaTeam::IsFighting() const diff --git a/src/server/game/Battlegrounds/ArenaTeam.h b/src/server/game/Battlegrounds/ArenaTeam.h index d87b66121c7..bba37adf640 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.h +++ b/src/server/game/Battlegrounds/ArenaTeam.h @@ -173,7 +173,7 @@ class TC_GAME_API ArenaTeam - void FinishWeek(); + bool FinishWeek(); // returns true if arena team played this week void FinishGame(int32 mod); protected: |