diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-06-14 04:55:24 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-06-14 04:55:24 +0200 |
commit | ebacf1ae7494abc3a80cf1ec242a6202d6438323 (patch) | |
tree | 9052767ea3cc2dcdbf20926c47224f1304ae1585 /src/jrummikub/control/network/GameOfferControl.java | |
parent | 4879b7b93eaff1f80056d78e19271d6418ec6534 (diff) | |
download | JRummikub-ebacf1ae7494abc3a80cf1ec242a6202d6438323.tar JRummikub-ebacf1ae7494abc3a80cf1ec242a6202d6438323.zip |
Implement joining games
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@434 72836036-5685-4462-b002-a69064685172
Diffstat (limited to 'src/jrummikub/control/network/GameOfferControl.java')
-rw-r--r-- | src/jrummikub/control/network/GameOfferControl.java | 36 |
1 files changed, 32 insertions, 4 deletions
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<Connection> connections = new ArrayList<Connection>(); 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<UUID, String>() { + @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() { |