7 #include "world_info.h"
8 #include "highscores.h"
9 #include "highscores.c"
11 int main( int argc
, char *argv
[] ){
12 u32 pool_size
= 250000,
13 playerinfo_pool_size
= 10000;
15 vg_set_mem_quota( 100*1024*1024 );
20 while( vg_argp( argc
, argv
) ){
21 if( (arg
= vg_long_opt_arg( "max-records" )) ){
22 pool_size
= atol(arg
);
24 if( (arg
= vg_long_opt_arg( "max-users" )) ){
25 playerinfo_pool_size
= atol(arg
);
28 if( (arg
= vg_arg()) ){
30 vg_fatal_error( "Only one database can be read at a time\n" );
33 highscores_init( pool_size
, playerinfo_pool_size
);
34 if( !highscores_read( arg
) )
39 if( vg_long_opt("list_tables") ){
41 vg_fatal_error( "Not ready\n" );
43 for( u32 i
=0; i
<vg_list_size(track_infos
); i
++ ){
44 vg_info( "%u: %s\n", i
, track_infos
[i
].name
);
48 if( (arg
= vg_long_opt_arg("records-csv")) ){
50 struct highscore_system
*sys
= &highscore_system
;
51 for( u32 i
=0; i
<vg_list_size(track_infos
); i
++ ){
52 snprintf( buf
, 512, "%03u-%s", i
, arg
);
53 FILE *records
= fopen( buf
, "w" );
55 highscore_track_table
*table
= &sys
->dbheader
.tracks
[i
];
56 aatree_ptr it
= aatree_kth(&sys
->aainfo_time
,table
->root_time
,0);
57 while( it
!= AATREE_PTR_NIL
){
58 highscore_record
*inf
= aatree_get_data( &sys
->aainfo_time
, it
);
59 fprintf( records
, "%hu,%hu,%hu,%lu,%u\n",
65 it
= aatree_next( &sys
->aainfo_time
, it
);
71 if( (arg
= vg_long_opt_arg("users-csv")) ){
72 FILE *records
= fopen( arg
, "w" );
73 struct highscore_system
*sys
= &highscore_system
;
75 aatree_kth( &sys
->aainfo_playerinfo_playerid
,
76 sys
->dbheader
.playerinfo_root
,
79 while( it
!= AATREE_PTR_NIL
){
80 highscore_playerinfo
*inf
= aatree_get_data(
81 &sys
->aainfo_playerinfo_playerid
, it
);
83 fprintf( records
, "%lu,%s\n", inf
->playerid
, inf
->nickname
);
84 it
= aatree_next( &sys
->aainfo_playerinfo_playerid
, it
);