X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=23e0b113c01b0bc4f52424330a6dad50889ba5f5;hb=b51083a87e5e21658e3a97e2e6d02f15622bf896;hp=a63aa3339f8d3ec1d70c7d3cd2cab0b0f5432d9d;hpb=b1e5dbd359426dae2beaed44b1b6cc3c2b4b2d02;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index a63aa333..23e0b113 100644 --- a/src/screens.c +++ b/src/screens.c @@ -4035,6 +4035,101 @@ void HandleInfoScreen(int mx, int my, int dx, int dy, int button) } +// ============================================================================ +// 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 // ============================================================================ @@ -4172,6 +4267,9 @@ static void setTypeNameValues(char *name, struct TextPosInfo *pos, // 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) @@ -6794,7 +6892,8 @@ static struct TokenInfo setup_info_game[] = #endif { TYPE_ENTER_LIST, execSetupChooseSnapshotMode,"Game Engine Snapshot Mode:" }, { TYPE_STRING, &snapshot_mode_text, "" }, - { TYPE_SWITCH, &setup.show_snapshot_buttons,"Show Snapshot Buttons:" }, + { TYPE_SWITCH, &setup.show_load_save_buttons,"Show Load/Save Buttons:" }, + { TYPE_SWITCH, &setup.show_undo_redo_buttons,"Show Undo/Redo Buttons:" }, { TYPE_EMPTY, NULL, "" }, { TYPE_LEAVE_MENU, execSetupMain, "Back" },