more refactors..
[carveJwlIkooP6JGAAIwe30JlM.git] / workshop.c
index 55b32d074164674c841c64bbd452aaf4cc989a86..1967e7503e2b4bbc5d95257d3bf8592d569bdd01 100644 (file)
@@ -321,23 +321,26 @@ VG_STATIC void _workshop_form_submit_thread( void *data )
     * Create the metadata file
     * -----------------------------------------------------------------------*/
    u8 descriptor_buf[ 512 ];
-   vg_msg descriptor;
-   vg_msg_init( &descriptor, descriptor_buf, 512 );
+   vg_msg descriptor = {0};
+   descriptor.buf = descriptor_buf;
+   descriptor.max = sizeof(descriptor_buf);
+
+   vg_linear_clear( vg_mem.scratch );
+
+   /* short description */
    vg_msg_frame( &descriptor, "workshop" );
       vg_msg_wkvstr( &descriptor, "title", workshop_form.submission.title );
       //vg_msg_wkvstr( &descriptor, "author", "unknown" );
-      vg_msg_wkvuint( &descriptor, "type", 
-                      u32 value=workshop_form.submission.type);
+      vg_msg_wkvu32( &descriptor, "type", workshop_form.submission.type );
       vg_msg_wkvstr( &descriptor, "folder", workshop_form.addon_folder );
    vg_msg_end_frame( &descriptor );
    //vg_msg_wkvstr( &descriptor, "location", "USA" );
-   //
-   vg_linear_clear( vg_mem.scratch );
-   char *descriptor_str = vg_linear_alloc( vg_mem.scratch, 
-                                           vg_align8(descriptor.cur*2+1) );
-   vg_bin_str( descriptor_buf, descriptor_str, descriptor.cur );
-   descriptor_str[descriptor.cur*2] = '\0';
-   vg_info( "binstr: %s\n", descriptor_str );
+
+   char *short_descriptor_str = vg_linear_alloc( vg_mem.scratch, 
+                                                 vg_align8(descriptor.cur*2+1));
+   vg_bin_str( descriptor_buf, short_descriptor_str, descriptor.cur );
+   short_descriptor_str[descriptor.cur*2] = '\0';
+   vg_info( "binstr: %s\n", short_descriptor_str );
 
    vg_dir dir;
    if( !vg_dir_open( &dir, folder.buffer ) ){
@@ -402,7 +405,7 @@ VG_STATIC void _workshop_form_submit_thread( void *data )
    stbi_flip_vertically_on_write(1);
    stbi_write_jpg( preview.buffer, w,h, 3, workshop_form.img_buffer, 90 );
 
-   vg_async_call( workshop_form_async_submit_begin, descriptor_str, 0 );
+   vg_async_call( workshop_form_async_submit_begin, short_descriptor_str, 0 );
 }
 
 /*
@@ -575,6 +578,12 @@ VG_STATIC void workshop_form_async_imageload( void *data, u32 len )
       stbi_image_free( data );
       vg_success( "Loaded workshop preview image\n" );
    }
+   else{
+      snprintf( workshop_form.error_msg, sizeof(workshop_form.error_msg),
+               "Preview image could not be loaded. Reason: %s\n",
+                stbi_failure_reason() );
+      ui_start_modal( workshop_form.error_msg, UI_MODAL_BAD );
+   }
    
    skaterift_end_op();
 }
@@ -608,8 +617,6 @@ VG_STATIC void _workshop_load_preview_thread( void *data )
          }
       }
       else{
-         vg_error( "Failed to load workshop_preview.jpg: '%s'\n", 
-                     stbi_failure_reason() );
          vg_async_call( workshop_form_async_imageload, NULL, 0 );
       }
    }
@@ -692,18 +699,16 @@ VG_STATIC void workshop_op_download_and_view_submission( int result_index )
          u32 len = strlen(metadata_str);
          vg_info( "Metadata: %s\n", metadata_str );
          vg_str_bin( metadata_str, metadata_buf, len );
-         vg_msg root;
-         vg_msg_init( &root, metadata_buf, len/2 );
+         vg_msg root = {0};
+         root.buf = metadata_buf;
+         root.len = len/2;
+         root.max = len/2;
          
          vg_msg workshop = root;
          if( vg_msg_seekframe( &workshop, "workshop", k_vg_msg_first )){
-            vg_msg_cmd kv_type = vg_msg_seekkv( &workshop, "type", 
-                                                k_vg_msg_first );
-            if( kv_type.code & k_vg_msg_code_integer ){
-               u32 u = kv_type.value._u32;
-               workshop_form.submission.type = u;
-               workshop_form.submission.submission_type_selection.value = u;
-            }
+            u32 type = vg_msg_seekkvu32( &workshop, "type", k_vg_msg_first );
+            workshop_form.submission.type = type;
+            workshop_form.submission.submission_type_selection.value = type;
 
             const char *kv_folder = vg_msg_seekkvstr( &workshop, "folder",
                                                       k_vg_msg_first );