summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/control/network/NetworkGameControl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/control/network/NetworkGameControl.java')
-rw-r--r--src/jrummikub/control/network/NetworkGameControl.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/jrummikub/control/network/NetworkGameControl.java b/src/jrummikub/control/network/NetworkGameControl.java
new file mode 100644
index 0000000..1040909
--- /dev/null
+++ b/src/jrummikub/control/network/NetworkGameControl.java
@@ -0,0 +1,46 @@
+package jrummikub.control.network;
+
+import jrummikub.control.GameControl;
+import jrummikub.control.RoundControl;
+import jrummikub.control.SaveControl;
+import jrummikub.model.GameSettings;
+import jrummikub.model.IRoundState;
+import jrummikub.util.IListener;
+import jrummikub.view.IView;
+
+public class NetworkGameControl extends GameControl {
+ private IConnectionControl connectionControl;
+ private boolean host;
+
+ public NetworkGameControl(GameSettings gameSettings, SaveControl saveControl,
+ IView view, IConnectionControl connectionControl, boolean host) {
+ super(gameSettings, saveControl, view);
+
+ this.connectionControl = connectionControl;
+ this.host = host;
+ }
+
+ @Override
+ public void startGame() {
+ connections.add(connectionControl.getRoundStartEvent().add(new IListener() {
+ @Override
+ public void handle() {
+ startRound();
+ }
+ }));
+
+ if (host) {
+ connectionControl.startRound();
+ }
+ }
+
+ @Override
+ protected IRoundState createRoundState() {
+ return host ? super.createRoundState() : null;
+ }
+
+ @Override
+ protected RoundControl createRoundControl(IRoundState roundState) {
+ return new NetworkRoundControl(roundState, view, connectionControl, host);
+ }
+}