diff --git a/protocol.h b/protocol.h
index a20c773d16fbe0751ac5fcb6b6f9da3c4f05b233..68ec54a55aaa9a7c44b2a1af22c74c6c66a71652 100644 (file)
--- a/protocol.h
+++ b/protocol.h
#include <stdbool.h>
#include <string.h>
-#define DEFAULT_PORT 29386
-#define PROTOCOL_VERSION 1
+#define PROTOCOL_PORT 29386
+#define PROTOCOL_VERSION 2
#define PROTOCOL_F8FRAC (1 << 7)
#define PACKED __attribute__((__packed__))
SV_SBUL = 131,
} MessageType;
-typedef enum {
- DOES_UP = 0,
- DOES_DOWN = 1,
- DOES_LEFT = 2,
- DOES_RIGHT = 3,
- DOES_FIRE = 4,
-} DoesCode;
+typedef union DoesBits {
+ uint8_t bits;
+ struct PACKED {
+ uint8_t up : 1;
+ uint8_t down : 1;
+ uint8_t left : 1;
+ uint8_t right : 1;
+ uint8_t fire : 1;
+ };
+} DoesBits;
typedef struct PACKED ClInfo {
uint8_t type;
} ClKill;
typedef struct PACKED ClDoes {
- uint8_t type;
- uint8_t code;
+ uint8_t type;
+ DoesBits code;
} ClDoes;
typedef struct PACKED SvInfo {
};
}
-static inline ProtocolMessage cl_does(DoesCode code) {
+static inline ProtocolMessage cl_does(DoesBits code) {
return (ProtocolMessage) (ClMessage) (ClDoes) {
.type = CL_DOES,
.code = code,