X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=network_msg.h;h=83f87075b585e4db9aea727725bce29ee037aefe;hb=a7d144c7905105909cc4434e0ab43008bbb8f89f;hp=b76e695fbb75031d931131303e5c478008e6bf55;hpb=333430b27b5f9f73cbe9ad7921a4735aaff444f1;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/network_msg.h b/network_msg.h index b76e695..83f8707 100644 --- a/network_msg.h +++ b/network_msg.h @@ -13,16 +13,15 @@ #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[]; @@ -32,14 +31,14 @@ enum{ k_inetmsg_auth = 1 }; 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 @@ -54,20 +53,10 @@ 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_set_nickname netmsg_set_nickname; -struct netmsg_set_nickname -{ - u32 inetmsg_id; - char nickname[16]; -}; -enum{ k_inetmsg_set_nickname = 4 }; - - 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 @@ -87,43 +76,96 @@ static scoreboard_client_data = { /* player updates 200 */ -/* client -> remote */ +#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{ - u32 inetmsg_id; - u8 client, subsystem; + 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[]; }; -/* remote -> client */ typedef struct netmsg_playerjoin netmsg_playerjoin; enum{ k_inetmsg_playerjoin = 201 }; struct netmsg_playerjoin{ - u32 inetmsg_id; - - u32 index; - char username[32]; /* UNUSED */ - char playermodel_uid[76]; /* UNUSED */ - char board_uid[76]; /* UNUSED */ + u16 inetmsg_id; + u8 index; }; - -/* remote -> client */ typedef struct netmsg_playerleave netmsg_playerleave; enum{ k_inetmsg_playerleave = 202 }; struct netmsg_playerleave{ - u32 inetmsg_id; - u32 index; + u16 inetmsg_id; + u8 index; }; -/* client <-> remote */ typedef struct netmsg_playerusername netmsg_playerusername; enum{ k_inetmsg_playerusername = 203 }; struct netmsg_playerusername{ - u32 inetmsg_id; - u32 index; - char username[32]; + 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[]; +}; +typedef enum netmsg_playeritem_type netmsg_playeritem_type; +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_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)