+ res_slide = skate_boardslide_renew( player, &inf_slide );
+ }
+ else if( s->state.activity == k_skate_activity_grind_back50 )
+ {
+ res_back50 = skate_grind_truck_renew( player, 1.0f, &inf_back50 );
+ res_front50 = skate_grind_truck_entry( player, -1.0f, &inf_front50 );
+ }
+ else if( s->state.activity == k_skate_activity_grind_front50 )
+ {
+ res_front50 = skate_grind_truck_renew( player, -1.0f, &inf_front50 );
+ res_back50 = skate_grind_truck_entry( player, 1.0f, &inf_back50 );
+ }
+ else if( s->state.activity == k_skate_activity_grind_5050 )
+ {
+ res_front50 = skate_grind_truck_renew( player, -1.0f, &inf_front50 );
+ res_back50 = skate_grind_truck_entry( player, 1.0f, &inf_back50 );
+ }
+ else
+ {
+ res_slide = skate_boardslide_entry( player, &inf_slide );
+ res_back50 = skate_grind_truck_entry( player, 1.0f, &inf_back50 );
+ res_front50 = skate_grind_truck_entry( player, -1.0f, &inf_front50 );
+
+ if( res_back50 != res_front50 )
+ {
+ int wants_to_do_that = fabsf(player->input_js1v->axis.value) >= 0.25f;
+
+ res_back50 &= wants_to_do_that;
+ res_front50 &= wants_to_do_that;
+ }
+ }
+
+ const enum skate_activity table[] =
+ { /* slide | back | front */
+ k_skate_activity_undefined, /* 0 0 0 */
+ k_skate_activity_grind_front50, /* 0 0 1 */
+ k_skate_activity_grind_back50, /* 0 1 0 */
+ k_skate_activity_grind_5050, /* 0 1 1 */
+
+ /* slide has priority always */
+ k_skate_activity_grind_boardslide, /* 1 0 0 */
+ k_skate_activity_grind_boardslide, /* 1 0 1 */
+ k_skate_activity_grind_boardslide, /* 1 1 0 */
+ k_skate_activity_grind_boardslide, /* 1 1 1 */
+ }
+ , new_activity = table[ res_slide << 2 | res_back50 << 1 | res_front50 ];
+
+ if( new_activity == k_skate_activity_undefined )
+ {
+ s->frames_since_activity_change = 0;
+ }
+ else if( new_activity == k_skate_activity_grind_boardslide )
+ {
+ skate_boardslide_apply( player, &inf_slide );
+ }
+ else if( new_activity == k_skate_activity_grind_back50 )
+ {
+ if( s->state.activity != k_skate_activity_grind_back50 )
+ skate_store_grind_vec( player, &inf_back50 );
+
+ skate_grind_truck_apply( player, 1.0f, &inf_back50, 1.0f );
+ }
+ else if( new_activity == k_skate_activity_grind_front50 )
+ {
+ if( s->state.activity != k_skate_activity_grind_front50 )
+ skate_store_grind_vec( player, &inf_front50 );
+
+ skate_grind_truck_apply( player, -1.0f, &inf_front50, 1.0f );
+ }
+ else if( new_activity == k_skate_activity_grind_5050 )
+ skate_5050_apply( player, &inf_front50, &inf_back50 );
+
+ return new_activity;
+
+#if 0
+ if( s->state.activity == k_skate_activity_grind_boardslide )
+ {
+ int res_slide = skate_boardslide_singular( player );