SaveLevelSetup_LastSeries();
SaveLevelSetup_SeriesInfo();
+#if defined(PLATFORM_EMSCRIPTEN)
+ Request("Close the browser window to quit!", REQ_CONFIRM);
+#else
if (!setup.ask_on_quit_program ||
Request("Do you really want to quit?", REQ_ASK | REQ_STAY_CLOSED))
SetGameStatus(GAME_MODE_QUIT);
+#endif
}
}
}
// change name functions
// ============================================================================
-static void RenamePlayerOnServerExt(struct HttpRequest *request,
- struct HttpResponse *response,
- char *player_name_raw,
- char *player_uuid_raw)
+struct ApiRenamePlayerThreadData
+{
+ char *player_name;
+ char *player_uuid;
+};
+
+static void *CreateThreadData_ApiRenamePlayer(void)
+{
+ struct ApiRenamePlayerThreadData *data =
+ checked_malloc(sizeof(struct ApiRenamePlayerThreadData));
+
+ data->player_name = getStringCopy(setup.player_name);
+ data->player_uuid = getStringCopy(setup.player_uuid);
+
+ return data;
+}
+
+static void FreeThreadData_ApiRenamePlayer(void *data_raw)
+{
+ struct ApiRenamePlayerThreadData *data = data_raw;
+
+ checked_free(data->player_name);
+ checked_free(data->player_uuid);
+ checked_free(data);
+}
+
+static boolean SetRequest_ApiRenamePlayer(struct HttpRequest *request,
+ void *data_raw)
{
+ struct ApiRenamePlayerThreadData *data = data_raw;
+ char *player_name_raw = data->player_name;
+ char *player_uuid_raw = data->player_uuid;
+
request->hostname = setup.api_server_hostname;
request->port = API_SERVER_PORT;
request->method = API_SERVER_METHOD;
"{\n"
"%s"
" \"game_version\": \"%s\",\n"
+ " \"game_platform\": \"%s\",\n"
" \"name\": \"%s\",\n"
" \"uuid\": \"%s\"\n"
"}\n",
getPasswordJSON(setup.api_server_password),
getProgramRealVersionString(),
+ getProgramPlatformString(),
player_name,
player_uuid);
ConvertHttpRequestBodyToServerEncoding(request);
+ return TRUE;
+}
+
+static void HandleResponse_ApiRenamePlayer(struct HttpResponse *response,
+ void *data_raw)
+{
+ // nothing to do here
+}
+
+#if defined(PLATFORM_EMSCRIPTEN)
+static void Emscripten_ApiRenamePlayer_Loaded(unsigned handle, void *data_raw,
+ void *buffer, unsigned int size)
+{
+ struct HttpResponse *response = GetHttpResponseFromBuffer(buffer, size);
+
+ if (response != NULL)
+ {
+ HandleResponse_ApiRenamePlayer(response, data_raw);
+
+ checked_free(response);
+ }
+ else
+ {
+ Error("server response too large to handle (%d bytes)", size);
+ }
+
+ FreeThreadData_ApiRenamePlayer(data_raw);
+}
+
+static void Emscripten_ApiRenamePlayer_Failed(unsigned handle, void *data_raw,
+ int code, const char *status)
+{
+ Error("server failed to handle request: %d %s", code, status);
+
+ FreeThreadData_ApiRenamePlayer(data_raw);
+}
+
+static void Emscripten_ApiRenamePlayer_Progress(unsigned handle, void *data_raw,
+ int bytes, int size)
+{
+ // nothing to do here
+}
+
+static void Emscripten_ApiRenamePlayer_HttpRequest(struct HttpRequest *request,
+ void *data_raw)
+{
+ if (!SetRequest_ApiRenamePlayer(request, data_raw))
+ {
+ FreeThreadData_ApiRenamePlayer(data_raw);
+
+ return;
+ }
+
+ emscripten_async_wget2_data(request->uri,
+ request->method,
+ request->body,
+ data_raw,
+ TRUE,
+ Emscripten_ApiRenamePlayer_Loaded,
+ Emscripten_ApiRenamePlayer_Failed,
+ Emscripten_ApiRenamePlayer_Progress);
+}
+
+#else
+
+static void ApiRenamePlayer_HttpRequestExt(struct HttpRequest *request,
+ struct HttpResponse *response,
+ void *data_raw)
+{
+ if (!SetRequest_ApiRenamePlayer(request, data_raw))
+ return;
+
if (!DoHttpRequest(request, response))
{
Error("HTTP request failed: %s", GetHttpError());
return;
}
+
+ HandleResponse_ApiRenamePlayer(response, data_raw);
}
-static void RenamePlayerOnServer(char *player_name, char *player_uuid)
+static void ApiRenamePlayer_HttpRequest(struct HttpRequest *request,
+ struct HttpResponse *response,
+ void *data_raw)
{
- struct HttpRequest *request = checked_calloc(sizeof(struct HttpRequest));
- struct HttpResponse *response = checked_calloc(sizeof(struct HttpResponse));
-
- RenamePlayerOnServerExt(request, response, player_name, player_uuid);
+ ApiRenamePlayer_HttpRequestExt(request, response, data_raw);
- checked_free(request);
- checked_free(response);
+ FreeThreadData_ApiRenamePlayer(data_raw);
}
+#endif
-struct RenamePlayerOnServerThreadData
-{
- char *player_name;
- char *player_uuid;
-};
-
-static int RenamePlayerOnServerThread(void *data_raw)
+static int ApiRenamePlayerThread(void *data_raw)
{
- struct RenamePlayerOnServerThreadData *data = data_raw;
+ struct HttpRequest *request = checked_calloc(sizeof(struct HttpRequest));
+ struct HttpResponse *response = checked_calloc(sizeof(struct HttpResponse));
- RenamePlayerOnServer(data->player_name, data->player_uuid);
+#if defined(PLATFORM_EMSCRIPTEN)
+ Emscripten_ApiRenamePlayer_HttpRequest(request, data_raw);
+#else
+ ApiRenamePlayer_HttpRequest(request, response, data_raw);
+#endif
- checked_free(data->player_name);
- checked_free(data->player_uuid);
- checked_free(data);
+ checked_free(request);
+ checked_free(response);
return 0;
}
-static void RenamePlayerOnServerAsThread(void)
+static void ApiRenamePlayerAsThread(void)
{
- struct RenamePlayerOnServerThreadData *data =
- checked_malloc(sizeof(struct RenamePlayerOnServerThreadData));
+ struct ApiRenamePlayerThreadData *data = CreateThreadData_ApiRenamePlayer();
- data->player_name = getStringCopy(setup.player_name);
- data->player_uuid = getStringCopy(setup.player_uuid);
-
- ExecuteAsThread(RenamePlayerOnServerThread,
- "RenamePlayerOnServer", data,
+ ExecuteAsThread(ApiRenamePlayerThread,
+ "ApiRenamePlayer", data,
"rename player on server");
}
if (!create_user ||
!Request("Use current setup values for the new player?", REQ_ASK))
LoadSetup();
+ else
+ setup.player_uuid = getStringCopy(getUUID());
}
char *setup_filename = getSetupFilename();
SaveSetup();
// change name of edited user on score server
- RenamePlayerOnServerAsThread();
+ ApiRenamePlayerAsThread();
if (game_status == GAME_MODE_PSEUDO_TYPENAMES || reset_setup)
{