basic replayable replays
[carveJwlIkooP6JGAAIwe30JlM.git] / player_skate.h
index b529a4811cb31fb151fdc531abf3db2e4f76c7f0..c3ec0e6a81942392e99b43b5043c2b6546f2b66a 100644 (file)
@@ -24,9 +24,10 @@ struct player_skate{
       activity,
       activity_prev;
 
-      float reverse,
-            slip;
+      u32 grind_cooldown,
+          surface_cooldown;
 
+      f32 reverse, slip, delayed_slip_dir;
       int manual_direction;
 
       /* tricks */
@@ -37,6 +38,13 @@ struct player_skate{
       v3f   trick_vel,     /* measured in units of TAU/s */
             trick_euler;   /* measured in units of TAU */
       float trick_time;
+      enum  trick_type{
+         k_trick_type_none,
+         k_trick_type_kickflip,
+         k_trick_type_shuvit,
+         k_trick_type_treflip
+      }
+      trick_type;
       float gravity_bias;
 
       v3f up_dir;
@@ -64,36 +72,37 @@ struct player_skate{
              air_init_co;
 
       v4f smoothed_rotation;
+
+      /* animator controls which require persistence */
+      v3f board_trick_residualv,
+          board_trick_residuald;
+      f32 blend_slide,
+          blend_z,
+          blend_x,
+          blend_fly,
+          blend_grind,
+          blend_grind_balance,
+          blend_stand,
+          blend_push,
+          blend_jump,
+          blend_airdir,
+          blend_weight,
+          blend_trick_foot,
+          subslap;
+      v2f wobble;
    }
-   state,
-   state_gate_storage;
+   state;
 
-   /* animation /audio */
+   /* animation /audio
+    * --------------------------------------------------------------*/
    struct skeleton_anim *anim_stand, *anim_highg, *anim_slide,
                         *anim_air, *anim_grind, *anim_grind_jump,
                         *anim_push,  *anim_push_reverse,
                         *anim_ollie, *anim_ollie_reverse,
                         *anim_grabs, *anim_stop;
-   v3f 
-       board_trick_residualv,
-       board_trick_residuald;
-
-   float blend_slide,
-         blend_z,
-         blend_x,
-         blend_fly,
-         blend_grind,
-         blend_grind_balance,
-         blend_stand,
-         blend_push,
-         blend_jump,
-         blend_airdir,
-         blend_weight,
-         subslap;
 
    /* vectors representing the direction of the axels in localspace */
    v3f truckv0[2];
-   v2f wobble;
 
    audio_channel *aud_main, *aud_slide, *aud_air;
    enum mdl_surface_prop surface, audio_surface;
@@ -109,7 +118,6 @@ struct player_skate{
       k_skate_sample_metal_scrape_generic
    }
    main_sample_type;
-
    player_pose holdout;
 
    /*
@@ -117,8 +125,7 @@ struct player_skate{
     * ----------------------------------------------------
     */
 
-   float substep,
-         substep_delta;
+   float substep, substep_delta;
 
    struct jump_info{
       v3f   log[50];
@@ -153,11 +160,7 @@ struct player_skate{
        grind_vec,
        grind_dir;
 
-   u32 grind_cooldown,
-       surface_cooldown;
-
    float grind_strength;
-
    struct grind_limit{
       v3f ra, n;
       float p;