X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_remote.h;h=d29ffa387d44e6550215e70a99f88d7d5560de96;hb=8090b8da9ce1397ba47d7e2d91b4f1716f708f25;hp=ca96290b241231e7fc1d72c0b235c1675ed429ba;hpb=eb28dee29482c7ffe8bc0203d302e3ee6dbfd943;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_remote.h b/player_remote.h index ca96290..d29ffa3 100644 --- a/player_remote.h +++ b/player_remote.h @@ -3,18 +3,36 @@ #include "player.h" #include "network.h" +#include "network_common.h" + +#define NETWORK_SFX_QUEUE_LENGTH 12 struct { struct network_player { - int active; + int active, isfriend, isblocked; + u64 steamid; u16 board_view_slot, playermodel_view_slot; enum player_subsystem subsystem; - char username[32]; + /* this is set IF they exist in a world that we have loaded */ + world_instance *active_world; + int world_match[ k_world_max ]; + u32 location_pstr; /* TODO: valid if active_world set. */ + + /* TODO: Compression with server code */ + char username[ NETWORK_USERNAME_MAX ]; + char items[k_netmsg_playeritem_max][ADDON_UID_MAX]; + char chat[ NETWORK_MAX_CHAT ]; + f64 chat_time; + + /* ui */ + u32 medals[3]; + f32 opacity; + u32 down_bytes; f32 down_kbs; } - list[32]; + list[ NETWORK_MAX_PLAYERS ]; struct interp_buffer { /* collect the most recent 6 frames of animation data */ @@ -23,6 +41,9 @@ struct { f64 timestamp; enum player_subsystem subsystem; + u8 instance_id; + u16 boundary_hash; + union interp_animdata { struct player_skate_animator _skate; struct player_walk_animator _walk; @@ -30,17 +51,24 @@ struct { } data; } - frames[6]; + frames[ NETWORK_BUFFERFRAMES ]; f64 t; } - interp_data[32]; + interp_data[ NETWORK_MAX_PLAYERS ]; + + struct net_sfx sfx_queue[ NETWORK_SFX_QUEUE_LENGTH ]; m4x3f *final_mtx; + struct player_board_pose board_poses[ NETWORK_MAX_PLAYERS ]; u32 up_bytes; f32 up_kbs, down_kbs; f64 last_data_measurement; + + int chatting; + char chat_buffer[ NETWORK_MAX_CHAT ], chat_message[ NETWORK_MAX_CHAT ]; + f64 chat_time; } static netplayers; @@ -48,5 +76,8 @@ static void player_remote_rx_200_300( SteamNetworkingMessage_t *msg ); static void remote_player_debug_update(void); static void remote_player_send_playerframe(void); static void animate_remote_player( u32 index ); +static void render_remote_players( world_instance *world, camera *cam ); +static void relink_all_remote_player_worlds(void); +static void player_remote_update_friendflags( struct network_player *remote ); #endif /* PLAYER_REMOTE_H */