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.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() {