diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-07-09 00:50:29 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-07-09 00:50:29 +0200 |
commit | db79e29121b74dc62da1b68cf1e25fb8e31ffbdf (patch) | |
tree | 93e51e53d81d526298cc3396a1358946ab385a90 | |
parent | 5dca7309f4db9de348525987d236cd03657ef21f (diff) |
Core/WorldStates: Skip sending SMSG_UPDATE_WORLD_STATE when value does not change
-rw-r--r-- | src/server/game/Maps/Map.cpp | 5 | ||||
-rw-r--r-- | src/server/game/World/WorldStates/WorldStateMgr.cpp | 5 |
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) |