X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=save.c;h=db609ca86a45ac0c07a9f1eeebc82cec4511713e;hb=5f6a4f9df6c8accc89f1920bfe9ace3cbac4c4b6;hp=1009e61285e8cc1367a55e4d4ac09e849a85fa1a;hpb=a109f126d8adab622e38fbcc2d4281e75255246a;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/save.c b/save.c index 1009e61..db609ca 100644 --- a/save.c +++ b/save.c @@ -1,6 +1,4 @@ -#ifndef SAVE_C -#define SAVE_C - +#include "skaterift.h" #include "save.h" #include "addon.h" #include "vg/vg_msg.h" @@ -8,7 +6,11 @@ #include "vg/vg_loader.h" #include "world.h" -static void savedata_file_write( savedata_file *file ){ +static const char *str_skaterift_main_save = "save.bkv"; +static f64 last_autosave; + +void savedata_file_write( savedata_file *file ) +{ savedata_file *sav = file; FILE *fp = fopen( sav->path, "wb" ); if( fp ){ @@ -21,13 +23,15 @@ static void savedata_file_write( savedata_file *file ){ } } -static void savedata_group_write( savedata_group *group ){ +void savedata_group_write( savedata_group *group ) +{ for( u32 i=0; ifile_count; i++ ){ savedata_file_write( &group->files[i] ); } } -static void savedata_file_read( savedata_file *file ){ +void savedata_file_read( savedata_file *file ) +{ FILE *fp = fopen( file->path, "rb" ); if( fp ){ file->len = fread( file->buf, 1, sizeof(file->buf), fp ); @@ -59,9 +63,10 @@ static void skaterift_write_viewslot( vg_msg *msg, const char *key, skaterift_write_addon_alias( msg, key, ®->alias ); } -static void skaterift_read_addon_alias( vg_msg *msg, const char *key, - enum addon_type type, - addon_alias *alias ){ +void skaterift_read_addon_alias( vg_msg *msg, const char *key, + enum addon_type type, + addon_alias *alias ) +{ alias->foldername[0] = '\0'; alias->workshop_id = 0; alias->type = type; @@ -108,7 +113,8 @@ static void skaterift_populate_world_savedata( savedata_file *file, file->len = sav.cur.co; } -static void skaterift_populate_main_savedata( savedata_file *file ){ +static void skaterift_populate_main_savedata( savedata_file *file ) +{ strcpy( file->path, str_skaterift_main_save ); vg_msg sav; @@ -127,7 +133,14 @@ static void skaterift_populate_main_savedata( savedata_file *file ){ file->len = sav.cur.co; } -static int skaterift_autosave( int async ){ +void skaterift_read_main_savedata( savedata_file *file ) +{ + strcpy( file->path, str_skaterift_main_save ); + savedata_file_read( file ); +} + +int skaterift_autosave( int async ) +{ if( async ) if( !vg_loader_availible() ) return 0; @@ -166,8 +179,16 @@ static int skaterift_autosave( int async ){ return 1; } -static void skaterift_autosave_synchronous(void){ +void skaterift_autosave_synchronous(void) +{ skaterift_autosave(0); } -#endif /* SAVE_C */ +void skaterift_autosave_update(void) +{ + if( vg.time - last_autosave > 20.0 ){ + if( skaterift_autosave(1) ){ + last_autosave = vg.time; + } + } +}