diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Maps/Map.cpp | 23 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.h | 14 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 |
4 files changed, 35 insertions, 13 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 9335539bc6e..5f476d296b3 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -3894,13 +3894,13 @@ void Map::SendZoneDynamicInfo(Player* player) player->SendDirectMessage(weather.Write()); } - 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()); } } @@ -3954,15 +3954,16 @@ void Map::SetZoneOverrideLight(uint32 zoneId, uint32 lightId, uint32 fadeInTime) 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 83f867363f5..d37e29c023a 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -609,3 +609,12 @@ void WorldPackets::Misc::SetTaxiBenchmarkMode::Read() { Enable = _worldPacket.ReadBit(); } + +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 6481e23d756..ca81a8dcc18 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -795,11 +795,23 @@ namespace WorldPackets { public: SetTaxiBenchmarkMode(WorldPacket&& packet) : ClientPacket(CMSG_SET_TAXI_BENCHMARK_MODE, std::move(packet)) { } - + void Read() override; bool Enable = false; }; + + 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; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 9c3466d813b..a0ba2c60664 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1390,7 +1390,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_LFG_DUNGEON_FINDER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_SHIPMENT_NPC_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_OVERRIDE_LIGHT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_OVERRIDE_LIGHT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAGE_TEXT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_COMMAND_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_INVITE, STATUS_NEVER, CONNECTION_TYPE_REALM); |