X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.c;h=68eeaccf0cd1267159d239005ce76870d7b1e6a6;hb=08064fe872e3dd46ce0850b82fc535944f9bd0c2;hp=ef7e8a5ab942f1c457c41a9b3328c57b818efaa4;hpb=e11fa67d03ba1bfb469767ccdcc5ceae10f405f2;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index ef7e8a5a..68eeaccf 100644 --- a/src/tape.c +++ b/src/tape.c @@ -1464,7 +1464,9 @@ static int AutoPlayTapesExt(boolean initialize) -1 }; + LevelDirTree *leveldir_current_last = leveldir_current; boolean init_level_set = FALSE; + int level_nr_last = level_nr; int i; if (!initialize) @@ -1694,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(); @@ -1736,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; } @@ -1850,12 +1853,25 @@ static int AutoPlayTapesExt(boolean initialize) return num_tapes; } + if (global.autoplay_mode == AUTOPLAY_MODE_UPLOAD) + { + Print("\n"); + PrintLine("=", 79); + Print("SUMMARY: %d tapes uploaded.\n", num_tapes); + PrintLine("=", 79); + } + // 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 and number + leveldir_current = leveldir_current_last; + level_nr = level_nr_last; + return num_tapes; }