diff --git a/DroidFish/src/org/petero/droidfish/gamelogic/GameTree.java b/DroidFish/src/org/petero/droidfish/gamelogic/GameTree.java index d8d6620..90462a0 100644 --- a/DroidFish/src/org/petero/droidfish/gamelogic/GameTree.java +++ b/DroidFish/src/org/petero/droidfish/gamelogic/GameTree.java @@ -477,10 +477,13 @@ public class GameTree { Node gameRoot = new Node(); Node.parsePgn(scanner, gameRoot, options); - // Store parsed data in GameTree - if ((tagPairs.size() == 0) && (gameRoot.children.size() == 0)) - return false; + if (tagPairs.size() == 0) { + gameRoot.verifyChildren(TextIO.readFEN(TextIO.startPosFEN)); + if (gameRoot.children.size() == 0) + return false; + } + // Store parsed data in GameTree String fen = TextIO.startPosFEN; int nTags = tagPairs.size(); for (int i = 0; i < nTags; i++) { diff --git a/DroidFish/src/org/petero/droidfish/gamelogic/TextIO.java b/DroidFish/src/org/petero/droidfish/gamelogic/TextIO.java index 6381012..5668978 100644 --- a/DroidFish/src/org/petero/droidfish/gamelogic/TextIO.java +++ b/DroidFish/src/org/petero/droidfish/gamelogic/TextIO.java @@ -72,10 +72,18 @@ public class TextIO { default: throw new ChessParseError(R.string.err_invalid_piece, pos); } } - if (words[1].length() == 0) { + + if (words[1].length() > 0) { + boolean wtm; + switch (words[1].charAt(0)) { + case 'w': wtm = true; break; + case 'b': wtm = false; break; + default: throw new ChessParseError(R.string.err_invalid_side, pos); + } + pos.setWhiteMove(wtm); + } else { throw new ChessParseError(R.string.err_invalid_side, pos); } - pos.setWhiteMove(words[1].charAt(0) == 'w'); // Castling rights int castleMask = 0;