#include "player.h"
#include "camera.h"
#include "player_model.h"
+#include "input.h"
+#include "world.h"
+#include "audio.h"
VG_STATIC int localplayer_cmd_respawn( int argc, const char *argv[] )
{
PLAYER_API
void player__debugtext( int size, const char *fmt, ... )
{
+#if 0
char buffer[ 1024 ];
va_list args;
ui_text( vg_uictx.cursor, buffer, size, k_text_align_right );
vg_uictx.cursor[1] += 14*size;
+#endif
}
/*
assert( only_once == 0 );
only_once ++;
- inst->input_js1h = vg_create_named_input( "steer-h", k_input_type_axis );
- inst->input_js1v = vg_create_named_input( "steer-v", k_input_type_axis );
- inst->input_grab = vg_create_named_input( "grab", k_input_type_axis_norm);
- inst->input_js2h = vg_create_named_input( "grab-h", k_input_type_axis );
- inst->input_js2v = vg_create_named_input( "grab-v", k_input_type_axis );
- inst->input_jump = vg_create_named_input( "jump", k_input_type_button );
- inst->input_push = vg_create_named_input( "push", k_input_type_button );
- inst->input_walk = vg_create_named_input( "walk", k_input_type_button );
- inst->input_walkh= vg_create_named_input( "walk-h", k_input_type_axis );
- inst->input_walkv= vg_create_named_input( "walk-v", k_input_type_axis );
- inst->input_use = vg_create_named_input( "use", k_input_type_button );
- inst->input_reset= vg_create_named_input( "reset", k_input_type_button );
- inst->input_camera=vg_create_named_input( "camera", k_input_type_button );
- inst->input_trick0=vg_create_named_input( "trick0", k_input_type_button );
- inst->input_trick1=vg_create_named_input( "trick1", k_input_type_button );
- inst->input_trick2=vg_create_named_input( "trick2", k_input_type_button );
-
- const char *default_cfg[] =
- {
- "bind steer-h gp-ls-h",
- "bind -steer-h a",
- "bind +steer-h d",
-
- "bind steer-v gp-ls-v",
- "bind -steer-v w",
- "bind +steer-v s",
-
- "bind grab gp-rt",
- "bind +grab shift",
- "bind grab-h gp-rs-h",
- "bind grab-v gp-rs-v",
-
- "bind jump space",
- "bind jump gp-a",
-
- "bind trick0 mouse1",
- "bind trick0 gp-a",
- "bind trick1 mouse2",
- "bind trick1 gp-b",
- "bind trick2 gp-x", /* keyboard: m0 + m1 */
-
- "bind push gp-b",
- "bind push w",
-
- "bind walk shift",
- "bind walk gp-ls",
-
- "bind walk-h gp-ls-h",
- "bind walk-v -gp-ls-v",
- "bind +walk-h d",
- "bind -walk-h a",
- "bind +walk-v w",
- "bind -walk-v s",
-
- "bind reset gp-lb",
- "bind reset r",
-
- "bind use gp-y",
- "bind use e",
- "bind camera c",
- "bind camera gp-rb"
- };
-
- for( int i=0; i<vg_list_size(default_cfg); i++ )
- vg_execute_console_input(default_cfg[i]);
-
v3_zero( inst->rb.co );
v3_zero( inst->rb.w );
v3_zero( inst->rb.v );
player->playermodel = mdl;
}
-PLAYER_API
-void player__use_board( player_instance *player, struct player_board *mdl )
-{
- player->playerboard = mdl;
-}
-
PLAYER_API
void player__bind( player_instance *player )
{
return;
}
- if( vg_input_button_down( player->input_reset ) ){
- double delta = world_global.time - world_global.last_use;
+ if( button_down( k_srbind_reset ) && !player->immobile ){
+ f64 delta = world_static.time - world_static.last_use;
- if( (delta <= RESET_MAX_TIME) && (world_global.last_use != 0.0) ){
+ if( (delta <= RESET_MAX_TIME) && (world_static.last_use != 0.0) ){
player->rewinding = 1;
player->rewind_sound_wait = 1;
player->rewind_time = (double)player->rewind_length - 0.0001;
}
}
- if( vg_input_button_down( player->input_camera ) ){
+ if( button_down( k_srbind_camera ) && !player->immobile ){
if( player->camera_mode == k_cam_firstperson )
player->camera_mode = k_cam_thirdperson;
else
PLAYER_API
void player__pass_gate( player_instance *player, ent_gate *gate )
{
- world_routes_fracture( get_active_world(), gate,
+ world_routes_fracture( world_current_instance(), gate,
player->rb.co, player->rb.v );
player->gate_waiting = gate;
- world_routes_activate_entry_gate( get_active_world(), gate );
+ world_routes_activate_entry_gate( world_current_instance(), gate );
m4x3_mulv( gate->transport, player->tpv_lpf, player->tpv_lpf );
m3x3_mulv( gate->transport, player->cam_velocity_smooth,
player_save_rewind_frame( player );
if( gate->type == k_gate_type_nonlocel )
- world_global.active_world = gate->target;
+ world_static.active_world = gate->target;
- world_global.in_volume = 0;
+ world_volumes.inside = 0;
audio_lock();
audio_oneshot( &audio_gate_pass, 1.0f, 0.0f );
PLAYER_API void player__im_gui( player_instance *player )
{
+#if 0
vg_uictx.cursor[0] = vg.window_x - 200;
vg_uictx.cursor[1] = 0;
vg_uictx.cursor[2] = 200;
b[2].co[1] = vg_uictx.cursor[1];
b[3].co[1] = vg_uictx.cursor[1];
+#endif
}
+VG_STATIC void global_skateshop_exit(void);
PLAYER_API void player__spawn( player_instance *player,
ent_spawn *rp )
{
m3x3_identity( player->invbasis );
player->subsystem = k_player_subsystem_walk;
+ player->immobile = 0;
player->gate_waiting = NULL;
+ global_skateshop_exit();
+
if( _player_reset[ player->subsystem ] )
_player_reset[ player->subsystem ]( player, rp );
}
}
+/* implementation */
+#include "player_common.c"
+#include "player_walk.c"
+#include "player_skate.c"
+#include "player_dead.c"
+#include "player_drive.c"
+#include "player_render.c"
+#include "player_ragdoll.c"
+
#endif /* PLAYER_C */