revision 2
[carveJwlIkooP6JGAAIwe30JlM.git] / player_skate.c
index b193173b888960bc497c9d2cfecf520a7fdf7171..11ff6ae8348e88bfda5862532b2905de5bf84344 100644 (file)
@@ -1,6 +1,4 @@
-#ifndef PLAYER_SKATE_C
-#define PLAYER_SKATE_C
-
+#include "player_skate.h"
 #include "player.h"
 #include "audio.h"
 #include "vg/vg_perlin.h"
@@ -8,13 +6,39 @@
 #include "menu.h"
 #include "ent_skateshop.h"
 #include "addon.h"
+#include "input.h"
+#include "ent_tornado.h"
 
-#include "ent_tornado.c"
 #include "vg/vg_rigidbody.h"
 #include "scene_rigidbody.h"
 #include "player_glide.h"
+#include "player_dead.h"
+#include "player_walk.h"
+
+struct player_skate player_skate;
+struct player_subsystem_interface player_subsystem_skate = 
+{
+   .system_register = player__skate_register,
+   .bind = player__skate_bind,
+   .pre_update = player__skate_pre_update,
+   .update = player__skate_update,
+   .post_update = player__skate_post_update,
+   .im_gui = player__skate_im_gui,
+   .animate = player__skate_animate,
+   .pose = player__skate_pose,
+   .effects = player__skate_effects,
+   .post_animate = player__skate_post_animate,
+   .network_animator_exchange = player__skate_animator_exchange,
+   .sfx_oneshot = player__skate_sfx_oneshot,
+   .sfx_comp = player__skate_comp_audio,
+   .sfx_kill = player__skate_kill_audio,
+
+   .animator_data = &player_skate.animator,
+   .animator_size = sizeof(player_skate.animator),
+   .name = "Skate"
+};
 
-static void player__skate_bind(void){
+void player__skate_bind(void){
    struct skeleton *sk = &localplayer.skeleton;
    rb_update_matrices( &localplayer.rb );
 
@@ -38,7 +62,7 @@ static void player__skate_bind(void){
       *bindings[i].anim = skeleton_get_anim( sk, bindings[i].name );
 }
 
-static void player__skate_kill_audio(void){
+void player__skate_kill_audio(void){
    audio_lock();
    if( player_skate.aud_main ){
       player_skate.aud_main = 
@@ -342,7 +366,8 @@ static int create_jumps_to_hit_target( jump_info *jumps,
    return valid_count;
 }
 
-static void player__approximate_best_trajectory(void){
+void player__approximate_best_trajectory(void)
+{
    world_instance *world0 = world_current_instance();
 
    float k_trace_delta = vg.time_fixed_delta * 10.0f;
@@ -1161,7 +1186,7 @@ static enum trick_type player_skate_trick_input(void){
           (button_press( k_srbind_trick2 )     );
 }
 
-static void player__skate_pre_update(void){
+void player__skate_pre_update(void){
    struct player_skate_state *state = &player_skate.state;
 
    if( state->activity == k_skate_activity_handplant ){
@@ -1286,7 +1311,7 @@ static void player__skate_pre_update(void){
       state->trick_type = k_trick_type_none;
 }
 
-static void player__skate_comp_audio( void *_animator ){
+void player__skate_comp_audio( void *_animator ){
    struct player_skate_animator *animator = _animator;
    audio_lock();
 
@@ -1302,7 +1327,7 @@ static void player__skate_comp_audio( void *_animator ){
    f32 gate = skaterift.time_rate;
 
    if( skaterift.activity == k_skaterift_replay ){
-      gate = vg_minf( 1.0f, fabsf(skaterift.track_velocity) );
+      gate = vg_minf( 1.0f, fabsf(player_replay.track_velocity) );
    }
 
    f32
@@ -1430,7 +1455,7 @@ static void player__skate_comp_audio( void *_animator ){
    audio_unlock();
 }
 
-static void player__skate_post_update(void){
+void player__skate_post_update(void){
    struct player_skate_state *state = &player_skate.state;
 
    for( int i=0; i<player_skate.possible_jump_count; i++ ){
@@ -2200,7 +2225,7 @@ static enum skate_activity skate_availible_grind(void){
    return new_activity;
 }
 
-static void player__skate_update(void){
+void player__skate_update(void){
    struct player_skate_state *state = &player_skate.state;
    world_instance *world = world_current_instance();
 
@@ -2779,7 +2804,7 @@ begin_collision:;
    }
 }
 
-static void player__skate_im_gui(void){
+void player__skate_im_gui(void){
    struct player_skate_state *state = &player_skate.state;
    player__debugtext( 1, "V:  %5.2f %5.2f %5.2f",localplayer.rb.v[0],
                                                 localplayer.rb.v[1],
@@ -2824,7 +2849,7 @@ static void player__skate_im_gui(void){
                            state->trick_euler[2] );
 }
 
-static void player__skate_animate(void){
+void player__skate_animate(void){
    struct player_skate_state *state = &player_skate.state;
    struct player_skate_animator *animator = &player_skate.animator;
 
@@ -3113,7 +3138,7 @@ static void player__skate_animate(void){
    animator->handplant_t = state->handplant_t;
 }
                         
-static void player__skate_pose( void *_animator, player_pose *pose ){
+void player__skate_pose( void *_animator, player_pose *pose ){
    struct skeleton *sk = &localplayer.skeleton;
    struct player_skate_animator *animator = _animator;
 
@@ -3436,7 +3461,7 @@ static void player__skate_pose( void *_animator, player_pose *pose ){
 #endif
 }
 
-static void player__skate_effects( void *_animator, m4x3f *final_mtx,
+void player__skate_effects( void *_animator, m4x3f *final_mtx,
                                    struct player_board *board,
                                    struct player_effects_data *effect_data ){
    struct skeleton *sk = &localplayer.skeleton;
@@ -3503,7 +3528,7 @@ static void player__skate_effects( void *_animator, m4x3f *final_mtx,
    }
 }
 
-static void player__skate_post_animate(void){
+void player__skate_post_animate(void){
    struct player_skate_state *state = &player_skate.state;
    localplayer.cam_velocity_influence = 1.0f;
    localplayer.cam_dist = 1.8f;
@@ -3515,7 +3540,7 @@ static void player__skate_post_animate(void){
               state->head_position, state->head_position );
 }
 
-static void player__skate_reset_animator(void){
+void player__skate_reset_animator(void){
    struct player_skate_state *state = &player_skate.state;
 
    memset( &player_skate.animator, 0, sizeof(player_skate.animator) );
@@ -3526,7 +3551,7 @@ static void player__skate_reset_animator(void){
       player_skate.animator.fly = 0.0f;
 }
 
-static void player__skate_clear_mechanics(void){
+void player__skate_clear_mechanics(void){
    struct player_skate_state *state = &player_skate.state;
    state->jump_charge    = 0.0f;
    state->charging_jump  = 0;
@@ -3565,7 +3590,7 @@ static void player__skate_clear_mechanics(void){
 
 #include "network_compression.h"
 
-static void player__skate_animator_exchange( bitpack_ctx *ctx, void *data ){
+void player__skate_animator_exchange( bitpack_ctx *ctx, void *data ){
    struct player_skate_animator *animator = data;
    
    bitpack_qv3f( ctx, 24, -1024.0f, 1024.0f, animator->root_co );
@@ -3617,7 +3642,7 @@ static void player__skate_animator_exchange( bitpack_ctx *ctx, void *data ){
    bitpack_bytes( ctx, 1, &animator->activity );
 }
 
-static void player__skate_sfx_oneshot( u8 id, v3f pos, f32 volume ){
+void player__skate_sfx_oneshot( u8 id, v3f pos, f32 volume ){
    audio_lock();
 
    if( id == k_player_skate_soundeffect_jump ){
@@ -3645,5 +3670,3 @@ static void player__skate_sfx_oneshot( u8 id, v3f pos, f32 volume ){
 
    audio_unlock();
 }
-
-#endif /* PLAYER_SKATE_C */