X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.c;h=21a5945bc92b0519016e7029547ca96f8d5187d2;hb=329e47f3131d6d3cad97adff27db207c906f5f20;hp=aa2f84a572e174a65a51d768d95481996a7da13a;hpb=45edbd7477e4684132ff96fa737336539ecc6f4c;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index aa2f84a5..21a5945b 100644 --- a/src/tape.c +++ b/src/tape.c @@ -828,14 +828,14 @@ void TapeTogglePause(boolean toggle_mode) if (game_status == GAME_MODE_PLAYING) { - if (setup.show_snapshot_buttons && + if (setup.show_load_save_buttons && setup.show_undo_redo_buttons && CheckEngineSnapshotList()) { if (tape.pausing) MapUndoRedoButtons(); else if (!tape.single_step) - UnmapUndoRedoButtons(); + MapLoadSaveButtons(); } ModifyPauseButtons(); @@ -1445,6 +1445,14 @@ void AutoPlayTapes(void) } else { + if ((global.autoplay_mode == AUTOPLAY_MODE_SAVE || + global.autoplay_mode == AUTOPLAY_MODE_UPLOAD) && + !options.mytapes && + options.player_name == NULL) + { + Fail("specify player name when uploading solution tapes"); + } + DrawCompleteVideoDisplay(); audio.sound_enabled = FALSE; @@ -1621,18 +1629,35 @@ void AutoPlayTapes(void) if (global.autoplay_mode == AUTOPLAY_MODE_UPLOAD) { + boolean use_temporary_tape_file = FALSE; + Print("Tape %03d:\n", level_nr); AutoPlayTapes_SetScoreEntry(0, 0); if (tape_filename == NULL) + { tape_filename = (options.mytapes ? getTapeFilename(level_nr) : - getSolutionTapeFilename(level_nr)); + getDefaultSolutionTapeFilename(level_nr)); + + if (!fileExists(tape_filename)) + { + // non-standard solution tape -- save to temporary file + tape_filename = getTemporaryTapeFilename(); + + SaveTapeToFilename(tape_filename); + + use_temporary_tape_file = TRUE; + } + } SaveServerScoreFromFile(level_nr, tape_filename); AutoPlayTapes_WaitForUpload(); + if (use_temporary_tape_file) + unlink(tape_filename); + // required for uploading multiple tapes tape_filename = NULL;