update ui enum api in workshop (untested)
[carveJwlIkooP6JGAAIwe30JlM.git] / workshop.c
index 11ec2766b3689e02139deafa444f4c7caebf43b4..341d44a3f0d64bcd5b4e839b22f5e60c17ec1120 100644 (file)
 #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 );
@@ -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; i<vg_list_size(workshop_form_visibility_opts); i++ ){
-         if( workshop_form_visibility_opts[i].value == details.m_eVisibility ){
-            workshop_form.submission.visibility.index = i;
-            break;
-         }
-      }
-      for( i32 i=0; i<vg_list_size(workshop_form_type_opts); i++ ){
-         if( workshop_form_type_opts[i].value == 
-               workshop_form.submission.submission_type_selection.value ){
-            workshop_form.submission.submission_type_selection.index = i;
-            break;
-         }
-      }
-
       render_fb_bind( gpipeline.fb_workshop_preview, 0 );
       glClearColor( 0.2f, 0.0f, 0.0f, 1.0f );
       glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT );
@@ -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 ){
+   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 ){
-         enum addon_type type = 
-               workshop_form.submission.submission_type_selection.value;
          workshop_form.submission.type = type;
 
          if( type == k_addon_type_world ){
@@ -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 );
    }