Added RestartEvent to clear move list after game restart
This commit is contained in:
		| @@ -55,7 +55,7 @@ public class Log implements Iterable<MoveNode> { | ||||
| 		return new Iterator<MoveNode>() { | ||||
|  | ||||
| 			private MoveNode	current	= root; | ||||
| 			private boolean		hasNext	= true; | ||||
| 			private boolean		hasNext	= !isEmpty(); | ||||
|  | ||||
| 			@Override | ||||
| 			public boolean hasNext() { return hasNext; } | ||||
|   | ||||
							
								
								
									
										20
									
								
								src/dev/kske/chess/event/RestartEvent.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/dev/kske/chess/event/RestartEvent.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| package dev.kske.chess.event; | ||||
|  | ||||
| import dev.kske.chess.ui.GamePane; | ||||
|  | ||||
| /** | ||||
|  * Project: <strong>Chess</strong><br> | ||||
|  * File: <strong>RestartEvent.java</strong><br> | ||||
|  * Created: <strong>30 Oct 2019</strong><br> | ||||
|  *  | ||||
|  * @author Kai S. K. Engelbart | ||||
|  */ | ||||
| public class RestartEvent implements Event<GamePane> { | ||||
|  | ||||
| 	private final GamePane gamePane; | ||||
|  | ||||
| 	public RestartEvent(GamePane source) { gamePane = source; } | ||||
|  | ||||
| 	@Override | ||||
| 	public GamePane getData() { return gamePane; } | ||||
| } | ||||
| @@ -21,6 +21,7 @@ import dev.kske.chess.board.Piece.Color; | ||||
| import dev.kske.chess.event.Event; | ||||
| import dev.kske.chess.event.EventBus; | ||||
| import dev.kske.chess.event.MoveEvent; | ||||
| import dev.kske.chess.event.RestartEvent; | ||||
| import dev.kske.chess.event.Subscribable; | ||||
| import dev.kske.chess.game.Game; | ||||
| import dev.kske.chess.game.NaturalPlayer; | ||||
| @@ -58,7 +59,13 @@ public class GamePane extends JComponent { | ||||
|  | ||||
| 		JPanel toolPanel = new JPanel(); | ||||
| 		btnRestart = new JButton("Restart"); | ||||
| 		btnRestart.addActionListener((evt) -> { if (game != null) game.reset(); game.start(); }); | ||||
| 		btnRestart.addActionListener((evt) -> { | ||||
| 			if (game != null) { | ||||
| 				game.reset(); | ||||
| 				game.start(); | ||||
| 			} | ||||
| 			EventBus.getInstance().dispatch(new RestartEvent(this)); | ||||
| 		}); | ||||
|  | ||||
| 		btnSwapColors = new JButton("Play as black"); | ||||
| 		btnSwapColors.addActionListener((evt) -> { | ||||
| @@ -130,7 +137,7 @@ public class GamePane extends JComponent { | ||||
| 			letterLabel.setHorizontalAlignment(JLabel.CENTER); | ||||
| 			letterPanel.add(letterLabel); | ||||
| 		} | ||||
| 		 | ||||
|  | ||||
| 		JScrollPane			scrollPane		= new JScrollPane(); | ||||
| 		GridBagConstraints	gbc_scrollPane	= new GridBagConstraints(); | ||||
| 		gbc_scrollPane.fill		= GridBagConstraints.BOTH; | ||||
| @@ -147,10 +154,9 @@ public class GamePane extends JComponent { | ||||
|  | ||||
| 		EventBus.getInstance().register(new Subscribable() { | ||||
|  | ||||
| 			// TODO: Clean on restart | ||||
| 			@Override | ||||
| 			public void handle(Event<?> event) { | ||||
| 				if (game.getBoard().getLog() == null || game.getBoard().getLog().isEmpty()) return; | ||||
| 				if (game.getBoard().getLog() == null) return; | ||||
|  | ||||
| 				DefaultListModel<MoveNode> model = new DefaultListModel<>(); | ||||
| 				game.getBoard().getLog().forEach(node -> model.addElement(node)); | ||||
| @@ -158,9 +164,7 @@ public class GamePane extends JComponent { | ||||
| 			} | ||||
|  | ||||
| 			@Override | ||||
| 			public Set<Class<?>> supports() { | ||||
| 				return new HashSet<>(Arrays.asList(MoveEvent.class)); | ||||
| 			} | ||||
| 			public Set<Class<?>> supports() { return new HashSet<>(Arrays.asList(MoveEvent.class, RestartEvent.class)); } | ||||
| 		}); | ||||
| 	} | ||||
|  | ||||
| @@ -183,7 +187,7 @@ public class GamePane extends JComponent { | ||||
| 	public void setGame(Game game) { | ||||
| 		if (this.game != null) this.game.stop(); | ||||
| 		this.game = game; | ||||
| 		btnSwapColors.setEnabled(game.getPlayers().get(Color.WHITE) instanceof NaturalPlayer | ||||
| 				^ game.getPlayers().get(Color.BLACK) instanceof NaturalPlayer); | ||||
| 		btnSwapColors | ||||
| 			.setEnabled(game.getPlayers().get(Color.WHITE) instanceof NaturalPlayer ^ game.getPlayers().get(Color.BLACK) instanceof NaturalPlayer); | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user