strange bug and playermodels
[carveJwlIkooP6JGAAIwe30JlM.git] / world_routes.c
index d81419f252852de5e4c575efc41a2656b4f2936e..0bfdcac8bf92ac1406032a6f0c427f73e04ecad4 100644 (file)
@@ -46,6 +46,8 @@ static void world_routes_time_lap( world_instance *world, ent_route *route ){
 
    double start_time = 0.0;
    u32 last_version=0;
+   f64 last_time = 0.0;
+   ent_checkpoint *last_cp = NULL;
 
    u32 valid_sections=0;
    int clean = !localplayer.rewinded_since_last_gate;
@@ -69,14 +71,16 @@ static void world_routes_time_lap( world_instance *world, ent_route *route ){
          else valid_sections = 0;
       }
 
-      last_version = rg->timing_version;
-
       vg_info( "%u %f [%s]\n", rg->timing_version, rg->timing_time,
             i? ((rg->flags & k_ent_gate_clean_pass)? "CLEAN": "     "):
                 " N/A ");
 
       if( !(rg->flags & k_ent_gate_clean_pass) )
          clean = 0;
+
+      last_version = rg->timing_version;
+      last_time = rg->timing_time;
+      last_cp = cp;
    }
 
    if( world_static.current_run_version == last_version+1 ){
@@ -85,6 +89,11 @@ static void world_routes_time_lap( world_instance *world, ent_route *route ){
       if( route->checkpoints_count == 1 ){
          route->timing_base = world_static.time;
       }
+
+      f32 section = world_static.time - last_time;
+      if( (section < last_cp->best_time) || (last_cp->best_time == 0.0f) ){
+         last_cp->best_time = section;
+      }
    }
    else valid_sections = 0;
 
@@ -126,6 +135,9 @@ static void world_routes_time_lap( world_instance *world, ent_route *route ){
 
    vg_info( "valid sections: %u\n", valid_sections );
    vg_info( "----------------------------\n" );
+
+   route->ui_residual = 1.0f;
+   route->ui_residual_block_w = route->ui_first_block_width;
 }
 
 /*
@@ -545,6 +557,8 @@ static void world_gen_routes_ent_init( world_instance *world ){
 
       route->flags = 0x00;
       route->best_laptime = 0.0;
+      route->ui_stopper = 0.0f;
+      route->ui_residual = 0.0f;
       
       if( mdl_arrcount(&world->ent_region) )
          route->flags |= k_ent_route_flag_out_of_zone;
@@ -592,6 +606,11 @@ static void world_gen_routes_ent_init( world_instance *world ){
       ent_gate *gate = mdl_arritm( &world->ent_gate, i );
    }
 
+   for( u32 i=0; i<mdl_arrcount(&world->ent_checkpoint); i++ ){
+      ent_checkpoint *cp = mdl_arritm( &world->ent_checkpoint, i );
+      cp->best_time = 0.0;
+   }
+
    world_routes_clear( world );
 }