summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/control/network/GameOfferControl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/control/network/GameOfferControl.java')
-rw-r--r--src/jrummikub/control/network/GameOfferControl.java41
1 files changed, 25 insertions, 16 deletions
diff --git a/src/jrummikub/control/network/GameOfferControl.java b/src/jrummikub/control/network/GameOfferControl.java
index 52b2d0e..91b0940 100644
--- a/src/jrummikub/control/network/GameOfferControl.java
+++ b/src/jrummikub/control/network/GameOfferControl.java
@@ -43,8 +43,7 @@ public class GameOfferControl extends AbstractGameBeginControl {
.add(new IListener() {
@Override
public void handle() {
- gameData.getGameSettings()
- .getPlayerList();
+ gameData.getGameSettings().getPlayerList();
if (checkPlayers()) {
startGame();
}
@@ -95,24 +94,34 @@ public class GameOfferControl extends AbstractGameBeginControl {
new IListener1<String>() {
@Override
public void handle(String sender) {
- List<PlayerSettings> players = gameData.getGameSettings()
- .getPlayerList();
- for (PlayerSettings s : players) {
- if (s.getName().equals(sender) && s.getType() == Type.NETWORK) {
- s.setType(Type.VACANT);
- s.setName("Offen");
- break;
- }
- }
-
- updateSettingsPanel();
- checkPlayers();
-
- connectionControl.offerGame(gameData);
+ handleLeave(sender);
+ }
+ }));
+ connections.add(connectionControl.getParticipantLeftEvent().add(
+ new IListener1<String>() {
+ @Override
+ public void handle(String nickname) {
+ handleLeave(nickname);
}
}));
}
+ private void handleLeave(String nickname) {
+ List<PlayerSettings> players = gameData.getGameSettings().getPlayerList();
+ for (PlayerSettings s : players) {
+ if (s.getName().equals(nickname) && s.getType() == Type.NETWORK) {
+ s.setType(Type.VACANT);
+ s.setName("Offen");
+
+ updateSettingsPanel();
+ checkPlayers();
+
+ connectionControl.offerGame(gameData);
+ return;
+ }
+ }
+ }
+
/**
* The event that is emitted when the game is started
*