#include "vg/vg_stdint.h"
#include "world_info.h"
#include "vg/vg_platform.h"
+;
#pragma pack(push,1)
typedef struct netmsg_blank netmsg_blank;
-struct netmsg_blank
-{
- u32 inetmsg_id;
+struct netmsg_blank{
+ u16 inetmsg_id;
};
enum{ k_inetmsg_blank = 0 };
typedef struct netmsg_auth netmsg_auth;
struct netmsg_auth
{
- u32 inetmsg_id;
+ u16 inetmsg_id;
u32 ticket_length;
u8 ticket[];
typedef struct netmsg_scores_request netmsg_scores_request;
struct netmsg_scores_request
{
- u32 inetmsg_id;
+ u16 inetmsg_id;
};
enum{ k_inetmsg_scores_request = 2 };
typedef struct netmsg_set_score netmsg_set_score;
struct netmsg_set_score
{
- u32 inetmsg_id;
+ u16 inetmsg_id;
u32 record_count;
struct netmsg_score_record
}
records[];
};
-enum{ k_inetmsg_set_score = 3 };
-
-typedef struct netmsg_set_nickname netmsg_set_nickname;
-struct netmsg_set_nickname
-{
- u32 inetmsg_id;
- char nickname[16];
-};
-enum{ k_inetmsg_set_nickname = 4 };
-
+enum{ k_inetmsg_set_score = 6 };
+/* 31.05.23: k_inetmsg_set_score id changed from ID 3 to ID 6,
+ * 3 is now INVALID */
typedef struct netmsg_scoreboard netmsg_scoreboard;
enum{ k_inetmsg_scoreboard = 5 };
-struct netmsg_scoreboard
-{
- u32 inetmsg_id;
+struct netmsg_scoreboard{
+ u16 inetmsg_id;
u32 board_count;
struct netmsg_board
}
boards[ vg_list_size(track_infos) ];
}
-VG_STATIC scoreboard_client_data = {
+static scoreboard_client_data = {
.inetmsg_id = k_inetmsg_scoreboard,
.board_count = vg_list_size(track_infos)
};
/* probably about 10k */
+/* server control 100 */
+
+
+/* player updates 200 */
+
+#define NETMSG_BOUNDARY_BIT 0x8000
+#define NETMSG_GATE_BOUNDARY_BIT 0x4000
+#define NETMSG_BOUNDARY_MASK (NETMSG_BOUNDARY_BIT|NETMSG_GATE_BOUNDARY_BIT)
+
+typedef struct netmsg_playerframe netmsg_playerframe;
+enum{ k_inetmsg_playerframe = 200 };
+struct netmsg_playerframe{
+ u16 inetmsg_id;
+ f64 timestamp;
+
+ u8 client, subsystem,
+ instance_id, sound_effects;
+ u16 boundary_hash; /* used for animating correctly through gates, teleport..
+ msb is a flip flop for teleporting
+ second msb is flip flop for gate
+
+TODO: disable oblique clipping on cam mtx when rendering remote players
+ also render over the portal stencil? somehow.
+
+ detransform, interp, retransform. render in dest world. */
+
+ u8 animdata[];
+};
+
+typedef struct netmsg_playerjoin netmsg_playerjoin;
+enum{ k_inetmsg_playerjoin = 201 };
+struct netmsg_playerjoin{
+ u16 inetmsg_id;
+ u8 index;
+};
+
+typedef struct netmsg_playerleave netmsg_playerleave;
+enum{ k_inetmsg_playerleave = 202 };
+struct netmsg_playerleave{
+ u16 inetmsg_id;
+ u8 index;
+};
+
+typedef struct netmsg_playerusername netmsg_playerusername;
+enum{ k_inetmsg_playerusername = 203 };
+struct netmsg_playerusername{
+ u16 inetmsg_id;
+ u8 index;
+ char name[];
+};
+
+typedef struct netmsg_playeritem netmsg_playeritem;
+enum{ k_inetmsg_playeritem = 204 };
+struct netmsg_playeritem{
+ u16 inetmsg_id;
+ u8 client;
+ u8 type_index;
+ char uid[];
+};
+enum netmsg_playeritem_type {
+ k_netmsg_playeritem_board = 0,
+ k_netmsg_playeritem_player,
+ k_netmsg_playeritem_world0,
+ k_netmsg_playeritem_world1,
+ k_netmsg_playeritem_max
+};
+
+typedef struct netmsg_chat netmsg_chat;
+enum{ k_inetmsg_chat = 205 };
+struct netmsg_chat {
+ u16 inetmsg_id;
+ u8 client;
+ char msg[];
+};
+
+/* requests 300 */
+typedef struct netmsg_request netmsg_request;
+enum{ k_inetmsg_request = 300, k_inetmsg_response = 301 };
+struct netmsg_request {
+ u16 inetmsg_id;
+ u8 id, status;
+ u8 q[];
+};
+
+enum request_status {
+ k_request_status_client_error = 0,
+ k_request_status_invalid_endpoint = 1,
+ k_request_status_unauthorized = 2,
+
+ k_request_status_server_error = 100,
+ k_request_status_out_of_memory = 101,
+ k_request_status_database_error = 102,
+
+ k_request_status_ok = 200,
+ k_request_status_not_found = 201
+};
+
#pragma pack(pop)
#endif /* NETWORK_MSG_H */