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)
}
// 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;
}
}
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);
}
}
"}\n",
levelset.identifier, nr, level.rate_time_over_score);
+ ConvertHttpRequestBodyToServerEncoding(request);
+
if (!DoHttpRequest(request, response))
{
Error("HTTP request failed: %s", GetHttpError());
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"
" \"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,
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))