#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;
/* this is set IF they exist in a world that we have loaded */
world_instance *active_world;
- int hub_match, client_match;
+ 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;
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;
}
- frames[6];
+ frames[ NETWORK_BUFFERFRAMES ];
f64 t;
}
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;
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 */