wind rushing sound
[carveJwlIkooP6JGAAIwe30JlM.git] / aadb_edit.c
1 #define VG_NO_STEAM
2 #define VG_SERVER
3 #include "vg/vg.h"
4 #include "vg/vg_opt.h"
5 #include "vg/vg_log.h"
6
7 #include "world_info.h"
8 #include "highscores.h"
9 #include "highscores.c"
10
11 int main( int argc, char *argv[] ){
12 u32 pool_size = 250000,
13 playerinfo_pool_size = 10000;
14
15 vg_set_mem_quota( 100*1024*1024 );
16 vg_alloc_quota();
17 int ready = 0;
18
19 char *arg;
20 while( vg_argp( argc, argv ) ){
21 if( (arg = vg_long_opt_arg( "max-records" )) ){
22 pool_size = atol(arg);
23 }
24 if( (arg = vg_long_opt_arg( "max-users" )) ){
25 playerinfo_pool_size = atol(arg);
26 }
27
28 if( (arg = vg_arg()) ){
29 if( ready ){
30 vg_fatal_error( "Only one database can be read at a time\n" );
31 }
32
33 highscores_init( pool_size, playerinfo_pool_size );
34 if( !highscores_read( arg ) )
35 return 0;
36 ready = 1;
37 }
38
39 if( vg_long_opt("list_tables") ){
40 if( !ready )
41 vg_fatal_error( "Not ready\n" );
42
43 for( u32 i=0; i<vg_list_size(track_infos); i ++ ){
44 vg_info( "%u: %s\n", i, track_infos[i].name );
45 }
46 }
47
48 if( (arg = vg_long_opt_arg("records-csv")) ){
49 char buf[512];
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" );
54
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",
60 inf->trackid,
61 inf->points,
62 inf->time,
63 inf->playerid,
64 inf->datetime );
65 it = aatree_next( &sys->aainfo_time, it );
66 }
67 fclose( records );
68 }
69 }
70
71 if( (arg = vg_long_opt_arg("users-csv")) ){
72 FILE *records = fopen( arg, "w" );
73 struct highscore_system *sys = &highscore_system;
74 aatree_ptr it =
75 aatree_kth( &sys->aainfo_playerinfo_playerid,
76 sys->dbheader.playerinfo_root,
77 0 );
78
79 while( it != AATREE_PTR_NIL ){
80 highscore_playerinfo *inf = aatree_get_data(
81 &sys->aainfo_playerinfo_playerid, it );
82
83 fprintf( records, "%lu,%s\n", inf->playerid, inf->nickname );
84 it = aatree_next( &sys->aainfo_playerinfo_playerid, it );
85 }
86 fclose( records );
87 }
88 }
89 }