fix some problems with world loader
[carveJwlIkooP6JGAAIwe30JlM.git] / ent_skateshop.c
index eb30ad464ac4eb78fe9d54a1ca0bbff3060dca35..76ac914eb8c2b8ddf81be2bba1f7e80934e3d669 100644 (file)
@@ -198,6 +198,7 @@ static void skateshop_init_async(void *_data,u32 size){
 
    skaterift.rt_textures[ k_skaterift_rt_server_status ] =
       global_skateshop.tex_preview_err;
+   render_server_status_gui();
 }
 
 /*
@@ -628,21 +629,32 @@ static void skateshop_render_worldshop( ent_skateshop *shop ){
 
       addon_reg *reg = get_addon_from_index( k_addon_type_world,
             global_skateshop.selected_world_id, ADDON_REG_HIDDEN );
-      vg_msg msg;
-      vg_msg_init( &msg, reg->metadata, reg->metadata_len );
 
-      global_skateshop.render.world_loc = vg_msg_getkvstr( &msg, "location" );
-      global_skateshop.render.world_reg = global_skateshop.selected_world_id;
+      if( !reg ) 
+         goto none;
 
-      if( vg_msg_seekframe( &msg, "workshop" ) ){
-         global_skateshop.render.world_title = vg_msg_getkvstr( &msg, "title");
-         vg_msg_skip_frame( &msg );
+      if( reg->alias.workshop_id ){
+         vg_msg msg;
+         vg_msg_init( &msg, reg->metadata, reg->metadata_len );
+
+         global_skateshop.render.world_loc = vg_msg_getkvstr(&msg,"location");
+         global_skateshop.render.world_reg = global_skateshop.selected_world_id;
+
+         if( vg_msg_seekframe( &msg, "workshop" ) ){
+            global_skateshop.render.world_title = vg_msg_getkvstr(&msg,"title");
+            vg_msg_skip_frame( &msg );
+         }
+         else {
+            vg_warn( "No workshop body\n" );
+         }
       }
       else {
-         vg_warn( "No workshop body\n" );
+         global_skateshop.render.world_title = reg->alias.foldername;
       }
    }
 
+none:;
+
    /* Text */
    char buftext[128], bufsubtext[128];
    vg_str info, subtext;