X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=save.c;h=88dfada37adfea272434b22bd19f8e6f5091346d;hb=53b534974303043efaf1d887711fcd349f6a2885;hp=90e9c202cbab2732ce793d90e0ce7dca9603a3a3;hpb=7e1fe6c7931ba4492aa10ac5eebc316b74fb5dac;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/save.c b/save.c index 90e9c20..88dfada 100644 --- a/save.c +++ b/save.c @@ -77,7 +77,7 @@ static void skaterift_read_addon_alias( vg_msg *msg, const char *key, } static void skaterift_populate_world_savedata( savedata_file *file, - enum world_purpose which ){ + enum world_purpose which ){ file->path[0] = '\0'; file->len = 0; addon_reg *reg = world_static.instance_addons[ which ]; @@ -92,18 +92,17 @@ static void skaterift_populate_world_savedata( savedata_file *file, vg_msg sav; vg_msg_init( &sav, file->buf, sizeof(file->buf) ); - if( which == k_world_purpose_hub ){ - if( world_static.instances[0].status == k_world_status_loaded ) - world_entity_serialize( &world_static.instances[0], &sav ); - } - else { - for( u32 i=1; istatus == k_world_status_loaded ){ - world_entity_serialize( instance, &sav ); - } - } + world_instance *instance = &world_static.instances[which]; + world_entity_serialize( instance, &sav ); + + vg_msg_frame( &sav, "player" ); + { + vg_msg_wkvnum( &sav, "position", k_vg_msg_float|k_vg_msg_32b, 3, + (which == world_static.active_instance)? + localplayer.rb.co: + instance->player_co ); } + vg_msg_end_frame( &sav ); file->len = sav.cur.co; } @@ -113,6 +112,7 @@ static void skaterift_populate_main_savedata( savedata_file *file ){ vg_msg sav; vg_msg_init( &sav, file->buf, sizeof(file->buf) ); + vg_msg_wkvu32( &sav, "ach", skaterift.achievements ); vg_msg_frame( &sav, "player" ); { @@ -123,18 +123,6 @@ static void skaterift_populate_main_savedata( savedata_file *file ){ } vg_msg_end_frame( &sav ); - vg_msg_frame( &sav, "world" ); - { - addon_reg *reg = world_static.instance_addons[ k_world_purpose_client ]; - if( reg && (world_static.active_instance > 0) ){ - skaterift_write_addon_alias( &sav, "alias", ®->alias ); - } - vg_msg_wkvu32( &sav, "index", world_static.active_instance ); - vg_msg_wkvnum( &sav, "position", k_vg_msg_float|k_vg_msg_32b, 3, - localplayer.rb.co ); - } - vg_msg_end_frame( &sav ); - file->len = sav.cur.co; } @@ -143,8 +131,10 @@ static int skaterift_autosave( int async ){ if( !vg_loader_availible() ) return 0; u32 save_files = 2; - if( world_static.instance_addons[ k_world_purpose_client ] ) + if( world_static.instances[k_world_purpose_client].status + == k_world_status_loaded ){ save_files ++; + } vg_linear_clear( vg_async.buffer ); u32 size = sizeof(savedata_group) + sizeof(savedata_file) * save_files; @@ -161,7 +151,8 @@ static int skaterift_autosave( int async ){ skaterift_populate_main_savedata( &group->files[0] ); skaterift_populate_world_savedata( &group->files[1], k_world_purpose_hub ); - if( world_static.instance_addons[ k_world_purpose_client ] ){ + if( world_static.instances[ k_world_purpose_client ].status + == k_world_status_loaded ){ skaterift_populate_world_savedata( &group->files[2], k_world_purpose_client ); }