#include "common.h"
#include "model.h"
#include "gate.h"
+#include "world_info.h"
+#include "highscores.h"
#include "shaders/vblend.h"
#include "shaders/route.h"
struct route
{
- const char *name;
+ u32 track_id;
v4f colour;
u32 start;
float xpos;
}
ui;
+
+ m4x3f scoreboard_transform;
}
*routes;
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
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 ++;
}
v3_copy( inf->colour, route->colour );
route->colour[3] = 1.0f;
- route->name = NULL;
+
+ route->track_id = 0xffffffff;
+ for( u32 j=0; j<vg_list_size(track_infos); j++ )
+ {
+ if( !strcmp( mdl_pstr(mdl,pnode->pstr_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 );