X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.c;h=6f424b12c161235976b20925b939794abdca9039;hb=fd952c79ba4afd593be9700c6d55ec4b707e2d70;hp=c1e4bcea9f05cb67f8035a0af5cd0336c014cd6b;hpb=f5b65dacd63ac8767720f317ed227291a286e306;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index c1e4bcea..6f424b12 100644 --- a/src/tape.c +++ b/src/tape.c @@ -540,6 +540,8 @@ void TapeErase(void) tape.length_frames = 0; tape.length_seconds = 0; + tape.score_tape_basename[0] = '\0'; + if (leveldir_current) { strncpy(tape.level_identifier, leveldir_current->identifier, @@ -1233,6 +1235,7 @@ void AutoPlayTapes(void) static int num_tapes_patched = 0; static int num_tape_missing = 0; static boolean level_failed[MAX_TAPES_PER_SET]; + static char *tape_filename = NULL; static int patch_nr = 0; static char *patch_name[] = { @@ -1325,6 +1328,20 @@ void AutoPlayTapes(void) audio.sound_enabled = FALSE; setup.engine_snapshot_mode = getStringCopy(STR_SNAPSHOT_MODE_OFF); + if (strSuffix(global.autoplay_leveldir, ".tape")) + { + tape_filename = global.autoplay_leveldir; + + LoadTapeFromFilename(tape_filename); + + global.autoplay_leveldir = tape.level_identifier; + + if (tape.level_nr >= 0 && tape.level_nr < MAX_TAPES_PER_SET) + global.autoplay_level[tape.level_nr] = TRUE; + + global.autoplay_all = FALSE; + } + autoplay_leveldir = getTreeInfoFromIdentifier(leveldir_first, global.autoplay_leveldir); @@ -1397,7 +1414,9 @@ void AutoPlayTapes(void) continue; #endif - if (options.mytapes) + if (tape_filename) + LoadTapeFromFilename(tape_filename); + else if (options.mytapes) LoadTape(level_nr); else LoadSolutionTape(level_nr); @@ -1486,7 +1505,8 @@ void AutoPlayTapes(void) PrintLine("-", 79); Print("Summary (for automatic parsing by scripts):\n"); Print("LEVELDIR [%s] '%s', SOLVED %d/%d (%d%%)", - (num_levels_played == num_levels_solved ? " OK " : "WARN"), + (num_levels_played == num_levels_solved && + num_levels_played > 0 ? " OK " : "WARN"), autoplay_leveldir->identifier, num_levels_solved, num_levels_played, (num_levels_played ? num_levels_solved * 100 / num_levels_played : 0));