X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=network_msg.h;h=dfd6dabad717bc6676416e8a858aa7114c501fba;hb=78cc452a8343821ba47c0905d755657847dafd25;hp=4ab094227cc014935397656e3082507695aedf87;hpb=f9656a800d0262a2096c3525c2160ce38bc16828;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/network_msg.h b/network_msg.h index 4ab0942..dfd6dab 100644 --- a/network_msg.h +++ b/network_msg.h @@ -1,57 +1,142 @@ +/* + * 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; -}; enum{ k_inetmsg_blank = 0 }; +struct netmsg_blank{ + u16 inetmsg_id; +}; +/* send after version */ typedef struct netmsg_auth netmsg_auth; +enum{ k_inetmsg_auth = 1 }; struct netmsg_auth { - u32 inetmsg_id; + 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; +/* version should be sent before auth */ +typedef struct netmsg_version netmsg_version; +enum{ k_inetmsg_version = 2 }; +struct netmsg_version{ + u16 inetmsg_id; + u32 version; }; -enum{ k_inetmsg_scores_request = 2 }; -typedef struct netmsg_set_score netmsg_set_score; -struct netmsg_set_score -{ - u32 inetmsg_id; +/* server control 100 */ - u32 record_count; - struct netmsg_score_record - { - u32 trackid; - u64 playerid; - u16 points, time; - } - records[]; +/* 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 */ + + u8 animdata[]; }; -enum{ k_inetmsg_set_score = 3 }; -typedef struct netmsg_set_nickname netmsg_set_nickname; -struct netmsg_set_nickname -{ - u32 inetmsg_id; - char nickname[16]; +typedef struct netmsg_playerjoin netmsg_playerjoin; +enum{ k_inetmsg_playerjoin = 201 }; +struct netmsg_playerjoin{ + u16 inetmsg_id; + u8 index; + u64 steamid; +}; + +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[]; +}; + +typedef struct netmsg_region netmsg_region; +enum{ k_inetmsg_region = 206 }; +struct netmsg_region { + u16 inetmsg_id; + u8 client; + u32 flags; + char loc[]; +}; + +/* 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 }; -enum{ k_inetmsg_set_nickname = 4 }; #pragma pack(pop) #endif /* NETWORK_MSG_H */