diff options
Diffstat (limited to 'src/jrummikub/control/network/GameOfferControl.java')
-rw-r--r-- | src/jrummikub/control/network/GameOfferControl.java | 41 |
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 * |