X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=network_msg.h;h=c28f5b3c5607b2762574323ee189b274568f634c;hb=ce0205fd929e5fb1446f8c52fcab344884d82569;hp=b26300926fc3412b971dc01e63971989da7d405f;hpb=91d035f4845a6f9f62487b43e5142c4148e7f047;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/network_msg.h b/network_msg.h index b263009..c28f5b3 100644 --- a/network_msg.h +++ b/network_msg.h @@ -1,44 +1,144 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + */ + #ifndef NETWORK_MSG_H #define NETWORK_MSG_H #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 +{ + u16 inetmsg_id; + + u32 ticket_length; + u8 ticket[]; +}; +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 = 1 }; +enum{ k_inetmsg_scores_request = 2 }; -typedef struct netmsg_scores_info netmsg_scores_info; -struct netmsg_scores_info +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 { u32 trackid; + u64 playerid; + u16 points, time; + } + records[]; +}; +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 */ - struct netmsg_score_entry - { - u64 steamid64; - u16 points, time; - } - top10[10]; +typedef struct netmsg_scoreboard netmsg_scoreboard; +enum{ k_inetmsg_scoreboard = 5 }; +struct netmsg_scoreboard{ + u16 inetmsg_id; + + u32 board_count; + struct netmsg_board + { + char data[27*13]; } - scores[]; + boards[ vg_list_size(track_infos) ]; +} +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; }; -enum{ k_inetmsg_scores_info = 2 }; + +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[]; +}; +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 +}; + #pragma pack(pop) #endif /* NETWORK_MSG_H */