}
+// ============================================================================
+// change name functions
+// ============================================================================
+
+static void RenamePlayerOnServerExt(struct HttpRequest *request,
+ struct HttpResponse *response,
+ char *player_name_raw,
+ char *player_uuid_raw)
+{
+ request->hostname = setup.api_server_hostname;
+ request->port = API_SERVER_PORT;
+ request->method = API_SERVER_METHOD;
+ request->uri = API_SERVER_URI_RENAME;
+
+ char *player_name = getEscapedJSON(player_name_raw);
+ char *player_uuid = getEscapedJSON(player_uuid_raw);
+
+ snprintf(request->body, MAX_HTTP_BODY_SIZE,
+ "{\n"
+ "%s"
+ " \"game_version\": \"%s\",\n"
+ " \"name\": \"%s\",\n"
+ " \"uuid\": \"%s\"\n"
+ "}\n",
+ getPasswordJSON(setup.api_server_password),
+ getProgramRealVersionString(),
+ player_name,
+ player_uuid);
+
+ checked_free(player_name);
+ checked_free(player_uuid);
+
+ ConvertHttpRequestBodyToServerEncoding(request);
+
+ if (!DoHttpRequest(request, response))
+ {
+ Error("HTTP request failed: %s", GetHttpError());
+
+ return;
+ }
+
+ if (!HTTP_SUCCESS(response->status_code))
+ {
+ Error("server failed to handle request: %d %s",
+ response->status_code,
+ response->status_text);
+
+ return;
+ }
+}
+
+static void RenamePlayerOnServer(char *player_name, char *player_uuid)
+{
+ struct HttpRequest *request = checked_calloc(sizeof(struct HttpRequest));
+ struct HttpResponse *response = checked_calloc(sizeof(struct HttpResponse));
+
+ RenamePlayerOnServerExt(request, response, player_name, player_uuid);
+
+ checked_free(request);
+ checked_free(response);
+}
+
+struct RenamePlayerOnServerThreadData
+{
+ char *player_name;
+ char *player_uuid;
+};
+
+static int RenamePlayerOnServerThread(void *data_raw)
+{
+ struct RenamePlayerOnServerThreadData *data = data_raw;
+
+ RenamePlayerOnServer(data->player_name, data->player_uuid);
+
+ checked_free(data->player_name);
+ checked_free(data->player_uuid);
+ checked_free(data);
+
+ return 0;
+}
+
+static void RenamePlayerOnServerAsThread(void)
+{
+ struct RenamePlayerOnServerThreadData *data =
+ checked_malloc(sizeof(struct RenamePlayerOnServerThreadData));
+
+ data->player_name = getStringCopy(setup.player_name);
+ data->player_uuid = getStringCopy(setup.player_uuid);
+
+ ExecuteAsThread(RenamePlayerOnServerThread,
+ "RenamePlayerOnServer", data,
+ "rename player on server");
+}
+
+
// ============================================================================
// type name functions
// ============================================================================
// save setup of edited user
SaveSetup();
+ // change name of edited user on score server
+ RenamePlayerOnServerAsThread();
+
if (game_status == GAME_MODE_PSEUDO_TYPENAMES || reset_setup)
{
if (reset_setup)
if (game_status != GAME_MODE_PLAYING)
return;
- GameActions(); // main game loop
+ GameActions(); // main game loop
if (tape.auto_play && !tape.playing)
- AutoPlayTapes(); // continue automatically playing next tape
+ AutoPlayTapesContinue(); // continue automatically playing next tape
}
}
}
}
+
+static int UploadTapes(void)
+{
+ SetGameStatus(GAME_MODE_LOADING);
+
+ FadeSetEnterScreen();
+ FadeOut(REDRAW_ALL);
+
+ ClearRectangle(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE);
+
+ FadeIn(REDRAW_ALL);
+
+ DrawInitTextHead("Uploading tapes");
+
+ global.autoplay_mode = AUTOPLAY_MODE_UPLOAD;
+ global.autoplay_leveldir = "ALL";
+ global.autoplay_all = TRUE;
+
+ int num_tapes_uploaded = AutoPlayTapes();
+
+ global.autoplay_mode = AUTOPLAY_MODE_NONE;
+ global.autoplay_leveldir = NULL;
+ global.autoplay_all = FALSE;
+
+ SetGameStatus(GAME_MODE_MAIN);
+
+ DrawMainMenu();
+
+ return num_tapes_uploaded;
+}
+
+void CheckUploadTapes(void)
+{
+ 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))
+ {
+ int num_tapes_uploaded = UploadTapes();
+ char message[100];
+
+ sprintf(message, "%d tapes uploaded!", num_tapes_uploaded);
+
+ Request(message, REQ_CONFIRM);
+ }
+ else
+ {
+ Request("You can upload your tapes from the setup menu later!", REQ_CONFIRM);
+ }
+ }
+
+ setup.ask_for_uploading_tapes = FALSE;
+
+ SaveSetup();
+}