fixed speedup for missing tapes when auto-playing/testing/uploading
authorHolger Schemel <info@artsoft.org>
Mon, 1 Nov 2021 09:08:21 +0000 (10:08 +0100)
committerHolger Schemel <info@artsoft.org>
Mon, 1 Nov 2021 09:18:46 +0000 (10:18 +0100)
The tape check to speed up automatic tape playing/testing/uploading
for missing tapes (by skipping loading the level) was buggy, because
non-standard solution tapes (like Supaplex tapes that are part of the
level file) were also wrongly detected as "missing" (and therefore
skipped).

This problem was fixed by only checking for missing private tapes, but
not doing the check if handling solution tapes or explicitly specified
tape files.

This fixes commits e11fa67d and b4d5ee2c.

src/tape.c

index 793bf0cec0145eb04ddaea56a01f898092558626..03ecf68944bc6cec9726be31cd6e6ff808d70b49 100644 (file)
@@ -1612,6 +1612,7 @@ static int AutoPlayTapesExt(boolean initialize)
         global.autoplay_level[tape.level_nr] = TRUE;
 
       global.autoplay_all = FALSE;
+      options.mytapes = FALSE;
     }
 
     if (autoplay.all_levelsets)
@@ -1701,12 +1702,8 @@ static int AutoPlayTapesExt(boolean initialize)
     if (!global.autoplay_all && !global.autoplay_level[level_nr])
       continue;
 
-    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 in case of missing private tapes (skip loading level)
+    if (options.mytapes && !fileExists(getTapeFilename(level_nr)))
     {
       autoplay.num_tape_missing++;
 
@@ -1744,7 +1741,7 @@ static int AutoPlayTapesExt(boolean initialize)
     {
       autoplay.num_tape_missing++;
 
-      Print("Tape %03d: (invalid tape)\n", level_nr);
+      Print("Tape %03d: (no tape found)\n", level_nr);
 
       continue;
     }