-#ifndef PLAYER_DEAD_C
-#define PLAYER_DEAD_C
-
-#include "player.h"
+#include "skaterift.h"
+#include "player_dead.h"
#include "gui.h"
-static void player__dead_update(void){
+struct player_dead player_dead;
+struct player_subsystem_interface player_subsystem_dead = {
+ .update = player__dead_update,
+ .post_update = player__dead_post_update,
+ .animate = player__dead_animate,
+ .pose = player__dead_pose,
+ .post_animate = player__dead_post_animate,
+ .im_gui = player__dead_im_gui,
+ .bind = player__dead_bind,
+
+ .animator_data = &player_dead.animator,
+ .animator_size = sizeof(player_dead.animator),
+ .network_animator_exchange = player__dead_animator_exchange,
+ .name = "Dead"
+};
+
+void player__dead_update(void)
+{
player_ragdoll_iter( &localplayer.ragdoll );
+
+ world_instance *world = world_current_instance();
+ world_water_player_safe( world, 0.2f );
}
-static void player__dead_post_update(void){
+void player__dead_post_update(void){
struct ragdoll_part *part =
&localplayer.ragdoll.parts[ localplayer.id_hip-1 ];
struct player_dead *d = &player_dead;
}
}
-static void player__dead_animate(void){
+void player__dead_animate(void){
struct player_dead *d = &player_dead;
struct player_dead_animator *animator = &d->animator;
struct player_ragdoll *rd = &localplayer.ragdoll;
}
}
-static void player__dead_pose( void *_animator, player_pose *pose ){
+void player__dead_pose( void *_animator, player_pose *pose )
+{
struct player_dead_animator *animator = _animator;
struct player_ragdoll *rd = &localplayer.ragdoll;
struct skeleton *sk = &localplayer.skeleton;
}
}
-static void player__dead_post_animate(void){
+void player__dead_post_animate(void)
+{
localplayer.cam_velocity_influence = 1.0f;
}
-static void player__dead_im_gui(void){
+void player__dead_im_gui(void)
+{
}
-static void player__dead_transition( enum player_die_type type ){
+void player__dead_transition( enum player_die_type type )
+{
+ if( localplayer.subsystem == k_player_subsystem_dead )
+ return;
+
localplayer.subsystem = k_player_subsystem_dead;
copy_localplayer_to_ragdoll( &localplayer.ragdoll, type );
struct gui_helper *h;
if( (h = gui_new_helper(input_button_list[k_srbind_reset], &str) )){
- vg_strcat( &str, "rewind" );
+ 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" );
+ vg_strcat( &str, "Spawn" );
}
-static void player__dead_animator_exchange( bitpack_ctx *ctx, void *data ){
+void player__dead_animator_exchange( bitpack_ctx *ctx, void *data )
+{
struct player_dead_animator *animator = data;
for( u32 i=0; i<localplayer.skeleton.bone_count; i ++ ){
}
}
-static void player__dead_bind(void){
+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 */