Fixed game state related bugs
This commit is contained in:
		| @@ -24,10 +24,10 @@ public class Game { | ||||
| 	private BoardComponent		boardComponent; | ||||
|  | ||||
| 	public Game(Map<Color, Player> players, BoardPane boardPane) { | ||||
| 		this.players		= players; | ||||
| 		this.players			= players; | ||||
| 		this.overlayComponent	= boardPane.getOverlayComponent(); | ||||
| 		this.boardComponent		= boardPane.getBoardComponent(); | ||||
| 		this.board			= boardComponent.getBoard(); | ||||
| 		this.board				= boardComponent.getBoard(); | ||||
|  | ||||
| 		// Initialize the game variable in each player | ||||
| 		players.values().forEach(player -> player.setGame(this)); | ||||
| @@ -46,10 +46,9 @@ public class Game { | ||||
| 					System.out.printf("%s in check!%n", player.color.opposite()); | ||||
| 				default: | ||||
| 					boardComponent.repaint(); | ||||
| 					overlayComponent.displayArrow(move); | ||||
| 					players.get(player.color.opposite()).requestMove(); | ||||
|  | ||||
| 			} | ||||
| 			overlayComponent.displayArrow(move); | ||||
| 		} else player.requestMove(); | ||||
| 	} | ||||
|  | ||||
| @@ -57,12 +56,11 @@ public class Game { | ||||
| 		players.get(Color.WHITE).requestMove(); | ||||
| 	} | ||||
|  | ||||
| 	public void restart() { | ||||
| 	public void reset() { | ||||
| 		players.forEach((k, v) -> v.cancelMove()); | ||||
| 		board.initializeDefaultPositions(); | ||||
| 		boardComponent.repaint(); | ||||
| 		overlayComponent.clearDots(); | ||||
| 		overlayComponent.clearArrow(); | ||||
| 		start(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -65,7 +65,7 @@ public class MainWindow { | ||||
| 		mframe.getContentPane().add(toolPanel, BorderLayout.NORTH); | ||||
|  | ||||
| 		JButton btnRestart = new JButton("Restart"); | ||||
| 		btnRestart.addActionListener((evt) -> { if (game != null) game.restart(); }); | ||||
| 		btnRestart.addActionListener((evt) -> { if (game != null) game.reset(); game.start(); }); | ||||
| 		toolPanel.add(btnRestart); | ||||
| 		mframe.pack(); | ||||
| 		mframe.setLocationRelativeTo(null); | ||||
|   | ||||
| @@ -80,9 +80,11 @@ public class MenuBar extends JMenuBar { | ||||
| 	} | ||||
|  | ||||
| 	private void startGame() { | ||||
| 		// TODO: Re-init board and overlay component | ||||
| 		Game game = new Game(players, boardPane); | ||||
| 		mainWindow.setGame(game); | ||||
|  | ||||
| 		// Update board and board component | ||||
| 		game.reset(); | ||||
| 		game.start(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user