diff --git a/game-app/game-core/src/main/java/games/strategy/engine/framework/startup/launcher/ServerLauncher.java b/game-app/game-core/src/main/java/games/strategy/engine/framework/startup/launcher/ServerLauncher.java index d82b1cf13a..7ca98a6e5d 100644 --- a/game-app/game-core/src/main/java/games/strategy/engine/framework/startup/launcher/ServerLauncher.java +++ b/game-app/game-core/src/main/java/games/strategy/engine/framework/startup/launcher/ServerLauncher.java @@ -315,7 +315,7 @@ private void saveAndEndGame(final INode node) { final Path f = launchAction.getAutoSaveFile(); try { serverGame.saveGame(f); - gameSelectorModel.setSaveGameFileToLoad(f); + ClientSetting.defaultGameUri.setValueAndFlush(f.toUri().toString()); } catch (final Exception e) { log.error("Failed to save game: " + f.toAbsolutePath(), e); } diff --git a/game-app/game-core/src/main/java/games/strategy/engine/framework/startup/ui/panels/main/game/selector/GameSelectorModel.java b/game-app/game-core/src/main/java/games/strategy/engine/framework/startup/ui/panels/main/game/selector/GameSelectorModel.java index e39eae7777..b9462c15bf 100644 --- a/game-app/game-core/src/main/java/games/strategy/engine/framework/startup/ui/panels/main/game/selector/GameSelectorModel.java +++ b/game-app/game-core/src/main/java/games/strategy/engine/framework/startup/ui/panels/main/game/selector/GameSelectorModel.java @@ -46,7 +46,6 @@ public class GameSelectorModel extends Observable implements GameSelector { // just for host bots, so we can get the actions for loading/saving games on the bots from this // model @Setter @Getter private ClientModel clientModelForHostBots = null; - private Optional saveGameToLoad = Optional.empty(); // Don't load a save game before the startup task to load the initial map has run, else that task // may "lose" the race and overwrite the loaded saved game. @@ -186,25 +185,20 @@ public void onGameEnded() { ThreadRunner.runInNewThread(this::loadDefaultGameSameThread); } - /** Sets the path of a save file that should be loaded. */ - public void setSaveGameFileToLoad(final Path filePath) { - saveGameToLoad = Optional.of(filePath.toAbsolutePath().toString()); - } - /** * Runs the load default game logic in same thread. Default game is the one that we loaded on * startup. */ public void loadDefaultGameSameThread() { final Optional gameUri; - if (Files.exists(new HeadlessAutoSaveFileUtils().getHeadlessAutoSaveFile())) { + if (GameRunner.headless() + && Files.exists(new HeadlessAutoSaveFileUtils().getHeadlessAutoSaveFile())) { gameUri = Optional.of( new HeadlessAutoSaveFileUtils() .getHeadlessAutoSaveFile() .toAbsolutePath() .toString()); - saveGameToLoad = Optional.empty(); } else { gameUri = ClientSetting.defaultGameUri.getValue(); } @@ -219,6 +213,7 @@ public void loadDefaultGameSameThread() { loadMap(file); } else { // try to load it as a saved game whatever the extension + readyForSaveLoad.countDown(); loadSave(file); } },