diff options
| author | Shauren <shauren.trinity@gmail.com> | 2016-07-10 00:33:43 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-07-10 00:37:33 +0200 |
| commit | 0d9136f7648e623d6b15d67e2d4d83e91d3603da (patch) | |
| tree | e2b8a2daf702b21a5e9670d9705e7d18fbd3b094 /src/server/game/Server/Packets | |
| parent | ef344664e3ee1bef048cf197d416e83b95c74e30 (diff) | |
| parent | a78aa3cf4ef3f33903ec9f06d8fdc46e81c51cb3 (diff) | |
Merge branch '6.x' of https://github.com/TrinityCore/TrinityCore into legion
Diffstat (limited to 'src/server/game/Server/Packets')
4 files changed, 87 insertions, 12 deletions
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index 69cb22659cd..52fb54c725a 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -18,6 +18,32 @@ #include "AuthenticationPackets.h" #include "HmacHash.h" +bool WorldPackets::Auth::EarlyProcessClientPacket::ReadNoThrow() +{ + try + { + Read(); + return true; + } + catch (ByteBufferPositionException const& ex) + { + } + + return false; +} + +void WorldPackets::Auth::Ping::Read() +{ + _worldPacket >> Serial; + _worldPacket >> Latency; +} + +const WorldPacket* WorldPackets::Auth::Pong::Write() +{ + _worldPacket << uint32(Serial); + return &_worldPacket; +} + WorldPacket const* WorldPackets::Auth::AuthChallenge::Write() { _worldPacket.append(DosChallenge, 8); diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h index f17e079f0fb..ef29cfae0d1 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.h +++ b/src/server/game/Server/Packets/AuthenticationPackets.h @@ -31,6 +31,36 @@ namespace WorldPackets { namespace Auth { + class EarlyProcessClientPacket : public ClientPacket + { + public: + EarlyProcessClientPacket(OpcodeClient opcode, WorldPacket&& packet) : ClientPacket(opcode, std::move(packet)) { } + + bool ReadNoThrow(); + }; + + class Ping final : public EarlyProcessClientPacket + { + public: + Ping(WorldPacket&& packet) : EarlyProcessClientPacket(CMSG_PING, std::move(packet)) { } + + uint32 Serial = 0; + uint32 Latency = 0; + + private: + void Read(); + }; + + class Pong final : public ServerPacket + { + public: + Pong(uint32 serial) : ServerPacket(SMSG_PONG, 4), Serial(serial) { } + + WorldPacket const* Write() override; + + uint32 Serial = 0; + }; + class AuthChallenge final : public ServerPacket { public: @@ -43,19 +73,17 @@ namespace WorldPackets uint8 DosZeroBits = 0; }; - class AuthSession final : public ClientPacket + class AuthSession final : public EarlyProcessClientPacket { public: static uint32 const DigestLength = 24; - AuthSession(WorldPacket&& packet) : ClientPacket(CMSG_AUTH_SESSION, std::move(packet)) + AuthSession(WorldPacket&& packet) : EarlyProcessClientPacket(CMSG_AUTH_SESSION, std::move(packet)) { LocalChallenge.fill(0); Digest.fill(0); } - void Read() override; - uint16 Build = 0; int8 BuildType = 0; uint32 RegionID = 0; @@ -66,6 +94,9 @@ namespace WorldPackets uint64 DosResponse = 0; std::string RealmJoinTicket; bool UseIPv6 = false; + + private: + void Read() override; }; class AuthResponse final : public ServerPacket @@ -172,23 +203,24 @@ namespace WorldPackets BigNumber iqmp; }; - class AuthContinuedSession final : public ClientPacket + class AuthContinuedSession final : public EarlyProcessClientPacket { public: static uint32 const DigestLength = 24; - AuthContinuedSession(WorldPacket&& packet) : ClientPacket(CMSG_AUTH_CONTINUED_SESSION, std::move(packet)) + AuthContinuedSession(WorldPacket&& packet) : EarlyProcessClientPacket(CMSG_AUTH_CONTINUED_SESSION, std::move(packet)) { LocalChallenge.fill(0); Digest.fill(0); } - void Read() override; - uint64 DosResponse = 0; uint64 Key = 0; std::array<uint8, 16> LocalChallenge; std::array<uint8, DigestLength> Digest; + + private: + void Read() override; }; class ResumeComms final : public ServerPacket @@ -199,15 +231,16 @@ namespace WorldPackets WorldPacket const* Write() override { return &_worldPacket; } }; - class ConnectToFailed final : public ClientPacket + class ConnectToFailed final : public EarlyProcessClientPacket { public: - ConnectToFailed(WorldPacket&& packet) : ClientPacket(CMSG_CONNECT_TO_FAILED, std::move(packet)) { } - - void Read() override; + ConnectToFailed(WorldPacket&& packet) : EarlyProcessClientPacket(CMSG_CONNECT_TO_FAILED, std::move(packet)) { } ConnectToSerial Serial = ConnectToSerial::None; uint8 Con = 0; + + private: + void Read() override; }; class EnableEncryption final : public ServerPacket diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp index 959f39eccbe..dfa490135b0 100644 --- a/src/server/game/Server/Packets/InstancePackets.cpp +++ b/src/server/game/Server/Packets/InstancePackets.cpp @@ -157,3 +157,10 @@ WorldPacket const* WorldPackets::Instance::InstanceEncounterGainCombatResurrecti return &_worldPacket; } + +WorldPacket const* WorldPackets::Instance::BossKillCredit::Write() +{ + _worldPacket << uint32(DungeonEncounterID); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/InstancePackets.h b/src/server/game/Server/Packets/InstancePackets.h index 8895a8aaf82..d9e957aa470 100644 --- a/src/server/game/Server/Packets/InstancePackets.h +++ b/src/server/game/Server/Packets/InstancePackets.h @@ -235,6 +235,15 @@ namespace WorldPackets int32 InCombatResCount = 0; uint32 CombatResChargeRecovery = 0; }; + + class BossKillCredit final : public ServerPacket + { + public: + BossKillCredit() : ServerPacket(SMSG_BOSS_KILL_CREDIT, 4) { } + + WorldPacket const* Write() override; + uint32 DungeonEncounterID = 0; + }; } } |
