From 79b4fa7d3e0bf51591dc450c53c2681cfb80a991 Mon Sep 17 00:00:00 2001 From: Jettford Date: Tue, 19 Dec 2023 15:24:26 +0000 Subject: [PATCH] Push my suggestion for CI tests. --- .gitmodules | 3 +++ CMakeLists.txt | 1 + dCommon/dEnums/eGameMessageType.h | 8 ++++++++ dGame/dGameMessages/GameMessageHandler.cpp | 12 +++++------- dWorldServer/WorldServer.cpp | 6 +++++- thirdparty/magic_enum | 1 + 6 files changed, 23 insertions(+), 8 deletions(-) create mode 160000 thirdparty/magic_enum diff --git a/.gitmodules b/.gitmodules index 33193447..700e7536 100644 --- a/.gitmodules +++ b/.gitmodules @@ -17,3 +17,6 @@ [submodule "thirdparty/AccountManager"] path = thirdparty/AccountManager url = https://github.com/DarkflameUniverse/AccountManager +[submodule "thirdparty/magic_enum"] + path = thirdparty/magic_enum + url = https://github.com/Neargye/magic_enum.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 635f5f44..064cfba1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -297,6 +297,7 @@ set(INCLUDED_DIRECTORIES "thirdparty/recastnavigation" "thirdparty/SQLite" "thirdparty/cpplinq" + "thirdparty/magic_enum/include" "tests" "tests/dCommonTests" diff --git a/dCommon/dEnums/eGameMessageType.h b/dCommon/dEnums/eGameMessageType.h index df822c52..5f8665bb 100644 --- a/dCommon/dEnums/eGameMessageType.h +++ b/dCommon/dEnums/eGameMessageType.h @@ -3,6 +3,8 @@ #include +#include "magic_enum/magic_enum.hpp" + enum class eGameMessageType : uint16_t { GET_POSITION = 0, GET_ROTATION = 1, @@ -1602,4 +1604,10 @@ enum class eGameMessageType : uint16_t { GET_IS_ON_RAIL = 1772 }; +template <> +struct magic_enum::customize::enum_range { + static constexpr int min = 0; + static constexpr int max = 1772; +}; + #endif //!__EGAMEMESSAGETYPE__H__ diff --git a/dGame/dGameMessages/GameMessageHandler.cpp b/dGame/dGameMessages/GameMessageHandler.cpp index 55151242..1f32b095 100644 --- a/dGame/dGameMessages/GameMessageHandler.cpp +++ b/dGame/dGameMessages/GameMessageHandler.cpp @@ -37,8 +37,6 @@ #include "ePlayerFlag.h" #include "dConfig.h" -using namespace std; - void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const SystemAddress& sysAddr, LWOOBJID objectID, eGameMessageType messageID) { CBITSTREAM; @@ -49,11 +47,11 @@ void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const System User* usr = UserManager::Instance()->GetUser(sysAddr); if (!entity) { - LOG("Failed to find associated entity (%llu), aborting GM (%X)!", objectID, messageID); + LOG("Failed to find associated entity (%llu), aborting GM (%4i) %s!", objectID, messageID, magic_enum::enum_name(messageID).data()); return; } - if (messageID != eGameMessageType::READY_FOR_UPDATES) LOG_DEBUG("received game message ID: %i", messageID); + if (messageID != eGameMessageType::READY_FOR_UPDATES) LOG_DEBUG("Received GM with ID and name: %4i, %s", messageID, magic_enum::enum_name(messageID).data()); switch (messageID) { @@ -344,12 +342,12 @@ void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const System SyncSkill sync = SyncSkill(inStream); // inStream replaced &bitStream - ostringstream buffer; + std::ostringstream buffer; for (unsigned int k = 0; k < sync.sBitStream.size(); k++) { char s; s = sync.sBitStream.at(k); - buffer << setw(2) << hex << setfill('0') << (int)s << " "; + buffer << std::setw(2) << std::hex << std::setfill('0') << (int)s << " "; } if (usr != nullptr) { @@ -691,7 +689,7 @@ void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const System GameMessages::HandleCancelDonationOnPlayer(inStream, entity); break; default: - LOG_DEBUG("Unknown game message ID: %i", messageID); + LOG_DEBUG("Received Unknown GM with ID: %4i, %s", messageID, magic_enum::enum_name(messageID).data()); break; } } diff --git a/dWorldServer/WorldServer.cpp b/dWorldServer/WorldServer.cpp index 5fc0393a..25de6d18 100644 --- a/dWorldServer/WorldServer.cpp +++ b/dWorldServer/WorldServer.cpp @@ -1244,7 +1244,11 @@ void HandlePacket(Packet* packet) { } default: - LOG("Unknown world packet received: %i", int(packet->data[3])); + if (packet->bitSize < (16 + sizeof(uint32_t) * 8)) break; + + uint32_t messageId = *reinterpret_cast(&packet->data[3]); + const char* messageIdString = magic_enum::enum_name(static_cast(messageId)).data(); + LOG("Unknown world packet received: (%4i) %s", messageId, messageIdString); } } diff --git a/thirdparty/magic_enum b/thirdparty/magic_enum new file mode 160000 index 00000000..e26b05e0 --- /dev/null +++ b/thirdparty/magic_enum @@ -0,0 +1 @@ +Subproject commit e26b05e0a04529ed2ac2571919f9755ba0afee18