yed
[carveJwlIkooP6JGAAIwe30JlM.git] / skaterift.c
index d22846ff0fe65d57ff7b6626ec4c8b7b3477498c..fe1c5bc23ce06aecd64540ecff2870a7bb3f398e 100644 (file)
@@ -44,6 +44,8 @@
 #include "vehicle.c"
 #include "entity.c"
 #include "workshop.c"
+#include "addon.c"
+#include "highscores.c"
 
 static struct player_avatar localplayer_avatar;
 static struct player_model  localplayer_models[3];
@@ -56,10 +58,12 @@ int main( int argc, char *argv[] )
    return 0;
 }
 
+#if 0
 VG_STATIC void highscores_save_at_exit(void)
 {
    highscores_serialize_all();
 }
+#endif
 
 VG_STATIC void vg_launch_opt(void)
 {
@@ -77,11 +81,13 @@ vg_info("            |   \\/   | |        /     |      |    \\ | /   | \n" );
 vg_info("            '        ' '--' [] '----- '----- '     ' '---'  " 
         "SOFTWARE\n" );
 
+   /* 31.05.23 (hgn): this is only a server feature now */
+#if 0
    highscores_init( 2000, 50 );
    if( !highscores_read() )
       highscores_create_db();
-
    vg_loader_step( NULL, highscores_save_at_exit );
+#endif
 
    steam_init();
    vg_loader_step( NULL, steam_end );
@@ -126,6 +132,9 @@ VG_STATIC void vg_load(void)
 
    vg_loader_step( player_init, NULL );
    vg_loader_step( player_ragdoll_init, NULL );
+
+   /* content stuff */
+   vg_loader_step( addon_system_init, NULL );
    vg_loader_step( workshop_init, NULL );
    vg_loader_step( skateshop_init, NULL );
    
@@ -147,15 +156,48 @@ VG_STATIC void vg_load(void)
    /* 'systems' are completely loaded now */
    
    /* load home/permanent world manually */
-   strcpy( world_loader.name, "mp_spawn" );
+   world_loader.reg = NULL;
+   strcpy( world_loader.override_name, "mp_spawn" );
    world_loader.generate_point_cloud = 1;
    world_loader.world_index = 0;
-   world_loader.location = k_world_load_type_local;
    world_load_mdl( "maps/mp_spawn/main.mdl" );
 
+   /* Completing addon registrations
+    * -------------------------------------
+    */
+   vg_msg msg;
+
+   /* understate diy. */
+   addon_reg *spawn = addon_mount_local_addon( "maps/mp_spawn", 
+                                                k_workshop_file_type_world, 
+                                                ".mdl" );
+   vg_msg_init( &msg, spawn->metadata, sizeof(spawn->metadata) );
+   vg_msg_frame( &msg, "workshop" );
+   vg_msg_wkvstr( &msg, "title", "Understate DIY" );
+   vg_msg_end_frame( &msg );
+   vg_msg_wkvstr( &msg, "location", "USA" );
+   spawn->metadata_len = msg.cur;
+
+   /* mtzero island */
+   addon_reg *mtzero = addon_mount_local_addon( "maps/mp_mtzero",
+                                                k_workshop_file_type_world,
+                                                ".mdl" );
+   vg_msg_init( &msg, mtzero->metadata, sizeof(mtzero->metadata) );
+   vg_msg_frame( &msg, "workshop" );
+   vg_msg_wkvstr( &msg, "title", "Mt.Zero Island" );
+   vg_msg_end_frame( &msg );
+   vg_msg_wkvstr( &msg, "location", "Australia" );
+   mtzero->metadata_len = msg.cur;
+   global_skateshop.selected_world_id=1;
+   global_skateshop.pointcloud_world_id=1;
+   skateshop_preview_loader_thread( mtzero ); /* HACK */
+
+   vg_async_call( async_addon_reg_update, NULL, 0 );
    vg_console_load_autos();
    menu_link();
+   temp_update_playermodel();
 
+       //vg_mem_log( vg_mem.rtmemory, 0, "Root" );
    vg_async_call( async_skaterift_complete, NULL, 0 );
 }
 
@@ -325,6 +367,7 @@ VG_STATIC void render_scene_gate_subview(void)
 {
    render_fb_bind( gpipeline.fb_main, 1 );
    world_instance *view_world = localplayer.viewable_world;
+   if( !view_world ) return; /* ??? */
 
    int depth = 1;
    if( localplayer.gate_waiting ) depth = 0;