X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=1200be3a81e2c70477d0d031efb0e7998924f8ba;hb=45edbd7477e4684132ff96fa737336539ecc6f4c;hp=de9c7e37028ee6d75511011d18c1baf1d7326ab8;hpb=cf07764d802b7eafa64da36558e086515577a9f9;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index de9c7e37..1200be3a 100644 --- a/src/files.c +++ b/src/files.c @@ -8447,11 +8447,34 @@ void DumpTape(struct TapeInfo *tape) } PrintLine("-", 79); + Print("Tape of Level %03d (file version %08d, game version %08d)\n", tape->level_nr, tape->file_version, tape->game_version); Print(" (effective engine version %08d)\n", tape->engine_version); Print("Level series identifier: '%s'\n", tape->level_identifier); + + Print("Special tape properties: "); + if (tape->property_bits == TAPE_PROPERTY_NONE) + Print("[none]"); + if (tape->property_bits & TAPE_PROPERTY_EM_RANDOM_BUG) + Print("[em_random_bug]"); + if (tape->property_bits & TAPE_PROPERTY_GAME_SPEED) + Print("[game_speed]"); + if (tape->property_bits & TAPE_PROPERTY_PAUSE_MODE) + Print("[pause]"); + if (tape->property_bits & TAPE_PROPERTY_SINGLE_STEP) + Print("[single_step]"); + if (tape->property_bits & TAPE_PROPERTY_SNAPSHOT) + Print("[snapshot]"); + if (tape->property_bits & TAPE_PROPERTY_REPLAYED) + Print("[replayed]"); + if (tape->property_bits & TAPE_PROPERTY_TAS_KEYS) + Print("[tas_keys]"); + if (tape->property_bits & TAPE_PROPERTY_SMALL_GRAPHICS) + Print("[small_graphics]"); + + Print("\n"); PrintLine("-", 79); tape_frame_counter = 0; @@ -8537,6 +8560,7 @@ static void setScoreInfoToDefaultsExt(struct ScoreInfo *scores) scores->last_added_local = -1; scores->updated = FALSE; + scores->uploaded = FALSE; scores->force_last_added = FALSE; } @@ -9380,6 +9404,8 @@ static void UploadScoreToServerExt(struct HttpRequest *request, return; } + + server_scores.uploaded = TRUE; } static void UploadScoreToServer(int level_nr, char *score_tape_filename, @@ -9416,12 +9442,14 @@ static int UploadScoreToServerThread(void *data_raw) return 0; } -static void UploadScoreToServerAsThread(int nr) +static void UploadScoreToServerAsThread(int nr, char *score_tape_filename) { struct UploadScoreToServerThreadData *data = checked_malloc(sizeof(struct UploadScoreToServerThreadData)); struct ScoreEntry *score_entry = &scores.entry[scores.last_added]; - char *score_tape_filename = getScoreTapeFilename(score_entry->tape_basename, nr); + + if (score_tape_filename == NULL) + score_tape_filename = getScoreTapeFilename(score_entry->tape_basename, nr); data->level_nr = nr; data->score_entry = *score_entry; @@ -9437,7 +9465,15 @@ void SaveServerScore(int nr) if (!runtime.api_server) return; - UploadScoreToServerAsThread(nr); + UploadScoreToServerAsThread(nr, NULL); +} + +void SaveServerScoreFromFile(int nr, char *score_tape_filename) +{ + if (!runtime.api_server) + return; + + UploadScoreToServerAsThread(nr, score_tape_filename); } void LoadLocalAndServerScore(int nr, boolean download_score) @@ -9645,6 +9681,10 @@ static struct TokenInfo global_setup_tokens[] = TYPE_SWITCH, &setup.show_snapshot_buttons, "show_snapshot_buttons" }, + { + TYPE_SWITCH, + &setup.show_undo_redo_buttons, "show_undo_redo_buttons" + }, { TYPE_SWITCH, &setup.only_show_local_scores, "only_show_local_scores" @@ -10325,6 +10365,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->sp_show_border_elements = FALSE; si->small_game_graphics = FALSE; si->show_snapshot_buttons = FALSE; + si->show_undo_redo_buttons = FALSE; si->only_show_local_scores = FALSE; si->graphics_set = getStringCopy(GFX_CLASSIC_SUBDIR);