* 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 ) ){
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 );
}
/*
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();
}
}
}
else{
- vg_error( "Failed to load workshop_preview.jpg: '%s'\n",
- stbi_failure_reason() );
vg_async_call( workshop_form_async_imageload, NULL, 0 );
}
}
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 );
VG_STATIC int workshop_submit_command( int argc, const char *argv[] )
{
if( !steam_ready ){
- vg_error( "Steam API is not ready or loaded\n" );
+ ui_start_modal( "Steam API is not initialized\n", UI_MODAL_BAD );
return 0;
}
*info->len = j;
}
-#if 0
-VG_STATIC void vg_strsan_ascii( char *buf, u32 len )
-{
- for( u32 i=0; i<len-1; i ++ ){
- if( buf[i] == 0 ) return;
-
- if( buf[i] < 32 || buf[i] > 126 ){
- buf[i] = '?';
- }
- }
- buf[len-1] = '\0';
-}
-
-#define VG_STRSAN_ASCII( X ) vg_strsan_ascii( X, vg_list_size(X) )
-
-VG_STATIC void workshop_load_metadata( const char *path,
- struct workshop_file_info *info )
-{
- FILE *fp = fopen( path, "rb" );
-
- if( fp ){
- if( fread( info, sizeof( struct workshop_file_info ), 1, fp ) ){
- VG_STRSAN_ASCII( info->author_name );
- VG_STRSAN_ASCII( info->title );
- }
- fclose( fp );
- }
-}
-#endif
-
#endif /* WORKSHOP_C */