aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorForesterDev <11771800+ForesterDev@users.noreply.github.com>2020-04-04 20:34:43 +0400
committerGitHub <noreply@github.com>2020-04-04 18:34:43 +0200
commit5d70f6ccd4d63ccdfd74ba2d2dea68077be808c8 (patch)
treee532d9089d496c608e862501dc8237b8eebee365
parenta7636c39d67b17b223952861cc8c6da2725a3a3b (diff)
Core/Packets: update & enabled CMSG_SHOWING_CLOAK, CMSG_SHOWING_HELM (#24394)
(cherry picked from commit a47d57d1dbd7bc944972d7ef1773739e5019adde) Co-authored-by: DJScias <zumbak04@gmail.com>
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp19
-rw-r--r--src/server/game/Server/Packets/AllPackets.h1
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp28
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h49
-rw-r--r--src/server/game/Server/WorldSession.h9
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);