aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Maps/Map.cpp23
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp10
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h12
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;
+ };
}
}