Catch level parse errors in the bulk test dialog

This commit is contained in:
Eevee (Evelyn Woods) 2020-12-15 00:55:40 -07:00
parent 07c9a83f75
commit 0f02e270f2

View File

@ -2133,16 +2133,16 @@ class PackTestDialog extends DialogOverlay {
let t0 = performance.now(); let t0 = performance.now();
let last_pause = t0; let last_pause = t0;
for (let i = 0; i < num_levels; i++) { for (let i = 0; i < num_levels; i++) {
let stored_level = pack.load_level(i); let stored_level, level;
let status_li = this.results_summary.childNodes[i]; let status_li = this.results_summary.childNodes[i];
let record_result = (token, title, comment, include_canvas) => { let record_result = (token, title, comment, include_canvas) => {
status_li.setAttribute('data-status', token); status_li.setAttribute('data-status', token);
status_li.setAttribute('title', title); status_li.setAttribute('title', title);
let li = mk( let li = mk(
'li', {'data-status': token, 'data-index': i}, 'li', {'data-status': token, 'data-index': i},
`#${i + 1} ${stored_level.title}: `, `#${i + 1} ${stored_level ? stored_level.title : "???"}: `,
comment); comment);
if (include_canvas) { if (include_canvas && level) {
let canvas = mk('canvas', { let canvas = mk('canvas', {
width: this.renderer.canvas.width, width: this.renderer.canvas.width,
height: this.renderer.canvas.height, height: this.renderer.canvas.height,
@ -2154,8 +2154,13 @@ class PackTestDialog extends DialogOverlay {
} }
this.results.append(li); this.results.append(li);
if (level) {
total_tics += level.tic_counter; total_tics += level.tic_counter;
}
}; };
try {
stored_level = pack.load_level(i);
if (! stored_level.has_replay) { if (! stored_level.has_replay) {
record_result('no-replay', "N/A", "No replay available"); record_result('no-replay', "N/A", "No replay available");
continue; continue;
@ -2165,12 +2170,11 @@ class PackTestDialog extends DialogOverlay {
// TODO compat options here?? // TODO compat options here??
let replay = stored_level.replay; let replay = stored_level.replay;
let level = new Level(stored_level, {}); level = new Level(stored_level, {});
level.sfx = dummy_sfx; level.sfx = dummy_sfx;
level.force_floor_direction = replay.initial_force_floor_direction; level.force_floor_direction = replay.initial_force_floor_direction;
level._blob_modifier = replay.blob_seed; level._blob_modifier = replay.blob_seed;
try {
while (true) { while (true) {
let input = replay.get(level.tic_counter); let input = replay.get(level.tic_counter);
level.advance_tic(input); level.advance_tic(input);