X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.c;h=1aeeb25357d4055be8f062ab220bbfeaf80a3eeb;hb=4367e9865c06b77f4fffb484c87647eecc3c2eb5;hp=c1e4bcea9f05cb67f8035a0af5cd0336c014cd6b;hpb=f5b65dacd63ac8767720f317ed227291a286e306;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index c1e4bcea..1aeeb253 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); @@ -1476,6 +1495,11 @@ void AutoPlayTapes(void) return; } + char *autoplay_status = (num_levels_played == num_levels_solved && + num_levels_played > 0 ? " OK " : "WARN"); + int autoplay_percent = (num_levels_played ? + num_levels_solved * 100 / num_levels_played : 0); + Print("\n"); PrintLine("=", 79); Print("Number of levels played: %d\n", num_levels_played); @@ -1486,9 +1510,11 @@ 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"), - autoplay_leveldir->identifier, num_levels_solved, num_levels_played, - (num_levels_played ? num_levels_solved * 100 / num_levels_played : 0)); + autoplay_status, + autoplay_leveldir->identifier, + num_levels_solved, + num_levels_played, + autoplay_percent); if (num_levels_played != num_levels_solved) {