+static void PrintTapeReplaySummary(struct AutoPlayInfo *autoplay)
+{
+ char *autoplay_status =
+ (autoplay->num_levels_played == autoplay->num_levels_solved &&
+ autoplay->num_levels_played > 0 ? " OK " : "WARN");
+ int autoplay_percent =
+ (autoplay->num_levels_played ?
+ autoplay->num_levels_solved * 100 / autoplay->num_levels_played : 0);
+ int i;
+
+ Print("\n");
+ PrintLine("=", 79);
+ Print("Number of levels played: %d\n", autoplay->num_levels_played);
+ Print("Number of levels solved: %d (%d%%)\n", autoplay->num_levels_solved,
+ (autoplay->num_levels_played ?
+ autoplay->num_levels_solved * 100 / autoplay->num_levels_played : 0));
+ if (global.autoplay_mode == AUTOPLAY_MODE_FIX)
+ Print("Number of tapes fixed: %d\n", autoplay->num_tapes_patched);
+ PrintLine("-", 79);
+ Print("Summary (for automatic parsing by scripts):\n");
+
+ if (autoplay->tape_filename)
+ {
+ Print("TAPEFILE [%s] '%s', %d, %d, %d",
+ autoplay_status,
+ autoplay->leveldir->identifier,
+ autoplay->last_level_nr,
+ game.score_final,
+ game.score_time_final);
+ }
+ else
+ {
+ Print("LEVELDIR [%s] '%s', SOLVED %d/%d (%d%%)",
+ autoplay_status,
+ autoplay->leveldir->identifier,
+ autoplay->num_levels_solved,
+ autoplay->num_levels_played,
+ autoplay_percent);
+
+ if (autoplay->num_levels_played != autoplay->num_levels_solved)
+ {
+ Print(", FAILED:");
+ for (i = 0; i < MAX_TAPES_PER_SET; i++)
+ if (autoplay->level_failed[i])
+ Print(" %03d", i);
+ }
+ }
+
+ Print("\n");
+ PrintLine("=", 79);
+}
+