aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorForesterDev <11771800+ForesterDev@users.noreply.github.com>2020-04-26 23:10:07 +0300
committerGitHub <noreply@github.com>2020-04-26 22:10:07 +0200
commit332b2f1f538e830701e48d8f1574911149c59619 (patch)
treee13453304e212bf8bdbd90f4075b9eb00b63a71e /src/server/game/Server
parent84c91cdef9185527ef3f856e185d5c7acf8be8b8 (diff)
Core/PacketIO: updated CMSG_TOGGLE_PVP opcode (#24476)
* Core/PacketIO: updated CMSG_TOGGLE_PVP opcode * Use Optional<T>. Restore ApplyModFlag() code. * Fix no-pch build Co-authored-by: jackpoz <giacomopoz@gmail.com>
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h13
-rw-r--r--src/server/game/Server/WorldSession.h3
3 files changed, 21 insertions, 1 deletions
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index 879449ec031..bfd279bbd68 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -188,6 +188,12 @@ WorldPacket const* WorldPackets::Misc::UITime::Write()
return &_worldPacket;
}
+void WorldPackets::Misc::TogglePvP::Read()
+{
+ if (HasPvPStatus())
+ _worldPacket >> *Enable;
+}
+
void WorldPackets::Misc::WorldTeleport::Read()
{
_worldPacket >> Time;
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index 6e9d9858b50..7478061850a 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -21,6 +21,7 @@
#include "Packet.h"
#include "Position.h"
#include "ObjectGuid.h"
+#include "Optional.h"
#include "Weather.h"
enum WeatherState : uint32;
@@ -297,6 +298,18 @@ namespace WorldPackets
ObjectGuid Roller;
};
+ class TogglePvP final : public ClientPacket
+ {
+ public:
+ TogglePvP(WorldPacket&& packet) : ClientPacket(CMSG_TOGGLE_PVP, std::move(packet)) { }
+
+ void Read() override;
+
+ bool HasPvPStatus() const { return GetSize() == 1; }
+
+ Optional<bool> Enable;
+ };
+
class UITime final : public ServerPacket
{
public:
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 7ff716f838d..1621ba03de7 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -141,6 +141,7 @@ namespace WorldPackets
class NextCinematicCamera;
class OpeningCinematic;
class RandomRollClient;
+ class TogglePvP;
class WorldTeleport;
}
@@ -631,7 +632,7 @@ class TC_GAME_API WorldSession
void HandleReportLag(WorldPacket& recvPacket);
void HandleGMResponseResolve(WorldPacket& recvPacket);
- void HandleTogglePvP(WorldPacket& recvPacket);
+ void HandleTogglePvP(WorldPackets::Misc::TogglePvP& togglePvP);
void HandleZoneUpdateOpcode(WorldPacket& recvPacket);
void HandleSetSelectionOpcode(WorldPacket& recvPacket);