Core/PacketIO: Updated SMSG_OVERRIDE_LIGHT (#23635)

* Core/PacketIO: Updated SMSG_OVERRIDE_LIGHT

(cherry picked from commit 4c94108ba9)

# 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
This commit is contained in:
ForesterDev
2019-07-25 13:08:31 +04:00
committed by Shauren
parent adbb8da025
commit b9756de7e5
3 changed files with 34 additions and 11 deletions

View File

@@ -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());
}
}

View File

@@ -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;
}

View File

@@ -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;
};
}
}