added setup option to ask for uploading tapes to score server
[rocksndiamonds.git] / src / files.c
index 71c966a22ef80129f01bf5e365bcfb9ea20ff594..20f5102594962e230d669b28ed2e551e99f9153b 100644 (file)
@@ -9026,8 +9026,8 @@ void SaveScore(int nr)
   SaveScoreToFilename(filename);
 }
 
-static void ExecuteAsThread(SDL_ThreadFunction function, char *name, void *data,
-                           char *error)
+void ExecuteAsThread(SDL_ThreadFunction function, char *name, void *data,
+                    char *error)
 {
   SDL_Thread *thread = SDL_CreateThread(function, name, data);
 
@@ -9040,7 +9040,7 @@ static void ExecuteAsThread(SDL_ThreadFunction function, char *name, void *data,
   Delay(1);
 }
 
-static char *getPasswordJSON(char *password)
+char *getPasswordJSON(char *password)
 {
   static char password_json[MAX_FILENAME_LEN] = "";
   static boolean initialized = FALSE;
@@ -9073,10 +9073,12 @@ static void DownloadServerScoreToCacheExt(struct HttpRequest *request,
   snprintf(request->body, MAX_HTTP_BODY_SIZE,
           "{\n"
           "%s"
+          "  \"game_version\":         \"%s\",\n"
           "  \"levelset_identifier\":  \"%s\",\n"
           "  \"level_nr\":             \"%d\"\n"
           "}\n",
           getPasswordJSON(setup.api_server_password),
+          getProgramRealVersionString(),
           levelset.identifier, level_nr);
 
   ConvertHttpRequestBodyToServerEncoding(request);
@@ -9335,14 +9337,22 @@ static void UploadScoreToServerExt(struct HttpRequest *request,
     return;
   }
 
+  char *player_name_raw = score_entry->name;
+  char *player_uuid_raw = setup.player_uuid;
+
+  if (options.player_name != NULL)
+  {
+    player_name_raw = options.player_name;
+    player_uuid_raw = "";
+  }
+
   char *levelset_identifier = getEscapedJSON(leveldir_current->identifier);
   char *levelset_name       = getEscapedJSON(leveldir_current->name);
   char *levelset_author     = getEscapedJSON(leveldir_current->author);
   char *level_name          = getEscapedJSON(level.name);
   char *level_author        = getEscapedJSON(level.author);
-  char *player_name         = getEscapedJSON(score_entry->name);
-  char *player_uuid         = getEscapedJSON(setup.player_uuid);
-  char *system_uuid         = getEscapedJSON(setup.system_uuid);
+  char *player_name         = getEscapedJSON(player_name_raw);
+  char *player_uuid         = getEscapedJSON(player_uuid_raw);
 
   snprintf(request->body, MAX_HTTP_BODY_SIZE,
           "{\n"
@@ -9359,7 +9369,6 @@ static void UploadScoreToServerExt(struct HttpRequest *request,
           "  \"rate_time_over_score\": \"%d\",\n"
           "  \"player_name\":          \"%s\",\n"
           "  \"player_uuid\":          \"%s\",\n"
-          "  \"system_uuid\":          \"%s\",\n"
           "  \"score\":                \"%d\",\n"
           "  \"time\":                 \"%d\",\n"
           "  \"tape_basename\":        \"%s\",\n"
@@ -9378,7 +9387,6 @@ static void UploadScoreToServerExt(struct HttpRequest *request,
           level.rate_time_over_score,
           player_name,
           player_uuid,
-          system_uuid,
           score_entry->score,
           score_entry->time,
           score_entry->tape_basename,
@@ -9393,7 +9401,6 @@ static void UploadScoreToServerExt(struct HttpRequest *request,
   checked_free(level_author);
   checked_free(player_name);
   checked_free(player_uuid);
-  checked_free(system_uuid);
 
   ConvertHttpRequestBodyToServerEncoding(request);
 
@@ -9521,10 +9528,6 @@ static struct TokenInfo global_setup_tokens[] =
     TYPE_STRING,
     &setup.player_uuid,                                "player_uuid"
   },
-  {
-    TYPE_STRING,
-    &setup.system_uuid,                                "system_uuid"
-  },
   {
     TYPE_SWITCH,
     &setup.multiple_users,                     "multiple_users"
@@ -9765,6 +9768,10 @@ static struct TokenInfo global_setup_tokens[] =
     TYPE_STRING,
     &setup.api_server_password,                        "api_server_password"
   },
+  {
+    TYPE_SWITCH,
+    &setup.ask_for_uploading_tapes,            "ask_for_uploading_tapes"
+  },
   {
     TYPE_STRING,
     &setup.touch.control_type,                 "touch.control_type"
@@ -10336,9 +10343,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si)
   int i;
 
   si->player_name = getStringCopy(getDefaultUserName(user.nr));
-
   si->player_uuid = NULL;      // (will be set later)
-  si->system_uuid = NULL;      // (will be set later)
 
   si->multiple_users = TRUE;
 
@@ -10406,6 +10411,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si)
   si->api_server = TRUE;
   si->api_server_hostname = getStringCopy(API_SERVER_HOSTNAME);
   si->api_server_password = getStringCopy(UNDEFINED_PASSWORD);
+  si->ask_for_uploading_tapes = TRUE;
 
   si->touch.control_type = getStringCopy(TOUCH_CONTROL_DEFAULT);
   si->touch.move_distance = TOUCH_MOVE_DISTANCE_DEFAULT;       // percent
@@ -10886,19 +10892,13 @@ static void LoadSetup_SpecialPostProcessing(void)
   setup.scroll_delay_value =
     MIN(MAX(MIN_SCROLL_DELAY, setup.scroll_delay_value), MAX_SCROLL_DELAY);
 
-  if (setup.player_uuid == NULL ||
-      setup.system_uuid == NULL)
+  if (setup.player_uuid == NULL)
   {
-    if (setup.player_uuid == NULL)
-      setup.player_uuid = getStringCopy(GetPlayerUUID());
-
-    if (setup.system_uuid == NULL)
-      setup.system_uuid = getStringCopy(GetSystemUUID());
+    // player UUID does not yet exist in setup file
+    setup.player_uuid = getStringCopy(getUUID());
 
     SaveSetup();
   }
-
-  SetSystemUUID(setup.system_uuid);
 }
 
 void LoadSetup(void)
@@ -11031,8 +11031,7 @@ void SaveSetup(void)
   for (i = 0; i < ARRAY_SIZE(global_setup_tokens); i++)
   {
     // just to make things nicer :)
-    if (global_setup_tokens[i].value == &setup.player_uuid             ||
-       global_setup_tokens[i].value == &setup.multiple_users           ||
+    if (global_setup_tokens[i].value == &setup.multiple_users          ||
        global_setup_tokens[i].value == &setup.sound                    ||
        global_setup_tokens[i].value == &setup.graphics_set             ||
        global_setup_tokens[i].value == &setup.volume_simple            ||