removed writing tape file for upload if INFO chunk is missing or wrong
[rocksndiamonds.git] / src / screens.c
index 27d35a301e254902e17a69034545a30c6c5dd53e..54c03fde2eaf02edcd7df9b68fd47447c33f2c38 100644 (file)
@@ -283,6 +283,7 @@ static void MapScreenTreeGadgets(TreeInfo *);
 static void UpdateScreenMenuGadgets(int, boolean);
 
 static boolean OfferUploadTapes(void);
+static void execOfferUploadTapes(void);
 
 static struct GadgetInfo *screen_gadget[NUM_SCREEN_GADGETS];
 
@@ -5568,6 +5569,9 @@ static void execSetupGame(void)
 
   execSetupGame_setNetworkServerText();
 
+  if (!setup.provide_uploading_tapes)
+    setHideSetupEntry(execOfferUploadTapes);
+
   setup_mode = SETUP_MODE_GAME;
 
   DrawSetupScreen();
@@ -6875,7 +6879,7 @@ 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:" },
@@ -7481,8 +7485,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)
@@ -9879,6 +9883,11 @@ static boolean OfferUploadTapes(void)
 
   Request(message, REQ_CONFIRM);
 
+  // after all tapes have been uploaded, remove entry from setup menu
+  setup.provide_uploading_tapes = FALSE;
+
+  SaveSetup();
+
   return (num_tapes_uploaded > 0);
 }
 
@@ -9895,7 +9904,13 @@ void CheckUploadTapes(void)
       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;
+  }
 
+  // after asking for uploading all tapes once, do not ask again
   setup.ask_for_uploading_tapes = FALSE;
 
   SaveSetup();