diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 19 | ||||
-rw-r--r-- | src/server/game/Server/Packets/AllPackets.h | 1 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.cpp | 28 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.h | 49 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 9 |
5 files changed, 96 insertions, 10 deletions
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<uint8>(); // 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<uint8>(); // 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 <http://www.gnu.org/licenses/>. + */ + +#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 <http://www.gnu.org/licenses/>. + */ + +#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); |