fix some problems with world loader
[carveJwlIkooP6JGAAIwe30JlM.git] / ent_skateshop.c
index 0084e19dd3829b4bdc44bff97cb8521a2689900f..76ac914eb8c2b8ddf81be2bba1f7e80934e3d669 100644 (file)
@@ -192,18 +192,21 @@ static void skateshop_init_async(void *_data,u32 size){
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
+
+   skaterift.rt_textures[ k_skaterift_rt_workshop_preview ] =
+      global_skateshop.tex_preview_err;
+
+   skaterift.rt_textures[ k_skaterift_rt_server_status ] =
+      global_skateshop.tex_preview_err;
+   render_server_status_gui();
 }
 
 /*
  * VG event init
  */
 static void skateshop_init(void){
-   vg_async_call( skateshop_init_async, NULL, 0 );
    vg_tex2d_replace_with_error( &global_skateshop.tex_preview_err );
-   vg_async_stall();
-
-   skaterift.rt_textures[ k_skaterift_rt_workshop_preview ] =
-      global_skateshop.tex_preview_err;
+   vg_async_call( skateshop_init_async, NULL, 0 );
 }
 
 static u16 skateshop_selected_cache_id(void){
@@ -418,6 +421,7 @@ static void ent_skateshop_preupdate( ent_skateshop *shop, int active ){
             network_client.user_intent = !network_client.user_intent;
             network_client.last_intent_change = vg.time_real;
             skateshop_server_helper_update();
+            render_server_status_gui();
          }
       }
       else {
@@ -625,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;