diff --git a/include/Cubed/gameplay/packet.hpp b/include/Cubed/gameplay/packet.hpp index fe58b0c..5ebcff5 100644 --- a/include/Cubed/gameplay/packet.hpp +++ b/include/Cubed/gameplay/packet.hpp @@ -59,43 +59,53 @@ enum class PacketEnum : uint16_t { }; template struct always_false : std::false_type {}; // NOLINT -template constexpr uint16_t get_packet_id() { - using enum PacketEnum; - using std::is_same_v; - using U = std::decay_t; - constexpr auto& to_num = std::to_underlying; - if constexpr (is_same_v) { - return to_num(LOGIN_REQ); - } else if constexpr (is_same_v) { - return to_num(LOGIN_RSP); - } else if constexpr (is_same_v) { - return to_num(LOGOUT_REQ); - } else if constexpr (is_same_v) { - return to_num(LOGOUT_RSP); - } else if constexpr (is_same_v) { - return to_num(PLAYER_INFO); - } else if constexpr (is_same_v) { - return to_num(PLAYER_POS); - } else if constexpr (is_same_v) { - return to_num(PLAYER_INFO_RSP); - } else if constexpr (is_same_v) { - return to_num(CHUNK_DATA_REQ); - } else if constexpr (is_same_v) { - return to_num(CHUNK_DATA_RSP); - } else if constexpr (is_same_v) { - return to_num(BLOCK_CHANGE_REQ); - } else if constexpr (is_same_v) { - return to_num(BLOCK_CHANGE_RSP); - } else if constexpr (is_same_v) { - return to_num(UPDATE_TIME); - } else if constexpr (is_same_v) { - return to_num(PING); - } else if constexpr (is_same_v) { - return to_num(PONG); - } else { - static_assert(always_false::value, "Unknown Type"); - } +template constexpr uint16_t get_packet_id() { + static_assert(always_false::value, "Unknown Type"); + return 0; +} + +template <> constexpr uint16_t get_packet_id() { + return std::to_underlying(PacketEnum::LOGIN_REQ); +} +template <> constexpr uint16_t get_packet_id() { + return std::to_underlying(PacketEnum::LOGIN_RSP); +} +template <> constexpr uint16_t get_packet_id() { + return std::to_underlying(PacketEnum::LOGOUT_REQ); +} +template <> constexpr uint16_t get_packet_id() { + return std::to_underlying(PacketEnum::LOGOUT_RSP); +} +template <> constexpr uint16_t get_packet_id() { + return std::to_underlying(PacketEnum::PLAYER_INFO); +} +template <> constexpr uint16_t get_packet_id() { + return std::to_underlying(PacketEnum::PLAYER_POS); +} +template <> constexpr uint16_t get_packet_id() { + return std::to_underlying(PacketEnum::PLAYER_INFO_RSP); +} +template <> constexpr uint16_t get_packet_id() { + return std::to_underlying(PacketEnum::CHUNK_DATA_REQ); +} +template <> constexpr uint16_t get_packet_id() { + return std::to_underlying(PacketEnum::CHUNK_DATA_RSP); +} +template <> constexpr uint16_t get_packet_id() { + return std::to_underlying(PacketEnum::BLOCK_CHANGE_REQ); +} +template <> constexpr uint16_t get_packet_id() { + return std::to_underlying(PacketEnum::BLOCK_CHANGE_RSP); +} +template <> constexpr uint16_t get_packet_id() { + return std::to_underlying(PacketEnum::UPDATE_TIME); +} +template <> constexpr uint16_t get_packet_id() { + return std::to_underlying(PacketEnum::PING); +} +template <> constexpr uint16_t get_packet_id() { + return std::to_underlying(PacketEnum::PONG); } template