From a675d8de0abea235d35a953f9e1b6d384d57b664 Mon Sep 17 00:00:00 2001 From: Peter Osterlund Date: Fri, 1 Jan 2016 23:48:15 +0100 Subject: [PATCH] DroidFish: If a game ends with one player resigning after making his move, allow adding a variation to the game tree with the same move but without resigning. --- .../org/petero/droidfish/gamelogic/Game.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/DroidFish/src/org/petero/droidfish/gamelogic/Game.java b/DroidFish/src/org/petero/droidfish/gamelogic/Game.java index cc5a59a..30572cc 100644 --- a/DroidFish/src/org/petero/droidfish/gamelogic/Game.java +++ b/DroidFish/src/org/petero/droidfish/gamelogic/Game.java @@ -163,11 +163,9 @@ public class Game { private final void addToGameTree(Move m, String playerAction) { if (m.equals(new Move(0, 0, 0))) { // Don't create more than one game-ending move at a node List varMoves = tree.variations(); - for (int i = varMoves.size() - 1; i >= 0; i--) { - if (varMoves.get(i).equals(m)) { + for (int i = varMoves.size() - 1; i >= 0; i--) + if (varMoves.get(i).equals(m)) tree.deleteVariation(i); - } - } } boolean movePresent = false; @@ -190,8 +188,16 @@ public class Game { } for (varNo = 0; varNo < nVars; varNo++) { if (varMoves.get(varNo).equals(m)) { - movePresent = true; - break; + boolean match = true; + if (playerAction.isEmpty()) { + tree.goForward(varNo, false); + match = tree.getGameState() == GameState.ALIVE; + tree.goBack(); + } + if (match) { + movePresent = true; + break; + } } } }