X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=workshop.c;h=30ddb5647528410b5cfdbf8debd7c982480fbea0;hb=9eb3de757a997becb8406417a4bf613f4cb04900;hp=d0a3883d1793732253b41d4e551fe94b8e4ea043;hpb=02e009ae6e20938675277e9ce2f467e17b170cc7;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/workshop.c b/workshop.c index d0a3883..30ddb56 100644 --- a/workshop.c +++ b/workshop.c @@ -31,9 +31,7 @@ static struct ui_dropdown_opt workshop_form_type_opts[] = { /* * Close the form and discard UGC query result */ -VG_STATIC void workshop_quit_form(void) -{ - skaterift_begin_op( k_async_op_none ); /* safeguard */ +VG_STATIC void workshop_quit_form(void){ player_board_unload( &workshop_form.board_model ); workshop_form.file_intent = k_workshop_form_file_intent_none; @@ -46,7 +44,7 @@ VG_STATIC void workshop_quit_form(void) } workshop_form.page = k_workshop_form_hidden; - skaterift_end_op(); + workshop_form.op = k_workshop_op_none; } /* @@ -150,8 +148,6 @@ VG_STATIC void on_workshop_update_result( void *data, void *user ) vg_error( "Error with the submitted file (%d)\n", result->m_eResult ); } - - skaterift_end_op(); } /* @@ -245,7 +241,6 @@ VG_STATIC void on_workshop_createitem( void *data, void *user ) workshop_form.page = k_workshop_form_closing_bad; workshop_form.failure_or_success_string = errstr; - skaterift_end_op(); } } @@ -312,7 +307,6 @@ VG_STATIC void _workshop_form_submit_thread( void *data ) if( !vg_strgood(&folder) ){ vg_error( "addon folder path too long\n" ); - vg_async_call( workshop_async_any_complete, NULL, 0 ); return; } @@ -344,7 +338,6 @@ VG_STATIC void _workshop_form_submit_thread( void *data ) vg_dir dir; if( !vg_dir_open( &dir, folder.buffer ) ){ vg_error( "could not open addon folder '%s'\n", folder.buffer ); - vg_async_call( workshop_async_any_complete, NULL, 0 ); return; } @@ -372,7 +365,6 @@ VG_STATIC void _workshop_form_submit_thread( void *data ) vg_strcat( &descriptor_file, "/addon.inf" ); if( !vg_strgood(&descriptor_file) ){ vg_error( "Addon info path too long\n" ); - vg_async_call( workshop_async_any_complete, NULL, 0 ); return; } @@ -380,7 +372,6 @@ VG_STATIC void _workshop_form_submit_thread( void *data ) if( !fp ){ vg_error( "Could not open addon info file '%s'\n", descriptor_file.buffer ); - vg_async_call( workshop_async_any_complete, NULL, 0 ); return; } fwrite( descriptor_buf, descriptor.cur, 1, fp ); @@ -393,7 +384,6 @@ VG_STATIC void _workshop_form_submit_thread( void *data ) if( !vg_strgood(&preview) ){ vg_error( "preview image path too long\n" ); - vg_async_call( workshop_async_any_complete, NULL, 0 ); return; } @@ -410,34 +400,35 @@ VG_STATIC void _workshop_form_submit_thread( void *data ) /* * Entry point for the publishing submission operation */ -VG_STATIC void workshop_op_submit(void) -{ +VG_STATIC void workshop_op_submit(void){ /* TODO: Show these errors to the user */ if( workshop_form.submission.submit_title ){ if( !workshop_form.submission.title[0] ){ - vg_error( "Cannot submit because a title is required\n" ); + ui_start_modal( "Cannot submit because a title is required\n", + UI_MODAL_WARN); return; } } if( workshop_form.submission.submit_description ){ if( !workshop_form.submission.description[0] ){ - vg_error( "Cannot submit because a description is required\n" ); + ui_start_modal( "Cannot submit because a description is required\n", + UI_MODAL_WARN ); return; } } if( workshop_form.submission.submit_file_and_image ){ if( workshop_form.file_intent == k_workshop_form_file_intent_none ){ - vg_error( "Cannot submit because the file is empty or unspecified\n" ); + ui_start_modal( "Cannot submit because the file is " + "empty or unspecified\n", UI_MODAL_WARN ); return; } } - skaterift_begin_op( k_workshop_form_op_publishing_update ); - player_board_unload( &workshop_form.board_model ); workshop_form.file_intent = k_workshop_form_file_intent_none; + workshop_form.op = k_workshop_op_publishing_update; vg_loader_start( _workshop_form_submit_thread, NULL ); } @@ -459,15 +450,12 @@ VG_STATIC void workshop_form_loadmodel_async_complete( void *payload, u32 size ) workshop_form.file_intent = k_workshop_form_file_intent_new; vg_success( "workshop async load complete\n" ); - skaterift_end_op(); } /* * Reciever for failure to load */ -VG_STATIC void workshop_form_loadmodel_async_error( void *payload, u32 size ) -{ - skaterift_end_op(); +VG_STATIC void workshop_form_loadmodel_async_error( void *payload, u32 size ){ } /* @@ -533,8 +521,7 @@ VG_STATIC void _workshop_form_load_thread( void *data ) /* * Entry point for load model operation */ -VG_STATIC void workshop_op_load_model(void) -{ +VG_STATIC void workshop_op_load_model(void){ if( workshop_form.submission.type == k_addon_type_world ){ vg_warn( "WORLD LOAD INFO Currently unsupported\n" ); return; @@ -547,12 +534,12 @@ VG_STATIC void workshop_op_load_model(void) mdl_arritm( &workshop_form.view_world->ent_swspreview, 0 ); } else{ - vg_error( "There is no ent_swspreview in the level. " - "Cannot publish here\n" ); + ui_start_modal( "There is no ent_swspreview in the level. \n" + "Cannot publish here\n", UI_MODAL_BAD ); return; } - skaterift_begin_op( k_workshop_form_op_loading_model ); + workshop_form.op = k_workshop_op_loading_model; vg_loader_start( _workshop_form_load_thread, NULL ); } @@ -583,8 +570,6 @@ VG_STATIC void workshop_form_async_imageload( void *data, u32 len ) stbi_failure_reason() ); ui_start_modal( workshop_form.error_msg, UI_MODAL_BAD ); } - - skaterift_end_op(); } /* @@ -650,6 +635,7 @@ VG_STATIC void on_workshop_download_ugcpreview( void *data, void *user ) */ VG_STATIC void workshop_op_download_and_view_submission( int result_index ) { + workshop_form.op = k_workshop_op_downloading_submission; ISteamUGC *hSteamUGC = SteamAPI_SteamUGC(); ISteamRemoteStorage *hSteamRemoteStorage = SteamAPI_SteamRemoteStorage(); SteamUGCDetails_t details; @@ -658,7 +644,6 @@ VG_STATIC void workshop_op_download_and_view_submission( int result_index ) result_index, &details ) ) { - skaterift_begin_op( k_workshop_form_op_downloading_submission ); workshop_reset_submission_data(); workshop_form.submission.submit_description = 0; workshop_form.submission.submit_file_and_image = 0; @@ -775,7 +760,6 @@ VG_STATIC void workshop_op_download_and_view_submission( int result_index ) } else{ vg_error( "GetQueryUGCResult: Index out of range\n" ); - skaterift_end_op(); } } @@ -1014,8 +998,9 @@ VG_STATIC void workshop_render_board_preview(void){ sizeof(struct ub_world_lighting), &world->ub_lighting ); render_world( world, &cam, 1 ); - render_board( &cam, world, board, mmdl, k_board_shader_entity ); - render_board( &cam, world, board, mmdl1, k_board_shader_entity ); + struct board_pose pose = {0}; + render_board( &cam, world, board, mmdl, &pose, k_board_shader_entity ); + render_board( &cam, world, board, mmdl1, &pose, k_board_shader_entity ); glBindFramebuffer( GL_FRAMEBUFFER, 0 ); glViewport( 0,0, vg.window_x, vg.window_y ); @@ -1428,7 +1413,7 @@ VG_STATIC void workshop_form_gui(void) ui_rect quit_button; ui_split( title, k_ui_axis_v, title[2]-title[3], 2, title, quit_button ); - if( skaterift.async_op == k_async_op_none ){ + if( vg_loader_availible() ){ if( ui_button_text( quit_button, "X", 1 ) ){ workshop_quit_form(); return; @@ -1441,19 +1426,19 @@ VG_STATIC void workshop_form_gui(void) * escapes here and we show them a basic string */ - if( skaterift.async_op != k_async_op_none ){ + if( !vg_loader_availible() ){ const char *op_string = "The programmer has not bothered to describe " "the current operation that is running."; - switch( skaterift.async_op ){ - case k_workshop_form_op_loading_model: + switch( skaterift.op ){ + case k_workshop_op_loading_model: op_string = "Operation in progress: Loading model file."; break; - case k_workshop_form_op_publishing_update: + case k_workshop_op_publishing_update: op_string = "Operation in progress: publishing submission update " "to steam."; break; - case k_workshop_form_op_downloading_submission: + case k_workshop_op_downloading_submission: op_string = "Operation in progress: downloading existing submission" " from Steam services."; break;