From 5d70f6ccd4d63ccdfd74ba2d2dea68077be808c8 Mon Sep 17 00:00:00 2001 From: ForesterDev <11771800+ForesterDev@users.noreply.github.com> Date: Sat, 4 Apr 2020 20:34:43 +0400 Subject: Core/Packets: update & enabled CMSG_SHOWING_CLOAK, CMSG_SHOWING_HELM (#24394) (cherry picked from commit a47d57d1dbd7bc944972d7ef1773739e5019adde) Co-authored-by: DJScias --- src/server/game/Handlers/CharacterHandler.cpp | 19 +++++---- src/server/game/Server/Packets/AllPackets.h | 1 + .../game/Server/Packets/CharacterPackets.cpp | 28 +++++++++++++ src/server/game/Server/Packets/CharacterPackets.h | 49 ++++++++++++++++++++++ src/server/game/Server/WorldSession.h | 9 +++- 5 files changed, 96 insertions(+), 10 deletions(-) create mode 100644 src/server/game/Server/Packets/CharacterPackets.cpp create mode 100644 src/server/game/Server/Packets/CharacterPackets.h (limited to 'src') diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index c836979109b..7b54c313142 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -19,6 +19,7 @@ #include "ArenaTeamMgr.h" #include "CalendarMgr.h" #include "CharacterCache.h" +#include "CharacterPackets.h" #include "Chat.h" #include "DatabaseEnv.h" #include "DBCStores.h" @@ -1072,18 +1073,20 @@ void WorldSession::HandleSetFactionInactiveOpcode(WorldPacket& recvData) _player->GetReputationMgr().SetInactive(replistid, inactive != 0); } -void WorldSession::HandleShowingHelmOpcode(WorldPacket& recvData) +void WorldSession::HandleShowingHelmOpcode(WorldPackets::Character::ShowingHelm& packet) { - TC_LOG_DEBUG("network", "CMSG_SHOWING_HELM for %s", _player->GetName().c_str()); - recvData.read_skip(); // unknown, bool? - _player->ToggleFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM); + if (packet.ShowHelm) + _player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM); + else + _player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM); } -void WorldSession::HandleShowingCloakOpcode(WorldPacket& recvData) +void WorldSession::HandleShowingCloakOpcode(WorldPackets::Character::ShowingCloak& packet) { - TC_LOG_DEBUG("network", "CMSG_SHOWING_CLOAK for %s", _player->GetName().c_str()); - recvData.read_skip(); // unknown, bool? - _player->ToggleFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK); + if (packet.ShowCloak) + _player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK); + else + _player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK); } void WorldSession::HandleCharRenameOpcode(WorldPacket& recvData) diff --git a/src/server/game/Server/Packets/AllPackets.h b/src/server/game/Server/Packets/AllPackets.h index 93badb96545..c6f6c672277 100644 --- a/src/server/game/Server/Packets/AllPackets.h +++ b/src/server/game/Server/Packets/AllPackets.h @@ -18,6 +18,7 @@ #ifndef AllPackets_h__ #define AllPackets_h__ +#include "CharacterPackets.h" #include "ChatPackets.h" #include "CombatPackets.h" #include "GuildPackets.h" diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp new file mode 100644 index 00000000000..78a5e4f2849 --- /dev/null +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -0,0 +1,28 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "CharacterPackets.h" + +void WorldPackets::Character::ShowingCloak::Read() +{ + _worldPacket >> ShowCloak; +} + +void WorldPackets::Character::ShowingHelm::Read() +{ + _worldPacket >> ShowHelm; +} diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h new file mode 100644 index 00000000000..e7da51f5a96 --- /dev/null +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -0,0 +1,49 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef CharacterPackets_h__ +#define CharacterPackets_h__ + +#include "Packet.h" + +namespace WorldPackets +{ + namespace Character + { + class ShowingCloak final : public ClientPacket + { + public: + ShowingCloak(WorldPacket&& packet) : ClientPacket(CMSG_SHOWING_CLOAK, std::move(packet)) { } + + void Read() override; + + bool ShowCloak = false; + }; + + class ShowingHelm final : public ClientPacket + { + public: + ShowingHelm(WorldPacket&& packet) : ClientPacket(CMSG_SHOWING_HELM, std::move(packet)) { } + + void Read() override; + + bool ShowHelm = false; + }; + } +} + +#endif // CharacterPackets_h__ diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 5e60925a8e0..d4f96716986 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -78,6 +78,11 @@ class RBACData; namespace WorldPackets { + namespace Character + { + class ShowingCloak; + class ShowingHelm; + } namespace Chat { class EmoteClient; @@ -582,8 +587,8 @@ class TC_GAME_API WorldSession void HandleMountSpecialAnimOpcode(WorldPacket& recvdata); // character view - void HandleShowingHelmOpcode(WorldPacket& recvData); - void HandleShowingCloakOpcode(WorldPacket& recvData); + void HandleShowingHelmOpcode(WorldPackets::Character::ShowingHelm& packet); + void HandleShowingCloakOpcode(WorldPackets::Character::ShowingCloak& packet); // repair void HandleRepairItemOpcode(WorldPacket& recvPacket); -- cgit v1.2.3