Fixed fullmove counters in PGN export
This commit is contained in:
		| @@ -82,29 +82,31 @@ public class PGNGame { | ||||
| 		// Insert newline if tags were printed | ||||
| 		if (!tagPairs.isEmpty()) pw.println(); | ||||
|  | ||||
| 		// Collect SAN moves | ||||
| 		Board			clone	= new Board(board, true); | ||||
| 		List<String>	chunks	= new ArrayList<>(); | ||||
| 		while (clone.getLog().hasParent()) { | ||||
| 			Move move = clone.getLog().getLast().move; | ||||
| 			clone.revert(); | ||||
| 			String chunk = clone.getLog().getLast().activeColor == Color.WHITE ? String.format(" %d. ", clone.getLog().getLast().fullmoveCounter) | ||||
| 					: " "; | ||||
| 			chunk += move.toSAN(clone); | ||||
| 			chunks.add(chunk); | ||||
| 		} | ||||
| 		Collections.reverse(chunks); | ||||
|  | ||||
| 		// Write movetext | ||||
| 		String line = ""; | ||||
| 		for (String chunk : chunks) | ||||
| 			if (line.length() + chunk.length() <= 80) line += chunk; | ||||
| 			else { | ||||
| 				// Flush line | ||||
| 				pw.println(line); | ||||
| 				line = ""; | ||||
| 		if (!board.getLog().isEmpty()) { | ||||
| 			// Collect SAN moves | ||||
| 			Board			clone	= new Board(board, true); | ||||
| 			List<String>	chunks	= new ArrayList<>(); | ||||
| 			boolean			flag	= true; | ||||
| 			while (flag) { | ||||
| 				Move move = clone.getLog().getLast().move; | ||||
| 				flag = clone.getLog().hasParent(); | ||||
| 				clone.revert(); | ||||
| 				String chunk = clone.getLog().getActiveColor() == Color.WHITE ? String.format(" %d. ", clone.getLog().getFullmoveNumber()) : " "; | ||||
| 				chunk += move.toSAN(clone); | ||||
| 				chunks.add(chunk); | ||||
| 			} | ||||
| 			Collections.reverse(chunks); | ||||
|  | ||||
| 			// Write movetext | ||||
| 			String line = ""; | ||||
| 			for (String chunk : chunks) | ||||
| 				if (line.length() + chunk.length() <= 80) line += chunk; | ||||
| 				else { | ||||
| 					pw.println(line); | ||||
| 					line = ""; | ||||
| 				} | ||||
| 			if (!line.isEmpty()) pw.println(line); | ||||
| 		} | ||||
| 		// Write game termination marker | ||||
| 		pw.print(tagPairs.get("Result")); | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user