feat: improved networkdata enum integration

This commit is contained in:
Sara Gerretsen 2025-10-15 22:53:44 +02:00
parent dfe8cc9fcf
commit 855970b4e5
2 changed files with 31 additions and 26 deletions

View file

@ -3,9 +3,6 @@
#include <core/core_bind.h>
#include <core/object/class_db.h>
MAKE_TYPE_INFO(NetworkData::ClueID, Variant::INT);
MAKE_TYPE_INFO(NetworkData::ConnectionStatus, Variant::INT);
void NetworkData::_bind_methods() {
BIND_ENUM_CONSTANT(CLUE_FIRST);
BIND_ENUM_CONSTANT(CLUE_SECOND);

View file

@ -8,36 +8,41 @@
#include <zmq.hpp>
#include <zmq_addon.hpp>
#define __VA_ARGS__STRING(...) String(#__VA_ARGS__)
#define GDENUM(M_Name, ...) \
enum M_Name { __VA_ARGS__ }; \
static String M_Name##_hint() { \
return __VA_ARGS__STRING(__VA_ARGS__); \
}
class NetworkData : Object {
GDCLASS(NetworkData, Object);
static void _bind_methods();
public:
enum MessageType {
MSG_NONE = 0u,
// connection management messages
MSG_CONNECT = 1u,
MSG_OK,
MSG_NOK,
MSG_HEART,
MSG_BEAT,
// gameplay messages
MSG_REVEAL,
// end of messages
MSG_INVALID
};
GDENUM(MessageType,
MSG_NONE,
// connection management messages
MSG_CONNECT,
MSG_OK,
MSG_NOK,
MSG_HEART,
MSG_BEAT,
// gameplay messages
MSG_REVEAL,
// end of messages
MSG_INVALID);
enum ClueID {
CLUE_FIRST,
CLUE_SECOND,
CLUE_MAX
};
GDENUM(ClueID,
CLUE_FIRST,
CLUE_SECOND,
CLUE_MAX);
enum ConnectionStatus {
CONNECTION_DISCONNECTED,
CONNECTION_CONNECTED,
CONNECTION_AUTHENTICATED
};
GDENUM(ConnectionStatus,
CONNECTION_DISCONNECTED,
CONNECTION_CONNECTED,
CONNECTION_AUTHENTICATED);
enum NOKReason {
NOK_UNAUTHENTICATED, //!< message sender is not known by recipient.
@ -48,6 +53,9 @@ public:
};
};
MAKE_TYPE_INFO(NetworkData::ClueID, Variant::INT);
MAKE_TYPE_INFO(NetworkData::ConnectionStatus, Variant::INT);
namespace ydi {
int to_int(zmq::message_t const &msg, int failure = 0);
NetworkData::MessageType to_message_type(zmq::message_t const &msg);