summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/control/network/GameOfferControl.java
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2011-06-14 04:55:24 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2011-06-14 04:55:24 +0200
commitebacf1ae7494abc3a80cf1ec242a6202d6438323 (patch)
tree9052767ea3cc2dcdbf20926c47224f1304ae1585 /src/jrummikub/control/network/GameOfferControl.java
parent4879b7b93eaff1f80056d78e19271d6418ec6534 (diff)
downloadJRummikub-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.java36
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() {