added asking for and uploading tapes to score server after changing user
[rocksndiamonds.git] / src / screens.c
index 0cb8a2b017ab8d05e10f0f757a353c17d4d158ab..47777fa23d825d853309e856707f24e64023208a 100644 (file)
@@ -4356,12 +4356,17 @@ static void setTypeNameValues(char *name, struct TextPosInfo *pos,
     // temporarily change active user to edited user
     user.nr = type_name_nr;
 
-    // load setup of edited user (unless creating user with current setup)
-    if (!create_user ||
-       !Request("Use current setup values for the new player?", REQ_ASK))
-      LoadSetup();
-    else
+    if (create_user &&
+        Request("Use current setup values for the new player?", REQ_ASK))
+    {
+      // use current setup values for new user, but create new player UUID
       setup.player_uuid = getStringCopy(getUUID());
+    }
+    else
+    {
+      // load setup for existing user (or start with defaults for new user)
+      LoadSetup();
+    }
   }
 
   char *setup_filename = getSetupFilename();
@@ -5111,6 +5116,9 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button,
          SetGameStatus(GAME_MODE_MAIN);
 
          DrawMainMenu();
+
+         // needed once to offer uploading score tapes after changing user
+         CheckUploadTapes();
        }
       }
     }
@@ -9982,7 +9990,19 @@ static boolean OfferUploadTapes(void)
   int num_tapes_uploaded = UploadTapes();
   char message[100];
 
-  sprintf(message, "%d tapes uploaded!", num_tapes_uploaded);
+  if (num_tapes_uploaded < 0)
+  {
+    Request("Cannot upload tapes to score server!", REQ_CONFIRM);
+
+    return FALSE;
+  }
+
+  if (num_tapes_uploaded == 0)
+    sprintf(message, "No tapes uploaded!");
+  else if (num_tapes_uploaded == 1)
+    sprintf(message, "1 tape uploaded!");
+  else
+    sprintf(message, "%d tapes uploaded!", num_tapes_uploaded);
 
   Request(message, REQ_CONFIRM);
 
@@ -9991,7 +10011,7 @@ static boolean OfferUploadTapes(void)
 
   SaveSetup();
 
-  return (num_tapes_uploaded > 0);
+  return TRUE;
 }
 
 void CheckUploadTapes(void)