X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player.h;h=ea4ef46605d5a7ad5a0e03359fa42610eda2d398;hb=HEAD;hp=e1b44fe1104a3fc87cb6da6ebc372a7f74833be3;hpb=fe4d150c7b6b49cd9922459707f9fb9aec9dae9c;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player.h b/player.h index e1b44fe..ea4ef46 100644 --- a/player.h +++ b/player.h @@ -1,20 +1,5 @@ -#ifndef PLAYER_H -#define PLAYER_H - -#include "skaterift.h" -#include "player_common.h" -#include "network_compression.h" -#include "player_effects.h" - -enum player_subsystem{ - k_player_subsystem_walk = 0, - k_player_subsystem_skate = 1, - k_player_subsystem_dead = 2, - k_player_subsystem_drive = 3, - k_player_subsystem_basic_info = 4, - k_player_subsystem_max, - k_player_subsystem_invalid = 255 -}; +#pragma once +#include "vg/vg_platform.h" struct player_cam_controller { enum camera_mode{ @@ -35,6 +20,14 @@ struct player_cam_controller { cam_velocity_smooth; }; +#include "player_common.h" +#include "network_compression.h" +#include "player_effects.h" +#include "player_api.h" +#include "player_ragdoll.h" +#include "player_model.h" +#include "player_render.h" + struct player_subsystem_interface{ void(*system_register)(void); void(*bind)(void); @@ -47,6 +40,7 @@ struct player_subsystem_interface{ void(*effects)( void *animator, m4x3f *final_mtx, struct player_board *board, struct player_effects_data *effect_data ); void(*post_animate)(void); + void(*network_animator_exchange)( bitpack_ctx *ctx, void *data ); void(*sfx_oneshot)( u8 id, v3f pos, f32 volume ); @@ -59,36 +53,23 @@ struct player_subsystem_interface{ const char *name; }; -#include "player_ragdoll.h" -#include "player_render.h" -#include "player_model.h" - -/* subsystem headers */ -#include "player_walk.h" -#include "player_skate.h" -#include "player_dead.h" -#include "player_drive.h" -#include "player_basic_info.h" - -#include "player_replay.h" - #define PLAYER_REWIND_FRAMES 60*4 #define RESET_MAX_TIME 45.0 -static i32 k_cinema_fixed = 0; -static f32 k_cinema = 0.0f; -static i32 k_invert_y = 0; - -struct { +extern i32 k_invert_y; +struct localplayer +{ /* transform definition */ rigidbody rb; v3f angles; + bool have_glider, glider_orphan, drowned; + /* * Camera management * --------------------------- */ - camera cam; + vg_camera cam; struct player_cam_controller cam_control; f32 cam_trackshake; @@ -97,7 +78,9 @@ struct { cam_velocity_constant, cam_velocity_coefficient_smooth, cam_velocity_constant_smooth, - cam_velocity_influence_smooth; + cam_velocity_influence_smooth, + cam_dist, + cam_dist_smooth; v3f cam_land_punch, cam_land_punch_v; ent_gate *gate_waiting; @@ -117,8 +100,10 @@ struct { f32 subframe, volume; v3f location; } - sfx_buffer[4]; - u32 sfx_buffer_count; + sfx_buffer[4], /* large timeframe 1/10s; for networking */ + local_sfx_buffer[2]; /* per framerate 1/30s; for replay */ + u32 sfx_buffer_count, + local_sfx_buffer_count; /* * Animation @@ -142,7 +127,8 @@ struct { * ------------------------------------------------- */ - enum player_subsystem subsystem; /* .. prev */ + enum player_subsystem subsystem, + observing_system; /* * Rendering @@ -173,56 +159,38 @@ struct { struct player_effects_data effect_data; } -static localplayer = { - .rb = { - .co = { 0,0,0 }, - .w = { 0,0,0 }, - .v = { 0,0,0 }, - .q = { 0,0,0,1 }, - .to_world = M4X3_IDENTITY, - .to_local = M4X3_IDENTITY - } -}; - -struct player_subsystem_interface static *player_subsystems[] = { - [k_player_subsystem_walk] = &player_subsystem_walk, - [k_player_subsystem_dead] = &player_subsystem_dead, - [k_player_subsystem_drive] = &player_subsystem_drive, - [k_player_subsystem_skate] = &player_subsystem_skate, - [k_player_subsystem_basic_info]=&player_subsystem_basic_info -}; +extern localplayer; +extern struct player_subsystem_interface *player_subsystems[]; /* * Gameloop tables * --------------------------------------------------------- */ -static void player__debugtext( int size, const char *fmt, ... ); -static void player__use_mesh( glmesh *mesh ); -static void player__use_texture( vg_tex2d *tex ); -static void player__use_model( u16 reg_id ); - -static void player__bind(void); -static void player__pre_update(void); -static void player__update(void); -static void player__post_update(void); - -static void player__pass_gate( u32 id ); -static void player__im_gui(void); -static void player__setpos( v3f pos ); -static void player__spawn( ent_spawn *rp ); -static void player__clean_refs(void); -static void player__reset(void); -static void player__kill(void); -static void player__begin_holdout( v3f offset ); - -static int localplayer_cmd_respawn( int argc, const char *argv[] ); -static void player_apply_transport_to_cam( m4x3f transport ); - -static void player__clear_sfx_buffer(void); -static void player__networked_sfx( u8 system, u8 priority, u8 id, - v3f pos, f32 volume ); -static void net_sfx_exchange( bitpack_ctx *ctx, struct net_sfx *sfx ); -static void net_sfx_play( struct net_sfx *sfx ); - -#endif /* PLAYER_H */ +void player_init(void); +void player__debugtext( int size, const char *fmt, ... ); +void player__use_mesh( glmesh *mesh ); +void player__use_model( u16 reg_id ); + +void player__bind(void); +void player__pre_update(void); +void player__update(void); +void player__post_update(void); + +void player__pass_gate( u32 id ); +void player__im_gui(void); +void player__setpos( v3f pos ); +void player__spawn( ent_spawn *rp ); +void player__clean_refs(void); +void player__reset(void); +void player__kill(void); +void player__begin_holdout( v3f offset ); + +int localplayer_cmd_respawn( int argc, const char *argv[] ); +void player_apply_transport_to_cam( m4x3f transport ); + +void player__clear_sfx_buffer(void); +void player__networked_sfx( u8 system, u8 priority, u8 id, + v3f pos, f32 volume ); +void net_sfx_exchange( bitpack_ctx *ctx, struct net_sfx *sfx ); +void net_sfx_play( struct net_sfx *sfx );