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.java30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/jrummikub/control/network/NetworkGameControl.java b/src/jrummikub/control/network/NetworkGameControl.java
index 768f0c3..262b380 100644
--- a/src/jrummikub/control/network/NetworkGameControl.java
+++ b/src/jrummikub/control/network/NetworkGameControl.java
@@ -7,6 +7,8 @@ import jrummikub.model.GameSettings;
import jrummikub.model.IRoundState;
import jrummikub.model.PlayerSettings;
import jrummikub.model.PlayerSettings.Type;
+import jrummikub.util.Event;
+import jrummikub.util.IEvent;
import jrummikub.util.IListener;
import jrummikub.util.IListener1;
import jrummikub.view.IView;
@@ -18,6 +20,7 @@ import jrummikub.view.IView.BottomPanelType;
public class NetworkGameControl extends GameControl {
private IConnectionControl connectionControl;
private boolean host;
+ private Event backEvent = new Event();
/**
* Creates new network game control
@@ -51,8 +54,7 @@ public class NetworkGameControl extends GameControl {
for (PlayerSettings s : NetworkGameControl.this.gameSettings
.getPlayerList()) {
if (s.getName().equals(nickname) && s.getType() == Type.NETWORK) {
- abortGame();
- view.setBottomPanel(BottomPanelType.NETWORK_CONNECTION_LOST_PANEL);
+ connectionLost();
return;
}
}
@@ -60,6 +62,10 @@ public class NetworkGameControl extends GameControl {
}));
}
+ public IEvent getBackEvent() {
+ return backEvent;
+ }
+
@Override
protected void startRound() {
connections.add(connectionControl.getRoundStartEvent().add(new IListener() {
@@ -89,4 +95,24 @@ public class NetworkGameControl extends GameControl {
view.setBottomPanel(host ? BottomPanelType.WIN_PANEL
: BottomPanelType.NETWORK_WIN_PANEL);
}
+
+ private void connectionLost() {
+ abortGame();
+
+ connections.add(view.getNewGameEvent().add(new IListener() {
+ @Override
+ public void handle() {
+ abortGame();
+ backEvent.emit();
+ }
+ }));
+ connections.add(view.getQuitEvent().add(new IListener() {
+ @Override
+ public void handle() {
+ System.exit(0);
+ }
+ }));
+
+ view.setBottomPanel(BottomPanelType.NETWORK_CONNECTION_LOST_PANEL);
+ }
}