X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=workshop.c;h=341d44a3f0d64bcd5b4e839b22f5e60c17ec1120;hb=2f44245bafbb83a2172e544a7a2965ae837186ed;hp=5deb5c4b7a899ad4ea1a4a00daffc90d816a2a2b;hpb=f1fe55f957a3dbdb6ca20a696f0c1171e2d5e7ca;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/workshop.c b/workshop.c index 5deb5c4..341d44a 100644 --- a/workshop.c +++ b/workshop.c @@ -15,18 +15,18 @@ #include "steam.h" #include "highscores.h" -static struct ui_dropdown_opt workshop_form_visibility_opts[] = { - { "Public", k_ERemoteStoragePublishedFileVisibilityPublic }, - { "Unlisted", k_ERemoteStoragePublishedFileVisibilityUnlisted }, - { "Friends Only", k_ERemoteStoragePublishedFileVisibilityFriendsOnly }, - { "Private", k_ERemoteStoragePublishedFileVisibilityPrivate }, +static struct ui_enum_opt workshop_form_visibility_opts[] = { + { k_ERemoteStoragePublishedFileVisibilityPublic, "Public" }, + { k_ERemoteStoragePublishedFileVisibilityUnlisted, "Unlisted" }, + { k_ERemoteStoragePublishedFileVisibilityFriendsOnly, "Friends Only" }, + { k_ERemoteStoragePublishedFileVisibilityPrivate, "Private" }, }; -static struct ui_dropdown_opt workshop_form_type_opts[] = { - { "None", k_addon_type_none }, - { "Board", k_addon_type_board }, - { "World", k_addon_type_world }, - { "Player", k_addon_type_player }, +static struct ui_enum_opt workshop_form_type_opts[] = { + { k_addon_type_none, "None" }, + { k_addon_type_board, "Board" }, + { k_addon_type_world, "World" }, + { k_addon_type_player, "Player" }, }; /* @@ -57,14 +57,12 @@ VG_STATIC void workshop_reset_submission_data(void) workshop_form.submission.description[0] = '\0'; workshop_form.submission.title[0] = '\0'; workshop_form.submission.author[0] = '\0'; - workshop_form.submission.submission_type_selection.value = + workshop_form.submission.submission_type_selection = k_addon_type_none; - workshop_form.submission.submission_type_selection.index = 0; workshop_form.submission.type = k_addon_type_none; - workshop_form.submission.visibility.value = + workshop_form.submission.visibility = k_ERemoteStoragePublishedFileVisibilityPublic; - workshop_form.submission.visibility.index = 0; workshop_form.addon_folder[0] = '\0'; player_board_unload( &workshop_form.board_model ); @@ -156,7 +154,7 @@ VG_STATIC const char *workshop_filetype_folder(void){ enum addon_type type = workshop_form.submission.type; if ( type == k_addon_type_board ) return "boards/"; else if( type == k_addon_type_player ) return "playermodels/"; - else if( type == k_addon_type_world ) return "worlds/"; + else if( type == k_addon_type_world ) return "maps/"; return "unknown_addon_type/"; } @@ -210,7 +208,7 @@ VG_STATIC void workshop_form_upload_submission( PublishedFileId_t file_id, vg_info( "Setting visibility\n" ); SteamAPI_ISteamUGC_SetItemVisibility( hSteamUGC, handle, - workshop_form.submission.visibility.value ); + workshop_form.submission.visibility ); vg_info( "Submitting updates\n" ); vg_steam_async_call *call = vg_alloc_async_steam_api_call(); @@ -672,11 +670,9 @@ VG_STATIC void workshop_op_download_and_view_submission( int result_index ) workshop_form.submission.file_id = details.m_nPublishedFileId; workshop_form.file_intent = k_workshop_form_file_intent_keep_old; workshop_form.page = k_workshop_form_edit; - workshop_form.submission.visibility.value = details.m_eVisibility; + workshop_form.submission.visibility = details.m_eVisibility; workshop_form.submission.type = k_addon_type_none; - workshop_form.submission.submission_type_selection.index = 0; - workshop_form.submission.submission_type_selection.value = - k_addon_type_none; + workshop_form.submission.submission_type_selection = k_addon_type_none; if( have_meta ){ u32 len = strlen(metadata_str); @@ -691,7 +687,7 @@ VG_STATIC void workshop_op_download_and_view_submission( int result_index ) if( vg_msg_seekframe( &workshop, "workshop", k_vg_msg_first )){ u32 type = vg_msg_seekkvu32( &workshop, "type", k_vg_msg_first ); workshop_form.submission.type = type; - workshop_form.submission.submission_type_selection.value = type; + workshop_form.submission.submission_type_selection = type; const char *kv_folder = vg_msg_seekkvstr( &workshop, "folder", k_vg_msg_first ); @@ -706,21 +702,6 @@ VG_STATIC void workshop_op_download_and_view_submission( int result_index ) vg_error( "No metadata was returned with this item.\n" ); } - /* TODO.... */ - for( i32 i=0; isk; - player_animation res; - res.type = k_player_animation_type_fk; + player_pose res; + res.type = k_player_pose_type_ik; struct skeleton_anim *anim = skeleton_get_anim( sk, "idle_cycle+y" ); - skeleton_sample_anim( sk, anim, vg.time*0.1f, res.pose ); + skeleton_sample_anim( sk, anim, vg.time*0.1f, res.keyframes ); q_axis_angle( res.root_q, (v3f){0.0f,1.0f,0.0f}, VG_PIf ); v3_zero( res.root_co ); res.root_co[1] = 200.0f; @@ -913,9 +894,9 @@ VG_STATIC void workshop_render_player_preview(void){ v3_copy( res.root_co, transform[3] ); /* TODO: Function. */ - skeleton_apply_pose( sk, res.pose, k_anim_apply_defer_ik ); + skeleton_apply_pose( sk, res.keyframes, k_anim_apply_defer_ik ); skeleton_apply_ik_pass( sk ); - skeleton_apply_pose( sk, res.pose, k_anim_apply_deffered_only ); + skeleton_apply_pose( sk, res.keyframes, k_anim_apply_deffered_only ); skeleton_apply_inverses( sk ); skeleton_apply_transform( sk, transform ); @@ -1023,7 +1004,7 @@ VG_STATIC void workshop_render_board_preview(void){ sizeof(struct ub_world_lighting), &world->ub_lighting ); render_world( world, &cam, 1 ); - struct board_pose pose = {0}; + struct player_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 ); @@ -1070,11 +1051,9 @@ VG_STATIC void workshop_form_gui_page_undecided( ui_rect content ){ ui_rect_center( row, button_l ); ui_split_ratio( button_l, k_ui_axis_v, 0.5f, 2, button_l, button_r ); - if( workshop_form.submission.submission_type_selection.value != - k_addon_type_none ){ - if( ui_button_text( button_l, "OK", 1 ) ){ - enum addon_type type = - workshop_form.submission.submission_type_selection.value; + enum addon_type type = workshop_form.submission.submission_type_selection; + if( type != k_addon_type_none){ + if( ui_button_text( button_l, "OK", 1 ) == 1 ){ workshop_form.submission.type = type; if( type == k_addon_type_world ){ @@ -1089,7 +1068,7 @@ VG_STATIC void workshop_form_gui_page_undecided( ui_rect content ){ ui_colour(k_ui_bg+4) ); } - if( ui_button_text( button_r, "Cancel", 1 ) ){ + if( ui_button_text( button_r, "Cancel", 1 ) == 1 ){ workshop_form.page = k_workshop_form_open; workshop_form.file_intent = k_workshop_form_file_intent_none; } @@ -1202,7 +1181,7 @@ VG_STATIC void workshop_form_gui_edit_page( ui_rect content ){ ui_text( file_entry, workshop_form.addon_folder, 1, k_ui_align_middle_left, ui_colour( k_ui_fg+4 ) ); - if( ui_button_text( file_button, "Remove", 1 ) ){ + if( ui_button_text( file_button, "Remove", 1 ) == 1 ){ if( type == k_addon_type_board ) player_board_unload( &workshop_form.board_model ); else if( type == k_addon_type_player ) @@ -1220,7 +1199,7 @@ VG_STATIC void workshop_form_gui_edit_page( ui_rect content ){ ui_textbox( file_entry, workshop_form.addon_folder, vg_list_size(workshop_form.addon_folder), 0, &callbacks ); - if( ui_button_text( file_button, "Load", 1 ) ){ + if( ui_button_text( file_button, "Load", 1 ) == 1 ){ workshop_op_load_model(); } } @@ -1234,9 +1213,9 @@ VG_STATIC void workshop_form_gui_edit_page( ui_rect content ){ ui_split( title_entry, k_ui_axis_v, ui_text_line_width(str_title)+8, 0, label, title_entry ); - ui_rect vis_dropdown; + ui_rect vis_enum; ui_split_ratio( title_entry, k_ui_axis_v, 0.6f, 16, - title_entry, vis_dropdown ); + title_entry, vis_enum ); /* title box */ { @@ -1250,7 +1229,7 @@ VG_STATIC void workshop_form_gui_edit_page( ui_rect content ){ /* visibility option */ { - ui_enum( vis_dropdown, "Visibility:", workshop_form_visibility_opts, + ui_enum( vis_enum, "Visibility:", workshop_form_visibility_opts, 4, &workshop_form.submission.visibility ); } @@ -1284,10 +1263,10 @@ VG_STATIC void workshop_form_gui_edit_page( ui_rect content ){ ui_split_ratio( submission_center, k_ui_axis_v, 0.5f, 8, btn_left, btn_right ); - if( ui_button_text( btn_left, "Publish", 1 ) ){ + if( ui_button_text( btn_left, "Publish", 1 ) == 1 ){ workshop_op_submit(); } - if( ui_button_text( btn_right, "Cancel", 1 ) ){ + if( ui_button_text( btn_right, "Cancel", 1 ) == 1 ){ workshop_form.page = k_workshop_form_open; player_board_unload( &workshop_form.board_model ); workshop_form.file_intent = k_workshop_form_file_intent_none; @@ -1311,7 +1290,7 @@ VG_STATIC void workshop_form_gui_edit_page( ui_rect content ){ 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, "\xbf", 2 ) ){ + if( ui_button_text( btn_right, "\xbf", 2 ) == 1 ){ ISteamFriends *hSteamFriends = SteamAPI_SteamFriends(); SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage( hSteamFriends, "https://steamcommunity.com/sharedfiles/workshoplegalagreement", @@ -1384,15 +1363,15 @@ VG_STATIC void workshop_form_gui_sidebar( ui_rect sidebar ) ui_rect btn_left, btn_right; ui_split_ratio( controls, k_ui_axis_v, 0.5f, 2, btn_left, btn_right ); - if( ui_button_text( btn_left, "newer", 1 ) ){ + if( ui_button_text( btn_left, "newer", 1 ) == 1 ){ workshop_view_page( workshop_form.view_published_page_id-1 ); } - if( ui_button_text( btn_right, "older", 1 ) ){ + if( ui_button_text( btn_right, "older", 1 ) == 1 ){ workshop_view_page( workshop_form.view_published_page_count+1 ); } - if( ui_button_text( btn_create_new, "Create New Item", 1 ) ){ + if( ui_button_text( btn_create_new, "Create New Item", 1 ) == 1 ){ workshop_reset_submission_data(); workshop_form.submission.submit_title = 1; workshop_form.submission.submit_description = 1; @@ -1406,7 +1385,7 @@ VG_STATIC void workshop_form_gui_sidebar( ui_rect sidebar ) ui_rect_pad( item, (ui_px[2]){4,4} ); struct published_file *pfile = &workshop_form.published_files_list[i]; - if( ui_button_text( item, pfile->title, 1 ) ){ + if( ui_button_text( item, pfile->title, 1 ) == 1 ){ if( pfile->result == k_EResultOK ){ vg_info( "Select index: %d\n", pfile->result_index ); workshop_op_download_and_view_submission( pfile->result_index ); @@ -1442,7 +1421,7 @@ VG_STATIC void workshop_form_gui(void) ui_split( title, k_ui_axis_v, title[2]-title[3], 2, title, quit_button ); if( vg_loader_availible() ){ - if( ui_button_text( quit_button, "X", 1 ) ){ + if( ui_button_text( quit_button, "X", 1 ) == 1 ){ workshop_quit_form(); return; } @@ -1533,7 +1512,7 @@ VG_STATIC void workshop_form_gui(void) ui_rect_center( submission_row, submission_center ); ui_rect_pad( submission_center, (ui_px[2]){8,8} ); - if( ui_button_text( submission_center, "OK", 1 ) ){ + if( ui_button_text( submission_center, "OK", 1 ) == 1 ){ workshop_form.page = k_workshop_form_open; } }