-1
};
+ LevelDirTree *leveldir_current_last = leveldir_current;
boolean init_level_set = FALSE;
+ int level_nr_last = level_nr;
int i;
if (!initialize)
{
autoplay.tape_filename = global.autoplay_leveldir;
+ if (!fileExists(autoplay.tape_filename))
+ Fail("tape file '%s' does not exist", autoplay.tape_filename);
+
LoadTapeFromFilename(autoplay.tape_filename);
if (tape.no_valid_file)
- {
- if (!fileExists(autoplay.tape_filename))
- Fail("tape file '%s' does not exist", autoplay.tape_filename);
- else
- Fail("cannot load tape file '%s'", autoplay.tape_filename);
- }
+ Fail("cannot load tape file '%s'", autoplay.tape_filename);
- if (tape.no_info_chunk)
+ if (tape.no_info_chunk && !options.identifier)
Fail("cannot get levelset from tape file '%s'", autoplay.tape_filename);
+ if (tape.no_info_chunk && !options.level_nr)
+ Fail("cannot get level nr from tape file '%s'", autoplay.tape_filename);
+
global.autoplay_leveldir = tape.level_identifier;
+ if (options.identifier != NULL)
+ global.autoplay_leveldir = options.identifier;
+
+ if (options.level_nr != NULL)
+ tape.level_nr = atoi(options.level_nr);
+
if (tape.level_nr >= 0 && tape.level_nr < MAX_TAPES_PER_SET)
global.autoplay_level[tape.level_nr] = TRUE;
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))
+ {
+ autoplay.num_tape_missing++;
+
+ Print("Tape %03d: (no tape found)\n", level_nr);
+
+ continue;
+ }
+
TapeErase();
TapeRewind(); // needed to reset "tape.auto_play_level_solved"
{
autoplay.num_tape_missing++;
- Print("Tape %03d: (no tape found)\n", level_nr);
+ Print("Tape %03d: (invalid tape)\n", level_nr);
continue;
}
autoplay.tape_filename = (options.mytapes ? getTapeFilename(level_nr) :
getDefaultSolutionTapeFilename(level_nr));
- boolean correct_info_chunk =
- (strEqual(leveldir_current->identifier, tape.level_identifier) &&
- level_nr == tape.level_nr);
-
- if (!correct_info_chunk)
- {
- strncpy(tape.level_identifier, leveldir_current->identifier,
- MAX_FILENAME_LEN);
- tape.level_identifier[MAX_FILENAME_LEN] = '\0';
- tape.level_nr = level_nr;
- }
-
- if (!fileExists(autoplay.tape_filename) || !correct_info_chunk)
+ if (!fileExists(autoplay.tape_filename))
{
// non-standard or incorrect solution tape -- save to temporary file
autoplay.tape_filename = getTemporaryTapeFilename();
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;
}