summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/jrummikub/control/SettingsControl.java13
-rw-r--r--src/jrummikub/control/network/NetworkControl.java11
-rw-r--r--src/jrummikub/control/network/NetworkSettingsControl.java38
-rw-r--r--src/jrummikub/view/IGameListPanel.java4
4 files changed, 58 insertions, 8 deletions
diff --git a/src/jrummikub/control/SettingsControl.java b/src/jrummikub/control/SettingsControl.java
index 80b334a..6f4e149 100644
--- a/src/jrummikub/control/SettingsControl.java
+++ b/src/jrummikub/control/SettingsControl.java
@@ -24,11 +24,11 @@ import jrummikub.view.IView;
* The settings control controls the settings panel
*/
public class SettingsControl {
- private IView view;
- private Event1<GameSettings> startGameEvent = new Event1<GameSettings>();
+ protected IView view;
+ protected Event1<GameSettings> startGameEvent = new Event1<GameSettings>();
private List<Connection> connections = new ArrayList<Connection>();
- private GameSettings settings;
+ protected GameSettings settings;
/**
* Create a new settings control
@@ -41,8 +41,6 @@ public class SettingsControl {
public SettingsControl(IView view, GameSettings settings) {
this.view = view;
this.settings = settings;
- addPlayer();
- addPlayer();
}
/**
@@ -59,6 +57,9 @@ public class SettingsControl {
* Start the operation of the settings control
*/
public void startSettings() {
+ addPlayer();
+ addPlayer();
+
addPlayerSettingsListeners();
addOptionListeners1();
@@ -247,7 +248,7 @@ public class SettingsControl {
update();
}
- private void update() {
+ protected void update() {
view.getSettingsPanel().enableRemovePlayerButtons(
settings.getPlayerList().size() > 2);
view.getSettingsPanel().enableAddPlayerButton(
diff --git a/src/jrummikub/control/network/NetworkControl.java b/src/jrummikub/control/network/NetworkControl.java
index 013c866..b6dc27e 100644
--- a/src/jrummikub/control/network/NetworkControl.java
+++ b/src/jrummikub/control/network/NetworkControl.java
@@ -6,6 +6,7 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
+import jrummikub.model.GameSettings;
import jrummikub.util.Connection;
import jrummikub.util.Event;
import jrummikub.util.IEvent;
@@ -22,6 +23,8 @@ public class NetworkControl {
private List<Connection> connections = new ArrayList<Connection>();
private Event stopNetworkEvent = new Event();
+ private NetworkSettingsControl settingsControl;
+
private Map<UUID, GameData> gameMap = new HashMap<UUID, GameData>();
public NetworkControl(final LoginData loginData, final IView view) {
@@ -38,7 +41,6 @@ public class NetworkControl {
testData.setCurrentPlayerCount(2);
testData.setMaxPlayerCount(4);
- connectionControl.offerGame(testData);
}
}));
@@ -94,8 +96,13 @@ public class NetworkControl {
.add(new IListener() {
@Override
public void handle() {
- // TODO Auto-generated method stub
+ if (settingsControl == null) {
+ view.showGameListPanel(false);
+ settingsControl = new NetworkSettingsControl(connectionControl,
+ view, new GameSettings());
+ settingsControl.startSettings();
+ }
}
}));
diff --git a/src/jrummikub/control/network/NetworkSettingsControl.java b/src/jrummikub/control/network/NetworkSettingsControl.java
new file mode 100644
index 0000000..d1a56e6
--- /dev/null
+++ b/src/jrummikub/control/network/NetworkSettingsControl.java
@@ -0,0 +1,38 @@
+package jrummikub.control.network;
+
+import java.util.UUID;
+
+import jrummikub.control.SettingsControl;
+import jrummikub.model.GameSettings;
+import jrummikub.view.IGameListPanel.GameData;
+import jrummikub.view.IView;
+
+public class NetworkSettingsControl extends SettingsControl {
+ private GameData gameData = new GameData(UUID.randomUUID());
+ private ConnectionControl connectionControl;
+
+ public NetworkSettingsControl(ConnectionControl connectionControl, IView view, GameSettings settings) {
+ super(view, settings);
+ this.connectionControl = connectionControl;
+ }
+
+ @Override
+ public void startSettings() {
+ super.startSettings();
+ }
+
+ @Override
+ protected void update() {
+ super.update();
+
+ gameData.setMaxPlayerCount(settings.getPlayerList().size());
+
+ connectionControl.offerGame(gameData);
+ }
+
+ @Override
+ public void abort() {
+ super.abort();
+ connectionControl.withdrawGame(gameData.getGameID());
+ }
+}
diff --git a/src/jrummikub/view/IGameListPanel.java b/src/jrummikub/view/IGameListPanel.java
index da41839..018d931 100644
--- a/src/jrummikub/view/IGameListPanel.java
+++ b/src/jrummikub/view/IGameListPanel.java
@@ -12,6 +12,10 @@ public interface IGameListPanel {
private int currentPlayerCount = 0;
private int maxPlayerCount = 0;
+ public GameData(UUID gameID) {
+ this.gameID = gameID;
+ }
+
public GameData(UUID gameID, String host) {
this.gameID = gameID;
this.host = host;