X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_remote.h;h=2d3250c5b0298d439ffcbdb09fd202f41ce823b2;hb=72f789aa46c913ec2ffa10907b2124f8d09670e5;hp=9ac3186b7eaf5c69d25a32cf5699e8c913bc3842;hpb=4fa9aa9a1e09940e91cc30e171e3de0606515ef3;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_remote.h b/player_remote.h index 9ac3186..2d3250c 100644 --- a/player_remote.h +++ b/player_remote.h @@ -1,13 +1,21 @@ -#ifndef PLAYER_REMOTE_H -#define PLAYER_REMOTE_H - +#pragma once #include "player.h" #include "network.h" #include "network_common.h" +#include "player_render.h" +#include "player_effects.h" +#include "player_api.h" + +#include "player_skate.h" +#include "player_walk.h" +#include "player_dead.h" +#include "player_basic_info.h" +#include "player_glide.h" #define NETWORK_SFX_QUEUE_LENGTH 12 -struct { +struct global_netplayers +{ struct network_player { int active, isfriend, isblocked; u64 steamid; @@ -22,11 +30,20 @@ struct { /* TODO: Compression with server code */ char username[ NETWORK_USERNAME_MAX ]; char items[k_netmsg_playeritem_max][ADDON_UID_MAX]; + char chat[ NETWORK_MAX_CHAT ]; + char region[ NETWORK_REGION_MAX ]; + u32 region_flags; + f64 chat_time; + /* ui */ u32 medals[3]; + f32 opacity; u32 down_bytes; f32 down_kbs; + + struct player_effects_data effect_data; + bool render_glider; } list[ NETWORK_MAX_PLAYERS ]; @@ -37,15 +54,20 @@ struct { f64 timestamp; enum player_subsystem subsystem; - u8 instance_id; + u8 flags; u16 boundary_hash; union interp_animdata { - struct player_skate_animator _skate; - struct player_walk_animator _walk; - struct player_dead_animator _dead; + /* these aren't accessed directly, just used to take the + * max(sizeof) all systems */ + struct player_skate_animator __skate; + struct player_walk_animator __walk; + struct player_dead_animator __dead; + struct player_basic_info_animator __basic; } data; + + struct remote_glider_animator data_glider; } frames[ NETWORK_BUFFERFRAMES ]; @@ -55,21 +77,32 @@ struct { struct net_sfx sfx_queue[ NETWORK_SFX_QUEUE_LENGTH ]; - m4x3f *final_mtx; + m4x3f *final_mtx, + *glider_mtx; struct player_board_pose board_poses[ NETWORK_MAX_PLAYERS ]; u32 up_bytes; f32 up_kbs, down_kbs; f64 last_data_measurement; -} -static netplayers; - -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 */ + int chatting; + char chat_buffer[ NETWORK_MAX_CHAT ], chat_message[ NETWORK_MAX_CHAT ]; + f64 chat_time; +} +extern netplayers; + +void player_remote_rx_200_300( SteamNetworkingMessage_t *msg ); +void remote_player_debug_update(void); +void remote_player_send_playerframe(void); +void animate_remote_player( u32 index ); +void animate_remote_players(void); +void render_remote_players( world_instance *world, vg_camera *cam ); +void relink_all_remote_player_worlds(void); +void player_remote_update_friendflags( struct network_player *remote ); +void remote_players_init(void); +void remote_sfx_pre_update(void); +void remote_player_network_imgui( m4x4f pv ); +void remote_players_imgui_world( world_instance *world, m4x4f pv, + f32 max_dist, int geo_cull ); +void remote_players_imgui_lobby(void); +void remote_players_chat_imgui(void);