From db79e29121b74dc62da1b68cf1e25fb8e31ffbdf Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 9 Jul 2022 00:50:29 +0200 Subject: Core/WorldStates: Skip sending SMSG_UPDATE_WORLD_STATE when value does not change --- src/server/game/Maps/Map.cpp | 5 ++++- src/server/game/World/WorldStates/WorldStateMgr.cpp | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src') 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) -- cgit v1.2.3