X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world_routes.h;h=9cee0df0d19b38dbd41b5c84042cc9cdaded5b83;hb=ba5f879f85b9cab1e2b37241399d79709fe4f584;hp=f899694a574668e08d4a19454f1bf3bc7764b33b;hpb=a9f402f2e336dadff2207dacf69416a66f50c8f8;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_routes.h b/world_routes.h index f899694..9cee0df 100644 --- a/world_routes.h +++ b/world_routes.h @@ -4,6 +4,8 @@ #include "common.h" #include "model.h" #include "gate.h" +#include "world_info.h" +#include "highscores.h" #include "shaders/vblend.h" #include "shaders/route.h" @@ -36,7 +38,7 @@ struct subworld_routes struct route { - const char *name; + u32 track_id; v4f colour; u32 start; @@ -69,6 +71,8 @@ struct subworld_routes float xpos; } ui; + + m4x3f scoreboard_transform; } *routes; @@ -550,6 +554,35 @@ static void world_routes_ui_draw( u32 route, v4f colour, float offset ) pr->ui.xpos = vg_lerpf( pr->ui.xpos, -main_block_size * 0.5f, 0.03f ); } +static void world_routes_local_set_record( u32 route, double lap_time ) +{ + vg_success( " NEW LAP TIME: %f\n", lap_time ); + + struct subworld_routes *r = subworld_routes(); + struct route *pr = &r->routes[route]; + + if( pr->track_id != 0xffffffff ) + { + double time_centiseconds = lap_time * 100.0; + if( time_centiseconds > (float)0xfffe ) + return; + + highscore_record temp; + temp.trackid = pr->track_id; + temp.datetime = time(NULL); + temp.playerid = 0; + temp.points = 0; + temp.time = time_centiseconds; + + highscores_push_record( &temp ); + track_infos[ pr->track_id ].push = 1; + } + else + { + vg_warn( "There is no associated track for this record...\n" ); + } +} + /* * Will scan the whole run for two things; * 1: we set a new record for the total, complete loop around the course @@ -635,7 +668,7 @@ static void world_routes_verify_run( u32 route ) if( verified ) { - vg_success( " NEW LAP TIME: %f\n", lap_time ); + world_routes_local_set_record( route, lap_time ); world_routes_ui_popfirst(route); pr->ui.fade_count ++; } @@ -1106,10 +1139,21 @@ static void world_routes_loadfrom( mdl_header *mdl ) v3_copy( inf->colour, route->colour ); route->colour[3] = 1.0f; - route->name = NULL; + + route->track_id = 0xffffffff; + for( u32 j=0; jpstr_name), track_infos[j].name )) + { + route->track_id = j; + break; + } + } + route->start = inf->id_start; route->active = 0; route->factive = 0.0f; + mdl_node_transform( pnode, route->scoreboard_transform ); /* OpenGL strips */ glGenVertexArrays( 1, &route->ui.vao );