diff options
author | ForesterDev <11771800+ForesterDev@users.noreply.github.com> | 2019-07-25 13:08:31 +0400 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2019-07-25 11:08:31 +0200 |
commit | b9756de7e5b8147569faebb31caad91d3d0cd7dd (patch) | |
tree | 6ff20031735e2ead84171c6b8a5de107e42d6cc5 /src | |
parent | adbb8da0259063c7d8f15ba36e5b727f286a6cd7 (diff) |
Core/PacketIO: Updated SMSG_OVERRIDE_LIGHT (#23635)
* Core/PacketIO: Updated SMSG_OVERRIDE_LIGHT
(cherry picked from commit 4c94108ba9c593e72a77232d46b114a2f5c027e3)
# Conflicts:
# src/server/game/Maps/Map.cpp
# src/server/game/Server/Packets/MiscPackets.cpp
# src/server/game/Server/Packets/MiscPackets.h
# src/server/game/Server/Protocol/Opcodes.cpp
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Maps/Map.cpp | 23 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.h | 12 |
3 files changed, 34 insertions, 11 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 7a4721f474e..78f8c2e1ed3 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -4537,13 +4537,13 @@ void Map::SendZoneDynamicInfo(uint32 zoneId, Player* player) const SendZoneWeather(itr->second, player); - if (uint32 overrideLight = itr->second.OverrideLightId) + if (uint32 overrideLightId = itr->second.OverrideLightId) { - WorldPacket data(SMSG_OVERRIDE_LIGHT, 4 + 4 + 1); - data << uint32(_defaultLight); - data << uint32(overrideLight); - data << uint32(itr->second.LightFadeInTime); - player->SendDirectMessage(&data); + WorldPackets::Misc::OverrideLight overrideLight; + overrideLight.AreaLightID = _defaultLight; + overrideLight.OverrideLightID = overrideLightId; + overrideLight.TransitionMilliseconds = itr->second.LightFadeInTime; + player->SendDirectMessage(overrideLight.Write()); } } @@ -4633,15 +4633,16 @@ void Map::SetZoneOverrideLight(uint32 zoneId, uint32 lightId, uint32 fadeInTime) Map::PlayerList const& players = GetPlayers(); if (!players.isEmpty()) { - WorldPacket data(SMSG_OVERRIDE_LIGHT, 4 + 4 + 1); - data << uint32(_defaultLight); - data << uint32(lightId); - data << uint32(fadeInTime); + WorldPackets::Misc::OverrideLight overrideLight; + overrideLight.AreaLightID = _defaultLight; + overrideLight.OverrideLightID = lightId; + overrideLight.TransitionMilliseconds = fadeInTime; + overrideLight.Write(); for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) if (Player* player = itr->GetSource()) if (player->GetZoneId() == zoneId) - player->SendDirectMessage(&data); + player->SendDirectMessage(overrideLight.GetRawPacket()); } } diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index 6348fe3b339..40ac6b89524 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -30,3 +30,13 @@ WorldPacket const* WorldPackets::Misc::Weather::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::Misc::OverrideLight::Write() +{ + _worldPacket << int32(AreaLightID); + _worldPacket << int32(OverrideLightID); + _worldPacket << int32(TransitionMilliseconds); + + return &_worldPacket; +} + diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 4033b44e97d..62d5fba3c04 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -39,6 +39,18 @@ namespace WorldPackets float Intensity = 0.0f; WeatherState WeatherID = WeatherState(0); }; + + class OverrideLight final : public ServerPacket + { + public: + OverrideLight() : ServerPacket(SMSG_OVERRIDE_LIGHT, 4 + 4 + 4) { } + + WorldPacket const* Write() override; + + int32 AreaLightID = 0; + int32 TransitionMilliseconds = 0; + int32 OverrideLightID = 0; + }; } } |