X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=4f1222ce988defa4dd2279d2cb1dae8007ab179b;hb=dfc53eab271f2b9d9cd04c32e9356c77bd68472f;hp=bddb4530af4942b6c179125e1e5abbe27339a2c7;hpb=003268b82cd1ced8486f2ada0849170ea4c3bba3;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index bddb4530..4f1222ce 100644 --- a/src/files.c +++ b/src/files.c @@ -5895,6 +5895,21 @@ int getMappedElement_SB(int element_ascii, boolean use_ces) return EL_UNDEFINED; } +static void SetLevelSettings_SB(struct LevelInfo *level) +{ + // time settings + level->time = 0; + level->use_step_counter = TRUE; + + // score settings + level->score[SC_TIME_BONUS] = 0; + level->time_score_base = 1; + level->rate_time_over_score = TRUE; + + // game settings + level->auto_exit_sokoban = TRUE; +} + static void LoadLevelFromFileInfo_SB(struct LevelInfo *level, struct LevelFileInfo *level_file_info, boolean level_info_only) @@ -6128,19 +6143,11 @@ static void LoadLevelFromFileInfo_SB(struct LevelInfo *level, } // set special level settings for Sokoban levels - - level->time = 0; - level->use_step_counter = TRUE; - level->auto_exit_sokoban = TRUE; - - level->score[SC_TIME_BONUS] = 0; - level->time_score_base = 1; - level->rate_time_over_score = TRUE; + SetLevelSettings_SB(level); if (load_xsb_to_ces) { // special global settings can now be set in level template - level->use_custom_template = TRUE; } } @@ -6493,13 +6500,7 @@ static void LoadLevel_InitSettings_SB(struct LevelInfo *level) if (is_sokoban_level) { // set special level settings for Sokoban levels - level->time = 0; - level->use_step_counter = TRUE; - level->auto_exit_sokoban = TRUE; - - level->score[SC_TIME_BONUS] = 0; - level->time_score_base = 1; - level->rate_time_over_score = TRUE; + SetLevelSettings_SB(level); } } @@ -9036,6 +9037,8 @@ static void DownloadServerScoreToCacheExt(struct HttpRequest *request, "}\n", levelset.identifier, nr, level.rate_time_over_score); + ConvertHttpRequestBodyToServerEncoding(request); + if (!DoHttpRequest(request, response)) { Error("HTTP request failed: %s", GetHttpError()); @@ -9202,7 +9205,7 @@ static char *get_file_base64(char *filename) if (stat(filename, &file_status) != 0) { - Error("cannot stat file '%s'\n", filename); + Error("cannot stat file '%s'", filename); return NULL; } @@ -9214,7 +9217,7 @@ static char *get_file_base64(char *filename) if (!(file = fopen(filename, MODE_READ))) { - Error("cannot open file '%s'\n", filename); + Error("cannot open file '%s'", filename); checked_free(buffer); @@ -9227,7 +9230,7 @@ static char *get_file_base64(char *filename) if (c == EOF) { - Error("cannot read from input file '%s'\n", filename); + Error("cannot read from input file '%s'", filename); fclose(file); checked_free(buffer); @@ -9271,6 +9274,11 @@ static void UploadScoreToServerExt(struct HttpRequest *request, return; } + char *levelset_identifier = getEscapedJSON(leveldir_current->identifier); + char *levelset_name = getEscapedJSON(leveldir_current->name); + char *levelset_author = getEscapedJSON(leveldir_current->author); + char *player_name = getEscapedJSON(score_entry->name); + snprintf(request->body, MAX_HTTP_BODY_SIZE, "{\n" " \"game_version\": \"%s\",\n" @@ -9287,13 +9295,13 @@ static void UploadScoreToServerExt(struct HttpRequest *request, " \"tape\": \"%s\"\n" "}\n", getProgramRealVersionString(), - leveldir_current->identifier, - leveldir_current->name, - leveldir_current->author, + levelset_identifier, + levelset_name, + levelset_author, leveldir_current->levels, leveldir_current->first_level, level_nr, - score_entry->name, + player_name, score_entry->score, score_entry->time, score_entry->tape_basename, @@ -9301,6 +9309,11 @@ static void UploadScoreToServerExt(struct HttpRequest *request, checked_free(tape_base64); + checked_free(levelset_identifier); + checked_free(levelset_name); + checked_free(levelset_author); + checked_free(player_name); + ConvertHttpRequestBodyToServerEncoding(request); if (!DoHttpRequest(request, response))