Fixed input listening bug in NaturalPlayer
+ disconnect methods in Game and Player + NaturalPlayer removes its MouseListener from OverlayComponent after the disconnect method is called
This commit is contained in:
parent
f89c95850a
commit
f9aea34edf
@ -93,5 +93,12 @@ public class Game {
|
||||
overlayComponent.clearArrow();
|
||||
}
|
||||
|
||||
/**
|
||||
* Removed all connections between the game and the ui.
|
||||
*/
|
||||
public void disconnect() {
|
||||
players.values().forEach(Player::disconnect);
|
||||
}
|
||||
|
||||
public Board getBoard() { return board; }
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package dev.kske.chess.game;
|
||||
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -18,16 +18,35 @@ import dev.kske.chess.ui.OverlayComponent;
|
||||
* Created: <strong>06.07.2019</strong><br>
|
||||
* Author: <strong>Kai S. K. Engelbart</strong>
|
||||
*/
|
||||
public class NaturalPlayer extends Player {
|
||||
public class NaturalPlayer extends Player implements MouseListener {
|
||||
|
||||
private final OverlayComponent overlayComponent;
|
||||
|
||||
private boolean moveRequested;
|
||||
private Position pos;
|
||||
|
||||
public NaturalPlayer(Color color, OverlayComponent overlayComponent) {
|
||||
super(color);
|
||||
this.overlayComponent = overlayComponent;
|
||||
moveRequested = false;
|
||||
overlayComponent.addMouseListener(new MouseAdapter() {
|
||||
|
||||
private Position pos;
|
||||
overlayComponent.addMouseListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestMove() {
|
||||
moveRequested = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelMove() {
|
||||
moveRequested = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disconnect() {
|
||||
overlayComponent.removeMouseListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mousePressed(MouseEvent evt) {
|
||||
@ -54,16 +73,16 @@ public class NaturalPlayer extends Player {
|
||||
pos = null;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestMove() {
|
||||
moveRequested = true;
|
||||
}
|
||||
public void mouseClicked(MouseEvent e) {}
|
||||
|
||||
@Override
|
||||
public void cancelMove() {
|
||||
moveRequested = false;
|
||||
}
|
||||
public void mouseReleased(MouseEvent e) {}
|
||||
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {}
|
||||
}
|
||||
|
@ -23,6 +23,8 @@ public abstract class Player {
|
||||
|
||||
public abstract void cancelMove();
|
||||
|
||||
public abstract void disconnect();
|
||||
|
||||
public Game getGame() { return game; }
|
||||
|
||||
public void setGame(Game game) {
|
||||
|
@ -98,4 +98,7 @@ public class AIPlayer extends Player {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disconnect() {}
|
||||
}
|
||||
|
Reference in New Issue
Block a user