X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.c;h=68eeaccf0cd1267159d239005ce76870d7b1e6a6;hb=08064fe872e3dd46ce0850b82fc535944f9bd0c2;hp=4c7dec9874b4822a349a7cc2bd72829cd4b23f82;hpb=c46e2387a49ace5f9208bb3fcf3d6245868146b0;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index 4c7dec98..68eeaccf 100644 --- a/src/tape.c +++ b/src/tape.c @@ -1466,6 +1466,7 @@ static int AutoPlayTapesExt(boolean initialize) }; LevelDirTree *leveldir_current_last = leveldir_current; boolean init_level_set = FALSE; + int level_nr_last = level_nr; int i; if (!initialize) @@ -1695,17 +1696,18 @@ static int AutoPlayTapesExt(boolean initialize) if (!global.autoplay_all && !global.autoplay_level[level_nr]) continue; - if (global.autoplay_mode == AUTOPLAY_MODE_UPLOAD) + char *tape_filename = (autoplay.tape_filename ? autoplay.tape_filename : + options.mytapes ? getTapeFilename(level_nr) : + getSolutionTapeFilename(level_nr)); + + // speed things up in case of missing tapes (by skipping loading level) + if (!fileExists(tape_filename)) { - // speed things up when uploading all existing private tapes - if (autoplay.all_levelsets && !fileExists(getTapeFilename(level_nr))) - { - autoplay.num_tape_missing++; + autoplay.num_tape_missing++; - Print("Tape %03d: (no tape found)\n", level_nr); + Print("Tape %03d: (no tape found)\n", level_nr); - continue; - } + continue; } TapeErase(); @@ -1737,7 +1739,7 @@ static int AutoPlayTapesExt(boolean initialize) { autoplay.num_tape_missing++; - Print("Tape %03d: (no tape found)\n", level_nr); + Print("Tape %03d: (invalid tape)\n", level_nr); continue; } @@ -1862,11 +1864,13 @@ static int AutoPlayTapesExt(boolean initialize) // clear timestamp for batch tape upload (required after interactive upload) global.autoplay_time = 0; - if (program.headless) + // exit if running headless or if visually auto-playing tapes + if (program.headless || global.autoplay_mode != AUTOPLAY_MODE_UPLOAD) CloseAllAndExit(0); - // when running interactively, restore last selected level set + // when running interactively, restore last selected level set and number leveldir_current = leveldir_current_last; + level_nr = level_nr_last; return num_tapes; }