From ebacf1ae7494abc3a80cf1ec242a6202d6438323 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Tue, 14 Jun 2011 04:55:24 +0200 Subject: Implement joining games git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@434 72836036-5685-4462-b002-a69064685172 --- .../control/network/GameOfferControl.java | 36 +++++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) (limited to 'src/jrummikub/control/network/GameOfferControl.java') diff --git a/src/jrummikub/control/network/GameOfferControl.java b/src/jrummikub/control/network/GameOfferControl.java index 0db5110..7cd289f 100644 --- a/src/jrummikub/control/network/GameOfferControl.java +++ b/src/jrummikub/control/network/GameOfferControl.java @@ -1,22 +1,27 @@ package jrummikub.control.network; +import java.util.ArrayList; +import java.util.List; import java.util.UUID; import jrummikub.model.GameSettings; +import jrummikub.model.PlayerSettings; +import jrummikub.model.PlayerSettings.Type; +import jrummikub.util.Connection; import jrummikub.util.GameData; +import jrummikub.util.IListener2; import jrummikub.view.ISettingsPanel.SettingsMode; import jrummikub.view.IView; public class GameOfferControl { + private List connections = new ArrayList(); private GameData gameData; private ConnectionControl connectionControl; - private GameSettings settings; private IView view; - public GameOfferControl(ConnectionControl connectionControl, - GameSettings settings, IView view) { + public GameOfferControl(final ConnectionControl connectionControl, + final GameSettings settings, final IView view) { this.connectionControl = connectionControl; - this.settings = settings; this.view = view; gameData = new GameData(UUID.randomUUID(), settings); @@ -24,6 +29,29 @@ public class GameOfferControl { view.getSettingsPanel().setSettingsMode(SettingsMode.NETWORK_OFFER); view.getSettingsPanel().enableAddPlayerButton(false); view.getSettingsPanel().setGameSettings(settings); + + connections.add(connectionControl.getGameJoinEvent().add( + new IListener2() { + @Override + public void handle(UUID uuid, String sender) { + if (!uuid.equals(gameData.getGameID())) { + return; + } + + for (PlayerSettings player : settings.getPlayerList()) { + if (player.getType() == Type.VACANT) { + player.setName(sender); + player.setType(Type.NETWORK); + view.getSettingsPanel().setGameSettings(settings); + connectionControl.ackJoinGame(uuid, sender, true); + connectionControl.offerGame(gameData); + return; + } + } + + connectionControl.ackJoinGame(uuid, sender, false); + } + })); } public void startGameOffer() { -- cgit v1.2.3