+static void skaterift_populate_world_savedata( savedata_file *file,
+ enum world_purpose which ){
+ file->path[0] = '\0';
+ file->len = 0;
+ addon_reg *reg = world_static.instance_addons[ which ];
+
+ if( !reg ){
+ vg_error( "Tried to save unspecified world (reg was null)\n" );
+ return;
+ }
+
+ skaterift_world_get_save_path( which, file->path );
+
+ 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; i<vg_list_size(world_static.instances); i++ ){
+ world_instance *instance = &world_static.instances[i];
+ if( instance->status == k_world_status_loaded ){
+ world_entity_serialize( instance, &sav );
+ }
+ }
+ }
+
+ file->len = sav.cur.co;
+}
+
+static void skaterift_populate_main_savedata( savedata_file *file ){
+ strcpy( file->path, str_skaterift_main_save );
+
+ vg_msg sav;
+ vg_msg_init( &sav, file->buf, sizeof(file->buf) );
+
+ vg_msg_frame( &sav, "player" );
+ {
+ skaterift_write_viewslot( &sav, "board", k_addon_type_board,
+ localplayer.board_view_slot );
+ skaterift_write_viewslot( &sav, "playermodel", k_addon_type_player,
+ localplayer.playermodel_view_slot );
+ }