renamed setup option for using score server
[rocksndiamonds.git] / src / screens.c
index e3294c1bd8691edd0fb4c6df8992e030b485c860..dfc08900a8ddc82ea290cc69df41ea07be223741 100644 (file)
@@ -282,6 +282,8 @@ static void MapScreenTreeGadgets(TreeInfo *);
 
 static void UpdateScreenMenuGadgets(int, boolean);
 
+static boolean OfferUploadTapes(void);
+
 static struct GadgetInfo *screen_gadget[NUM_SCREEN_GADGETS];
 
 static int info_mode = INFO_MODE_MAIN;
@@ -6651,6 +6653,11 @@ static void execGadgetNetworkServer(void)
   ClickOnGadget(gi, MB_LEFTBUTTON);
 }
 
+static void execOfferUploadTapes(void)
+{
+  OfferUploadTapes();
+}
+
 static void ToggleNetworkModeIfNeeded(void)
 {
   int font_title = FONT_TITLE_1;
@@ -6868,8 +6875,9 @@ static struct TokenInfo setup_info_game[] =
   { TYPE_PLAYER,       &setup.network_player_nr,"Preferred Network Player:" },
   { TYPE_TEXT_INPUT,   execGadgetNetworkServer, "Network Server Hostname:" },
   { TYPE_STRING,       &network_server_text,   ""                      },
-  { TYPE_SWITCH,       &setup.api_server,      "Use Highscore Server:" },
+  { TYPE_SWITCH,       &setup.use_api_server,  "Use Highscore Server:" },
   { TYPE_SWITCH,       &setup.only_show_local_scores, "Only Show Local Scores:" },
+  { TYPE_ENTER_LIST,   execOfferUploadTapes,   "Upload All Tapes to Server" },
   { TYPE_SWITCH,       &setup.multiple_users,  "Multiple Users/Teams:" },
   { TYPE_YES_NO,       &setup.input_on_focus,  "Only Move Focussed Player:" },
   { TYPE_SWITCH,       &setup.time_limit,      "Time Limit:"           },
@@ -7473,8 +7481,8 @@ static void changeSetupValue(int screen_pos, int setup_info_pos_raw, int dx)
     ToggleNetworkModeIfNeeded();
 
   // API server mode may have changed at this point
-  if (si->value == &setup.api_server)
-    runtime.api_server = setup.api_server;
+  if (si->value == &setup.use_api_server)
+    runtime.use_api_server = setup.use_api_server;
 
   // game speed list may have changed at this point
   if (si->value == &setup.game_speed_extended)
@@ -9829,7 +9837,7 @@ void DrawScreenAfterAddingSet(char *tree_subdir_new, int tree_type)
   }
 }
 
-static void UploadTapes(void)
+static int UploadTapes(void)
 {
   SetGameStatus(GAME_MODE_LOADING);
 
@@ -9846,7 +9854,7 @@ static void UploadTapes(void)
   global.autoplay_leveldir = "ALL";
   global.autoplay_all = TRUE;
 
-  AutoPlayTapes();
+  int num_tapes_uploaded = AutoPlayTapes();
 
   global.autoplay_mode = AUTOPLAY_MODE_NONE;
   global.autoplay_leveldir = NULL;
@@ -9855,27 +9863,55 @@ static void UploadTapes(void)
   SetGameStatus(GAME_MODE_MAIN);
 
   DrawMainMenu();
+
+  return num_tapes_uploaded;
+}
+
+static boolean OfferUploadTapes(void)
+{
+  if (!Request("Upload all your tapes to the high score server now?", REQ_ASK))
+    return FALSE;
+
+  int num_tapes_uploaded = UploadTapes();
+  char message[100];
+
+  sprintf(message, "%d tapes uploaded!", num_tapes_uploaded);
+
+  Request(message, REQ_CONFIRM);
+
+  // after all tapes have been uploaded, remove entry from setup menu
+  setup.provide_uploading_tapes = FALSE;
+  setHideSetupEntry(execOfferUploadTapes);
+
+  SaveSetup();
+
+  return (num_tapes_uploaded > 0);
 }
 
 void CheckUploadTapes(void)
 {
+  if (!setup.provide_uploading_tapes)
+    setHideSetupEntry(execOfferUploadTapes);
+
   if (!setup.ask_for_uploading_tapes)
     return;
 
   if (directoryExists(getTapeDir(NULL)))
   {
-    if (Request("Upload all your tapes to the high score server now?", REQ_ASK))
-    {
-      UploadTapes();
+    boolean tapes_uploaded = OfferUploadTapes();
 
-      Request("All tapes uploaded!", REQ_CONFIRM);
-    }
-    else
-    {
-      Request("You can upload your tapes from the setup menu later!", REQ_CONFIRM);
-    }
+    if (!tapes_uploaded)
+      Request("You can upload your tapes from the setup menu later!",
+             REQ_CONFIRM);
+  }
+  else
+  {
+    // if tapes directory does not exist yet, never offer uploading all tapes
+    setup.provide_uploading_tapes = FALSE;
+    setHideSetupEntry(execOfferUploadTapes);
   }
 
+  // after asking for uploading all tapes once, do not ask again
   setup.ask_for_uploading_tapes = FALSE;
 
   SaveSetup();