LRU dummy
[carveJwlIkooP6JGAAIwe30JlM.git] / save.c
1 #ifndef SAVE_C
2 #define SAVE_C
3
4 struct {
5 u8 buf[1024];
6 u32 len;
7 }
8 static savedata;
9
10 static void skaterift_write_savedata_thread(void *_){
11 FILE *fp = fopen( "save.bkv", "wb" );
12 if( fp ){
13 fwrite( savedata.buf, savedata.len, 1, fp );
14 fclose( fp );
15 }
16 skaterift_end_op();
17 }
18
19 static void skaterift_write_savedata(void){
20 if( skaterift.async_op != k_async_op_none ) return;
21
22 skaterift_begin_op( k_async_op_write_savedata );
23
24 vg_msg sav = {0};
25 sav.buf = savedata.buf;
26 sav.max = sizeof(savedata.buf);
27
28 vg_msg_frame( &sav, "player" );
29
30 if( localplayer.board_view_slot ){
31 struct cache_board *cache_ptr = localplayer.board_view_slot;
32 if( cache_ptr->reg_ptr ){
33 if( cache_ptr->reg_ptr->workshop_id )
34 vg_msg_wkvu64( &sav, "board", cache_ptr->reg_ptr->workshop_id );
35 else
36 vg_msg_wkvstr( &sav, "board", cache_ptr->reg_ptr->foldername );
37 }
38 }
39
40 vg_msg_end_frame( &sav );
41 savedata.len = sav.len;
42 vg_loader_start( skaterift_write_savedata_thread, NULL );
43 }
44
45 static void skaterift_read_savedata(void){
46 FILE *fp = fopen( "save.bkv", "rb" );
47 if( fp ){
48 savedata.len = fread( savedata.buf, 1, sizeof(savedata.buf), fp );
49 fclose( fp );
50 }
51 }
52
53 #endif /* SAVE_C */