X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player.c;h=f5176eb21e69701b0f45aa887d1a8d7a4736d216;hb=99376ce8eaf30125fb08dd5dc8b534800580fe47;hp=d248aec116445aa558842503ecb521c4cc950680;hpb=8b783ef3705f88f0f67ef6cd8113f79ccb25ec20;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player.c b/player.c index d248aec..f5176eb 100644 --- a/player.c +++ b/player.c @@ -7,6 +7,7 @@ #include "input.h" #include "world.h" #include "audio.h" +#include "player_replay.h" VG_STATIC int localplayer_cmd_respawn( int argc, const char *argv[] ) { @@ -163,14 +164,14 @@ void player__pass_gate( player_instance *player, ent_gate *gate ) m4x3_mulv( gate->transport, player->cam.pos, player->cam.pos ); - if( gate->type == k_gate_type_nonlocel ) - world_static.active_world = gate->target; - - world_volumes.inside = 0; + if( gate->flags & k_ent_gate_nonlocal ) + world_set_active_instance( gate->target ); audio_lock(); audio_oneshot( &audio_gate_pass, 1.0f, 0.0f ); audio_unlock(); + + replay_clear( &skaterift.replay ); } VG_STATIC void player_apply_transport_to_cam( m4x3f transport ) @@ -224,11 +225,27 @@ PLAYER_API void player__im_gui( player_instance *player ){ g_player_debugger[2] = 300; g_player_debugger[3] = 32; + player__debugtext( 2, "instance #%u", world_static.active_instance ); + + char buf_hub[96], + buf_client[96]; + if( world_static.addon_client ) + addon_alias_uid( &world_static.addon_client->alias, buf_client ); + else + strcpy( buf_client, "none" ); + + if( world_static.addon_hub ) + addon_alias_uid( &world_static.addon_hub->alias, buf_hub ); + else + strcpy( buf_hub, "none" ); + + player__debugtext( 1, "hub uid: %s", buf_hub ); + player__debugtext( 1, "client uid: %s", buf_client ); player__debugtext( 2, "director" ); player__debugtext( 1, "activity: %s", (const char *[]){ [k_skaterift_menu] = "menu", [k_skaterift_replay] = "replay", - [k_skaterift_skateshop] = "shop", + [k_skaterift_ent_focus] = "ent_focus", [k_skaterift_default] = "default" } [skaterift.activity] ); player__debugtext( 1, "time_rate: %.4f", skaterift.time_rate ); @@ -243,7 +260,6 @@ PLAYER_API void player__im_gui( player_instance *player ){ skaterift_replay_debug_info(); } -VG_STATIC void global_skateshop_exit(void); PLAYER_API void player__setpos( player_instance *player, v3f pos ){ v3_copy( pos, player->rb.co ); @@ -252,6 +268,7 @@ PLAYER_API void player__setpos( player_instance *player, v3f pos ){ } PLAYER_API void player__spawn( player_instance *player, ent_spawn *rp ){ + replay_clear( &skaterift.replay ); player__setpos( player, rp->transform.co ); v3_zero( player->rb.w ); q_identity( player->rb.q ); @@ -265,8 +282,10 @@ PLAYER_API void player__spawn( player_instance *player, ent_spawn *rp ){ player->immobile = 0; player->gate_waiting = NULL; world_static.last_use = 0.0; - - global_skateshop_exit(); + world_static.focused_entity = 0; + world_static.challenge_target = NULL; + world_static.challenge_timer = 0.0f; + world_entity_unfocus(); if( _player_reset[ player->subsystem ] ) _player_reset[ player->subsystem ]( player, rp ); @@ -277,6 +296,11 @@ PLAYER_API void player__kill( player_instance *player ){ } +PLAYER_API void player__begin_holdout( player_instance *player ){ + memcpy( &player->holdout_pose, &player->pose, sizeof(player->pose) ); + player->holdout_time = 1.0f; +} + /* implementation */ #include "player_common.c" #include "player_walk.c"