#define PLAYER_DEAD_C
#include "player.h"
+#include "gui.h"
static void player__dead_update(void){
player_ragdoll_iter( &localplayer.ragdoll );
v3_copy( d->co_lpf, localplayer.rb.co );
v3_zero( localplayer.rb.v );
v3_zero( localplayer.rb.w );
+
+ if( (skaterift.activity == k_skaterift_default) &&
+ button_down(k_srbind_dead_respawn) ){
+ ent_spawn *spawn = world_find_closest_spawn(
+ world_current_instance(), localplayer.rb.co );
+
+ if( spawn ){
+ v3_copy( spawn->transform.co, localplayer.rb.co );
+ player__reset();
+ srinput.state = k_input_state_resume;
+ }
+ else {
+ vg_error( "No spawns!\n" );
+ }
+ }
}
static void player__dead_animate(void){
static void player__dead_im_gui(void){
}
-static void player__dead_transition(void){
+static void player__dead_transition( enum player_die_type type ){
localplayer.subsystem = k_player_subsystem_dead;
- copy_localplayer_to_ragdoll( &localplayer.ragdoll, localplayer.rb.v );
+ copy_localplayer_to_ragdoll( &localplayer.ragdoll, type );
struct ragdoll_part *part =
&localplayer.ragdoll.parts[ localplayer.id_hip-1 ];
v3_copy( part->obj.rb.co, player_dead.co_lpf );
v3_copy( part->obj.rb.v, player_dead.v_lpf );
v3_copy( part->obj.rb.w, player_dead.w_lpf );
+
+ gui_helper_clear();
+ vg_str str;
+
+ struct gui_helper *h;
+ if( (h = gui_new_helper(input_button_list[k_srbind_reset], &str) )){
+ vg_strcat( &str, "rewind" );
+
+ if( world_static.active_instance == k_world_purpose_hub )
+ h->greyed = 1;
+ }
+
+ if( gui_new_helper(input_button_list[k_srbind_dead_respawn], &str ))
+ vg_strcat( &str, "spawn" );
}
static void player__dead_animator_exchange( bitpack_ctx *ctx, void *data ){
}
}
+static void player__dead_bind(void){
+ struct skeleton *sk = &localplayer.skeleton;
+ player_dead.anim_bail = skeleton_get_anim( sk, "pose_bail_ball" );
+}
+
#endif /* PLAYER_DEAD_C */