aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Bakula <ivan.bakula@outlook.com>2016-10-21 12:20:24 +0200
committerjoschiwald <joschiwald.trinity@gmail.com>2017-10-15 16:11:11 +0200
commit08c45b48c5fdf86dd12e76e06601610ce37168fd (patch)
treea8101ae8b1392550963a0d92e627d5180258a1e7
parent227dc49f5aff304077ebb66cd5e6e0408c679567 (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.cpp12
-rw-r--r--src/server/game/Battlegrounds/ArenaTeam.h2
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: