aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-07-09 00:50:29 +0200
committerShauren <shauren.trinity@gmail.com>2022-07-09 00:50:29 +0200
commitdb79e29121b74dc62da1b68cf1e25fb8e31ffbdf (patch)
tree93e51e53d81d526298cc3396a1358946ab385a90
parent5dca7309f4db9de348525987d236cd03657ef21f (diff)
Core/WorldStates: Skip sending SMSG_UPDATE_WORLD_STATE when value does not change
-rw-r--r--src/server/game/Maps/Map.cpp5
-rw-r--r--src/server/game/World/WorldStates/WorldStateMgr.cpp5
2 files changed, 8 insertions, 2 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 76d2b26a789..15e6a09b2b3 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -698,8 +698,11 @@ int32 Map::GetWorldStateValue(int32 worldStateId) const
void Map::SetWorldStateValue(int32 worldStateId, int32 value, bool hidden)
{
- auto itr = _worldStateValues.try_emplace(worldStateId, 0).first;
+ auto [itr, inserted] = _worldStateValues.try_emplace(worldStateId, 0);
int32 oldValue = itr->second;
+ if (oldValue == value && !inserted)
+ return;
+
itr->second = value;
WorldStateTemplate const* worldStateTemplate = sWorldStateMgr->GetWorldStateTemplate(worldStateId);
diff --git a/src/server/game/World/WorldStates/WorldStateMgr.cpp b/src/server/game/World/WorldStates/WorldStateMgr.cpp
index 232fa1a3e61..03bd704584d 100644
--- a/src/server/game/World/WorldStates/WorldStateMgr.cpp
+++ b/src/server/game/World/WorldStates/WorldStateMgr.cpp
@@ -167,8 +167,11 @@ void WorldStateMgr::SetValue(int32 worldStateId, int32 value, bool hidden, Map*
WorldStateTemplate const* worldStateTemplate = GetWorldStateTemplate(worldStateId);
if (!worldStateTemplate || worldStateTemplate->MapIds.empty())
{
- auto itr = _realmWorldStateValues.try_emplace(worldStateId, 0).first;
+ auto [itr, inserted] = _realmWorldStateValues.try_emplace(worldStateId, 0);
int32 oldValue = itr->second;
+ if (oldValue == value && !inserted)
+ return;
+
itr->second = value;
if (worldStateTemplate)