/*
* 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;
}
workshop_form.page = k_workshop_form_hidden;
- skaterift_end_op();
+ workshop_form.op = k_workshop_op_none;
}
/*
vg_error( "Error with the submitted file (%d)\n", result->m_eResult );
}
-
- skaterift_end_op();
}
/*
workshop_form.page = k_workshop_form_closing_bad;
workshop_form.failure_or_success_string = errstr;
- skaterift_end_op();
}
}
if( !vg_strgood(&folder) ){
vg_error( "addon folder path too long\n" );
- vg_async_call( workshop_async_any_complete, NULL, 0 );
return;
}
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;
}
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;
}
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 );
if( !vg_strgood(&preview) ){
vg_error( "preview image path too long\n" );
- vg_async_call( workshop_async_any_complete, NULL, 0 );
return;
}
/*
* 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 );
}
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 ){
}
/*
/*
* 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;
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 );
}
stbi_failure_reason() );
ui_start_modal( workshop_form.error_msg, UI_MODAL_BAD );
}
-
- skaterift_end_op();
}
/*
*/
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;
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;
}
else{
vg_error( "GetQueryUGCResult: Index out of range\n" );
- skaterift_end_op();
}
}
glEnable( GL_DEPTH_TEST );
glDisable( GL_BLEND );
- render_world( localplayer.viewable_world, &main_camera, 1 );
+ render_world( localplayer.viewable_world, &skaterift.cam, 1 );
glBindFramebuffer( GL_FRAMEBUFFER, 0 );
glViewport( 0,0, vg.window_x, vg.window_y );
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 );
ui_split( inner, k_ui_axis_v, inner[2]-btn_width, 0, label, btn_right);
ui_rect_pad( btn_right, (ui_px[2]){2,2} );
- if( ui_button_text( btn_right, "\x91", 2 ) ){
+ if( ui_button_text( btn_right, "\xbf", 2 ) ){
ISteamFriends *hSteamFriends = SteamAPI_SteamFriends();
SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage( hSteamFriends,
"https://steamcommunity.com/sharedfiles/workshoplegalagreement",
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;
* 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;