X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=9c370e72497b5b1ff2657cd9c837fbf4ffa66ba3;hb=8ca1cd4ae397da6b91d425aac0b3a40d302b66c2;hp=1200be3a81e2c70477d0d031efb0e7998924f8ba;hpb=45edbd7477e4684132ff96fa737336539ecc6f4c;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 1200be3a..9c370e72 100644 --- a/src/files.c +++ b/src/files.c @@ -3160,7 +3160,7 @@ static int LoadLevel_MicroChunk(File *file, struct LevelFileConfigInfo *conf, value = getMappedElement(value); if (data_type == TYPE_BOOLEAN) - *(boolean *)(conf[i].value) = value; + *(boolean *)(conf[i].value) = (value ? TRUE : FALSE); else *(int *) (conf[i].value) = value; @@ -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; @@ -9341,6 +9341,7 @@ static void UploadScoreToServerExt(struct HttpRequest *request, 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); snprintf(request->body, MAX_HTTP_BODY_SIZE, "{\n" @@ -9356,6 +9357,7 @@ static void UploadScoreToServerExt(struct HttpRequest *request, " \"level_author\": \"%s\",\n" " \"rate_time_over_score\": \"%d\",\n" " \"player_name\": \"%s\",\n" + " \"player_uuid\": \"%s\",\n" " \"score\": \"%d\",\n" " \"time\": \"%d\",\n" " \"tape_basename\": \"%s\",\n" @@ -9373,6 +9375,7 @@ static void UploadScoreToServerExt(struct HttpRequest *request, level_author, level.rate_time_over_score, player_name, + player_uuid, score_entry->score, score_entry->time, score_entry->tape_basename, @@ -9386,6 +9389,7 @@ static void UploadScoreToServerExt(struct HttpRequest *request, checked_free(level_name); checked_free(level_author); checked_free(player_name); + checked_free(player_uuid); ConvertHttpRequestBodyToServerEncoding(request); @@ -9509,6 +9513,10 @@ static struct TokenInfo global_setup_tokens[] = TYPE_STRING, &setup.player_name, "player_name" }, + { + TYPE_STRING, + &setup.player_uuid, "player_uuid" + }, { TYPE_SWITCH, &setup.multiple_users, "multiple_users" @@ -9679,7 +9687,7 @@ static struct TokenInfo global_setup_tokens[] = }, { TYPE_SWITCH, - &setup.show_snapshot_buttons, "show_snapshot_buttons" + &setup.show_load_save_buttons, "show_load_save_buttons" }, { TYPE_SWITCH, @@ -10320,6 +10328,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->multiple_users = TRUE; @@ -10364,7 +10373,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->game_frame_delay = GAME_FRAME_DELAY; si->sp_show_border_elements = FALSE; si->small_game_graphics = FALSE; - si->show_snapshot_buttons = FALSE; + si->show_load_save_buttons = FALSE; si->show_undo_redo_buttons = FALSE; si->only_show_local_scores = FALSE; @@ -10866,6 +10875,14 @@ static void LoadSetup_SpecialPostProcessing(void) // make sure that scroll delay value stays inside valid range setup.scroll_delay_value = MIN(MAX(MIN_SCROLL_DELAY, setup.scroll_delay_value), MAX_SCROLL_DELAY); + + if (setup.player_uuid == NULL) + { + // player UUID does not yet exist in setup file + setup.player_uuid = getStringCopy(getUUID()); + + SaveSetup(); + } } void LoadSetup(void) @@ -13188,6 +13205,11 @@ void ConvertLevels(void) Print("converting level ... "); +#if 0 + // special case: conversion of some EMC levels as requested by ACME + level.game_engine_type = GAME_ENGINE_TYPE_RND; +#endif + level_filename = getDefaultLevelFilename(level_nr); new_level = !fileExists(level_filename);