diff --git a/src/rotp/Rotp.java b/src/rotp/Rotp.java index 93ddffab0..3b7941c46 100644 --- a/src/rotp/Rotp.java +++ b/src/rotp/Rotp.java @@ -72,8 +72,11 @@ public void windowClosing(WindowEvent e) { setFrameSize(); - if (reloadRecentSave) + if (reloadRecentSave) { + RotPUI.instance().unregisterOnSession(GameSession.instance()); GameSession.instance().loadRecentSession(false); + RotPUI.instance().registerOnSession(GameSession.instance()); + } frame.setResizable(false); frame.setVisible(true); } diff --git a/src/rotp/ui/RotPUI.java b/src/rotp/ui/RotPUI.java index 86411c5bf..f84dbafde 100644 --- a/src/rotp/ui/RotPUI.java +++ b/src/rotp/ui/RotPUI.java @@ -239,6 +239,9 @@ public final void registerOnSession(GameSession gameSession) { gameSession.removeGameListener(this); gameSession.addGameListener(this); } + public final void unregisterOnSession(GameSession gameSession) { + gameSession.removeGameListener(this); + } @Override public void clearAdvice() { RotPUI.this.mainUI().clearAdvice(); diff --git a/src/rotp/ui/game/GameUI.java b/src/rotp/ui/game/GameUI.java index 5825e1765..742095de7 100644 --- a/src/rotp/ui/game/GameUI.java +++ b/src/rotp/ui/game/GameUI.java @@ -539,8 +539,11 @@ private void openRedditPage() { public void continueGame() { if (canContinue()) { buttonClick(); - if (!session().status().inProgress()) + if (!session().status().inProgress()) { + RotPUI.instance().unregisterOnSession(session()); session().loadRecentSession(true); + RotPUI.instance().registerOnSession(session()); + } RotPUI.instance().selectMainPanel(); } } diff --git a/src/rotp/ui/game/LoadGameUI.java b/src/rotp/ui/game/LoadGameUI.java index 1b797cf9d..83313bfc4 100644 --- a/src/rotp/ui/game/LoadGameUI.java +++ b/src/rotp/ui/game/LoadGameUI.java @@ -237,7 +237,11 @@ public void loadRecentGame() { loading = true; repaint(); buttonClick(); - final Runnable load = () -> { GameSession.instance().loadRecentSession(false); }; + final Runnable load = () -> { + RotPUI.instance().unregisterOnSession(session()); + GameSession.instance().loadRecentSession(false); + RotPUI.instance().registerOnSession(session()); + }; SwingUtilities.invokeLater(load); } public void loadGame(String s) { @@ -248,6 +252,7 @@ public void loadGame(String s) { repaint(); buttonClick(); final Runnable load = () -> { + RotPUI.instance().unregisterOnSession(session()); GameSession.instance().loadSession(s, false); RotPUI.instance().registerOnSession(session()); };