X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=highscores.h;h=0136886843899093ce074ca02a0e44a46f9be799;hb=b9dedb4dd2a1e94ae76a3986716ee3c57e568213;hp=b1c9cc0a5d591794388213552ab1938a75003a0b;hpb=89032d64e2867adb66e4598a0c66d3e853a22bb0;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/highscores.h b/highscores.h index b1c9cc0..0136886 100644 --- a/highscores.h +++ b/highscores.h @@ -128,7 +128,7 @@ static int highscore_cmp_playerinfo_playerid( void *a, void *b ) static void *highscore_malloc( u32 count, u32 size ) { size_t requested_mem = size * count; - void *data = malloc( requested_mem ); + void *data = vg_alloc( requested_mem ); requested_mem /= 1024; requested_mem /= 1024; @@ -146,8 +146,8 @@ static void *highscore_malloc( u32 count, u32 size ) static void highscores_free(void) { - free( highscore_system.data ); - free( highscore_system.playerinfo_data ); + vg_free( highscore_system.data ); + vg_free( highscore_system.playerinfo_data ); } static int highscores_init( u32 pool_size, u32 playerinfo_pool_size ) @@ -161,7 +161,7 @@ static int highscores_init( u32 pool_size, u32 playerinfo_pool_size ) highscore_malloc( playerinfo_pool_size, sizeof(highscore_playerinfo)); if( !sys->playerinfo_data ) { - free( sys->data ); + vg_free( sys->data ); return 0; } @@ -243,7 +243,7 @@ static int highscores_init( u32 pool_size, u32 playerinfo_pool_size ) } else { - vg_log( "No existing database found (.aadb)\n" ); + vg_low( "No existing database found (.aadb)\n" ); vg_info( "Initializing database nodes\n" ); memset( &sys->dbheader, 0, sizeof(highscore_database) ); @@ -293,12 +293,28 @@ static int highscores_serialize_all(void) return 1; } +static highscore_record *highscore_find_user_record( u64 playerid, u32 trackid ) +{ + struct highscore_system *sys = &highscore_system; + + highscore_track_table *table = &sys->dbheader.tracks[trackid]; + highscore_record temp; + temp.playerid = playerid; + + aatree_ptr find = + aatree_find( &sys->aainfo_playerid, table->root_playerid, &temp ); + + if( find == AATREE_PTR_NIL ) + return NULL; + + return aatree_get_data( &sys->aainfo_playerid, find ); +} + static aatree_ptr highscores_push_record( highscore_record *record ) { struct highscore_system *sys = &highscore_system; - /* TODO: Verify steam ID */ - vg_log( "Inserting record into database for track %hu\n",record->trackid ); + vg_low( "Inserting record into database for track %hu\n",record->trackid ); if( record->trackid >= vg_list_size(sys->dbheader.tracks) ) { @@ -322,11 +338,11 @@ static aatree_ptr highscores_push_record( highscore_record *record ) if( crecord->time < record->time || (crecord->time == record->time && crecord->points > record->points)) { - vg_log( "Not overwriting better score\n" ); + vg_low( "Not overwriting better score\n" ); return existing; } - vg_log( "Freeing existing record for player %lu\n", record->playerid ); + vg_low( "Freeing existing record for player %lu\n", record->playerid ); table->root_playerid = aatree_del( &sys->aainfo_playerid, existing ); table->root_datetime = aatree_del( &sys->aainfo_datetime, existing ); table->root_points = aatree_del( &sys->aainfo_points, existing ); @@ -372,7 +388,7 @@ static aatree_ptr highscore_set_user_nickname( u64 steamid, char nick[10] ) name[i] = nick[i]; name[10] = '\0'; - vg_log( "Updating %lu's nickname -> %s\n", steamid, name ); + vg_low( "Updating %lu's nickname -> %s\n", steamid, name ); struct highscore_system *sys = &highscore_system; @@ -578,11 +594,11 @@ static void highscores_board_generate( char *buf, u32 id, u32 count ) highscore_strl( line+3, inf->nickname, 10 ); } - u16 miliseconds = record->time, - seconds = miliseconds / 100, - minutes = seconds / 60; + u16 centiseconds = record->time, + seconds = centiseconds / 100, + minutes = seconds / 60; - miliseconds %= 100; + centiseconds %= 100; seconds %= 60; minutes %= 60; @@ -593,10 +609,10 @@ static void highscores_board_generate( char *buf, u32 id, u32 count ) line[15] = ':'; highscore_intr( line+16, seconds, 2, '0' ); line[18] = '.'; - highscore_intr( line+19, miliseconds, 2, '0' ); + highscore_intr( line+19, centiseconds, 2, '0' ); /* Score */ - highscore_intl( line+22, record->time, 5 ); + highscore_intl( line+22, record->points, 5 ); it = aatree_next( &sys->aainfo_time, it ); } }