diff options
Diffstat (limited to 'src/jrummikub/control')
-rw-r--r-- | src/jrummikub/control/ApplicationControl.java | 66 | ||||
-rw-r--r-- | src/jrummikub/control/SaveControl.java | 29 | ||||
-rw-r--r-- | src/jrummikub/control/network/NetworkControl.java | 35 |
3 files changed, 52 insertions, 78 deletions
diff --git a/src/jrummikub/control/ApplicationControl.java b/src/jrummikub/control/ApplicationControl.java index 7590081..25de8c9 100644 --- a/src/jrummikub/control/ApplicationControl.java +++ b/src/jrummikub/control/ApplicationControl.java @@ -42,7 +42,7 @@ public class ApplicationControl { saveControl = new SaveControl(view); addQuitGameHandlers(); - + addSaveLoadHandlers(); addNewNetworkGameHandler(); saveControl.getLoadEvent().add( @@ -65,27 +65,56 @@ public class ApplicationControl { }); } - private void addNewNetworkGameHandler() { - view.getNetworkGameEvent().add(new IListener() { + private void addSaveLoadHandlers() { + view.getLoadEvent().add(new IListener() { @Override public void handle() { - if (gameControl == null) { + if (!isGameRunning()) { abortControls(); - createLoginControl(true); - } else { - view.getQuitWarningPanel().setMode(QuitMode.QUIT_PROCESS); + startApplication(); + view.load(); + return; + } + view.getQuitWarningPanel().setMode(QuitMode.QUIT_GAME); view.showQuitWarningPanel(true); + tempConnection = view.getQuitWarningPanel().getQuitEvent() .add(new IListener() { @Override public void handle() { - view.showQuitWarningPanel(false); abortControls(); - createLoginControl(true); + startApplication(); + view.showQuitWarningPanel(false); + view.load(); tempConnection.remove(); - tempConnection = null; } }); + } + }); + + } + + private void addNewNetworkGameHandler() { + view.getNetworkGameEvent().add(new IListener() { + @Override + public void handle() { + if (!isGameRunning()) { + abortControls(); + createLoginControl(true); + } else { + view.getQuitWarningPanel().setMode(QuitMode.QUIT_PROCESS); + view.showQuitWarningPanel(true); + tempConnection = view.getQuitWarningPanel().getQuitEvent() + .add(new IListener() { + @Override + public void handle() { + view.showQuitWarningPanel(false); + abortControls(); + createLoginControl(true); + tempConnection.remove(); + tempConnection = null; + } + }); } } }); @@ -101,10 +130,7 @@ public class ApplicationControl { view.getQuitEvent().add(new IListener() { @Override public void handle() { - if (networkControl != null) { - return; - } - if (gameControl == null) { + if (!isGameRunning()) { System.exit(0); } else { showQuitWarning(); @@ -152,6 +178,15 @@ public class ApplicationControl { } /** + * Checks if a game is currently running + * @return true when a game is running + */ + public boolean isGameRunning() { + return gameControl != null || networkControl != null + && networkControl.isGameRunning(); + } + + /** * Create a new network login control */ private void createLoginControl(boolean reset) { @@ -282,9 +317,6 @@ public class ApplicationControl { * @return whether the server could be started */ public boolean startDedicatedServer(String password) { - if (password == "") { - password = "jrummikub"; - } if (server == null) { DedicatedServer newServer = new DedicatedServer(password); ServerStatus status = newServer.start(); diff --git a/src/jrummikub/control/SaveControl.java b/src/jrummikub/control/SaveControl.java index 5ecbb45..f348756 100644 --- a/src/jrummikub/control/SaveControl.java +++ b/src/jrummikub/control/SaveControl.java @@ -27,7 +27,6 @@ public class SaveControl { private IRoundState roundState; private Event3<GameSettings, GameState, IRoundState> loadEvent = new Event3<GameSettings, GameState, IRoundState>(); private Event loadErrorEvent = new Event(); - private Connection tempConnection; /** * Creates a new SaveControl @@ -42,34 +41,6 @@ public class SaveControl { save(file); } }); - - view.getLoadEvent().add(new IListener() { - @Override - public void handle() { - view.getQuitWarningPanel().setMode(QuitMode.QUIT_GAME); - view.showQuitWarningPanel(true); - - tempConnection = view.getQuitWarningPanel().getQuitEvent() - .add(new IListener() { - @Override - public void handle() { - view.showQuitWarningPanel(false); - view.load(); - tempConnection.remove(); - } - }); - } - }); - view.getQuitWarningPanel().getCancelEvent().add(new IListener() { - @Override - public void handle() { - view.showQuitWarningPanel(false); - if (tempConnection != null) { - tempConnection.remove(); - tempConnection = null; - } - } - }); view.getLoadFileEvent().add(new IListener1<File>() { @Override public void handle(final File file) { diff --git a/src/jrummikub/control/network/NetworkControl.java b/src/jrummikub/control/network/NetworkControl.java index 6e42f83..2b5f90f 100644 --- a/src/jrummikub/control/network/NetworkControl.java +++ b/src/jrummikub/control/network/NetworkControl.java @@ -27,7 +27,6 @@ public class NetworkControl { private IConnectionControl connectionControl; private IView view; private List<Connection> connections = new ArrayList<Connection>(); - Connection tempConnection; private Event stopNetworkEvent = new Event(); private Event backToLoginEvent = new Event(); @@ -63,41 +62,10 @@ public class NetworkControl { addConnectionSetupListeners(loginData, view); addConnectionControlListeners(view); - - connections.add(view.getQuitEvent().add(new IListener() { - @Override - public void handle() { - if (gameControl == null) { - System.exit(0); - } else { - view.getQuitWarningPanel().setMode(QuitMode.QUIT_PROCESS); - view.showQuitWarningPanel(true); - tempConnection = view.getQuitWarningPanel().getQuitEvent() - .add(new IListener() { - @Override - public void handle() { - System.exit(0); - } - }); - } - } - })); addViewEventListeners(); } private void addViewEventListeners() { - connections.add(view.getQuitWarningPanel().getCancelEvent() - .add(new IListener() { - @Override - public void handle() { - view.showQuitWarningPanel(false); - if (tempConnection != null) { - tempConnection.remove(); - tempConnection = null; - } - } - })); - connections.add(view.getGameListPanel().getJoinEvent() .add(new IListener1<GameData>() { @Override @@ -378,4 +346,7 @@ public class NetworkControl { gameControl.startGame(); } + public boolean isGameRunning() { + return gameControl != null; + } } |