From f6fa4ca32d4c2c503846367eb5c435cd8d2961b5 Mon Sep 17 00:00:00 2001 From: Jesse McDonald Date: Fri, 24 Apr 2020 23:36:02 -0500 Subject: [PATCH] keep earlier moves when unable to replay full game state --- js/pacosako_ui.js | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/js/pacosako_ui.js b/js/pacosako_ui.js index 58558c6..b972b48 100644 --- a/js/pacosako_ui.js +++ b/js/pacosako_ui.js @@ -559,24 +559,33 @@ $(function (){ debug('got board', moves); const newGame = new PS.Game(); - for (const move of moves.past) { - newGame.replayMove(move); + + try { + for (const move of moves.past) { + newGame.replayMove(move); + } + + let n = 0; + + try { + for (const move of moves.future.slice().reverse()) { + newGame.replayMove(move); + n += 1; + } + } catch (err) { + debug('Error replaying board redo state', err); + } + + for (let i = 0; i < n; ++i) { + newGame.undo(); + } + } catch (err) { + debug('Error replaying board state', err); } - let n = 0; - - for (const move of moves.future.slice().reverse()) { - newGame.replayMove(move); - n += 1; - } - - for (let i = 0; i < n; ++i) { - newGame.undo(); - } - - setCurrentGame(newGame, moves.past.length > currentGame.moves.length); + setCurrentGame(newGame, newGame.moves.length > currentGame.moves.length); } catch (err) { - debug('Error replaying board state', err); + debug('Error parsing board data', err); } } });