diff --git a/protocol.h b/protocol.h
index 26815532050839457926e8bb89b51c21bd170a71..a20c773d16fbe0751ac5fcb6b6f9da3c4f05b233 100644 (file)
--- a/protocol.h
+++ b/protocol.h
#include <string.h>
#define DEFAULT_PORT 29386
-#define PROTOCOL_VERSION 0
+#define PROTOCOL_VERSION 1
#define PROTOCOL_F8FRAC (1 << 7)
#define PACKED __attribute__((__packed__))
SV_INFO = 128,
SV_KILL = 139,
SV_SPLR = 130,
+ SV_SBUL = 131,
} MessageType;
typedef enum {
uint8_t vx, vy, vr;
} SvSplr;
+typedef struct PACKED SvSbul {
+ uint8_t type;
+ uint8_t id;
+ uint8_t owner;
+ uint8_t live;
+ uint8_t x, y;
+ uint8_t vx, vy;
+ uint8_t tick;
+} SvSbul;
+
typedef union ClMessage {
uint8_t type;
ClInfo info;
SvInfo info;
SvKill kill;
SvSplr splr;
+ SvSbul sbul;
} SvMessage;
typedef union ProtocolMessage {
case SV_INFO: return sizeof(SvInfo);
case SV_KILL: return sizeof(SvKill);
case SV_SPLR: return sizeof(SvSplr);
+ case SV_SBUL: return sizeof(SvSbul);
default: return sizeof(ProtocolMessage);
}
}
@@ -162,6 +175,20 @@ static inline ProtocolMessage sv_splr(int clid, bool live, float x, float y, flo
};
}
+static inline ProtocolMessage sv_sbul(int id, int owner, bool live, float x, float y, float vx, float vy, int tick) {
+ return (ProtocolMessage) (SvMessage) (SvSbul) {
+ .type = SV_SBUL,
+ .id = id,
+ .owner = owner,
+ .live = live,
+ .x = f2b(x),
+ .y = f2b(y),
+ .vx = f2b(vx),
+ .vy = f2b(vy),
+ .tick = tick,
+ };
+}
+
#undef PACKED
#endif /* PROTOCOL_H_INCLUDED */