From 139160c32d50dc9e48ac98aacc78dc51b75be607 Mon Sep 17 00:00:00 2001 From: Alexander Jones Date: Tue, 31 May 2022 19:29:23 +0800 Subject: [PATCH 1/3] [Adv] Add a continue button to the main menu --- .../src/forge/adventure/data/SettingData.java | 1 + .../src/forge/adventure/scene/StartScene.java | 37 ++++++++++++++++++- .../src/forge/adventure/world/WorldSave.java | 3 ++ .../adventure/Shandalar/ui/start_menu.json | 9 +++++ forge-gui/res/languages/en-US.properties | 1 + 5 files changed, 49 insertions(+), 2 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/data/SettingData.java b/forge-gui-mobile/src/forge/adventure/data/SettingData.java index 8c25e724b73..018d3d42abd 100644 --- a/forge-gui-mobile/src/forge/adventure/data/SettingData.java +++ b/forge-gui-mobile/src/forge/adventure/data/SettingData.java @@ -13,4 +13,5 @@ public class SettingData { public String plane; public boolean fullScreen; public String videomode; + public String lastActiveSave; } diff --git a/forge-gui-mobile/src/forge/adventure/scene/StartScene.java b/forge-gui-mobile/src/forge/adventure/scene/StartScene.java index cd72c20d35f..f18516069ef 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/StartScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/StartScene.java @@ -3,16 +3,23 @@ package forge.adventure.scene; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.scenes.scene2d.ui.TextButton; +import com.sun.org.slf4j.internal.Logger; +import com.sun.org.slf4j.internal.LoggerFactory; import forge.Forge; import forge.adventure.stage.GameHUD; import forge.adventure.stage.MapStage; +import forge.adventure.util.Config; import forge.adventure.world.WorldSave; +import forge.screens.TransitionScreen; /** * First scene after the splash screen */ public class StartScene extends UIScene { - TextButton saveButton, resumeButton, newGameButton, newGameButtonPlus, loadButton, settingsButton, exitButton, switchButton; + + final Logger log = LoggerFactory.getLogger(StartScene.class); + + TextButton saveButton, resumeButton, continueButton, newGameButton, newGameButtonPlus, loadButton, settingsButton, exitButton, switchButton; public StartScene() { super(Forge.isLandscapeMode()?"ui/start_menu.json":"ui/start_menu_portrait.json"); @@ -45,6 +52,23 @@ public class StartScene extends UIScene { return true; } + public boolean Continue() { + final String lastActiveSave = Config.instance().getSettingData().lastActiveSave; + + if (WorldSave.isSafeFile(lastActiveSave) && WorldSave.load(WorldSave.filenameToSlot(lastActiveSave))) { + Forge.setTransitionScreen(new TransitionScreen(new Runnable() { + @Override + public void run() { + Forge.switchScene(SceneType.GameScene.instance); + } + }, null, false, true)); + } else { + Forge.clearTransitionScreen(); + } + + return true; + } + public boolean settings() { Forge.switchScene(SceneType.SettingsScene.instance); return true; @@ -61,7 +85,13 @@ public class StartScene extends UIScene { if (hasSaveButton) hasSaveButton = !((TileMapScene) SceneType.TileMapScene.instance).currentMap().isInMap(); saveButton.setVisible(hasSaveButton); - resumeButton.setVisible(WorldSave.getCurrentSave().getWorld().getData() != null); + + boolean hasResumeButton = WorldSave.getCurrentSave().getWorld().getData() != null; + resumeButton.setVisible(hasResumeButton); + + // Continue button mutually exclusive with resume button + continueButton.setVisible(Config.instance().getSettingData().lastActiveSave != null && !hasResumeButton); + Gdx.input.setInputProcessor(stage); //Start taking input from the ui } @@ -87,6 +117,7 @@ public class StartScene extends UIScene { ui.onButtonPress("Load", () -> StartScene.this.Load()); ui.onButtonPress("Save", () -> StartScene.this.Save()); ui.onButtonPress("Resume", () -> StartScene.this.Resume()); + ui.onButtonPress("Continue", () -> StartScene.this.Continue()); ui.onButtonPress("Settings", () -> StartScene.this.settings()); ui.onButtonPress("Exit", () -> StartScene.this.Exit()); ui.onButtonPress("Switch", () -> Forge.switchToClassic()); @@ -101,6 +132,8 @@ public class StartScene extends UIScene { saveButton.getLabel().setText(Forge.getLocalizer().getMessage("lblSave")); resumeButton = ui.findActor("Resume"); resumeButton.getLabel().setText(Forge.getLocalizer().getMessage("lblResume")); + continueButton = ui.findActor("Continue"); + continueButton.getLabel().setText(Forge.getLocalizer().getMessage("lblContinue")); settingsButton = ui.findActor("Settings"); settingsButton.getLabel().setText(Forge.getLocalizer().getMessage("lblSettings")); exitButton = ui.findActor("Exit"); diff --git a/forge-gui-mobile/src/forge/adventure/world/WorldSave.java b/forge-gui-mobile/src/forge/adventure/world/WorldSave.java index 5cd7ab04721..228f878d15f 100644 --- a/forge-gui-mobile/src/forge/adventure/world/WorldSave.java +++ b/forge-gui-mobile/src/forge/adventure/world/WorldSave.java @@ -166,6 +166,9 @@ public class WorldSave { e.printStackTrace(); return false; } + + Config.instance().getSettingData().lastActiveSave = WorldSave.filename(currentSlot); + Config.instance().saveSettings(); return true; } diff --git a/forge-gui/res/adventure/Shandalar/ui/start_menu.json b/forge-gui/res/adventure/Shandalar/ui/start_menu.json index b3821728678..5a00acf152d 100644 --- a/forge-gui/res/adventure/Shandalar/ui/start_menu.json +++ b/forge-gui/res/adventure/Shandalar/ui/start_menu.json @@ -54,6 +54,15 @@ "x": 160, "y": 140 }, + { + "type": "TextButton", + "name": "Continue", + "text": "Continue", + "width": 160, + "height": 30, + "x": 160, + "y": 140 + }, { "type": "TextButton", "name": "Settings", diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index 3cd7a3428b3..347659b3bee 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -2878,6 +2878,7 @@ lblStart=Start lblLoad=Load lblSaveGame=Save Game lblResume=Resume +lblContinue=Continue lblClassic=Classic lblClassicMode=Classic Mode lblAdventureMode=Adventure Mode From fae435a29fbba7be774c6e75e3645dac0522bc97 Mon Sep 17 00:00:00 2001 From: Alexander Jones Date: Tue, 31 May 2022 19:33:42 +0800 Subject: [PATCH 2/3] Remove logging imports --- forge-gui-mobile/src/forge/adventure/scene/StartScene.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/scene/StartScene.java b/forge-gui-mobile/src/forge/adventure/scene/StartScene.java index f18516069ef..e60ec7dd6f0 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/StartScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/StartScene.java @@ -3,8 +3,6 @@ package forge.adventure.scene; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.scenes.scene2d.ui.TextButton; -import com.sun.org.slf4j.internal.Logger; -import com.sun.org.slf4j.internal.LoggerFactory; import forge.Forge; import forge.adventure.stage.GameHUD; import forge.adventure.stage.MapStage; @@ -17,8 +15,6 @@ import forge.screens.TransitionScreen; */ public class StartScene extends UIScene { - final Logger log = LoggerFactory.getLogger(StartScene.class); - TextButton saveButton, resumeButton, continueButton, newGameButton, newGameButtonPlus, loadButton, settingsButton, exitButton, switchButton; public StartScene() { From 6d83c439a87326234ed0539faebd4a2abf4a99fb Mon Sep 17 00:00:00 2001 From: Alexander Jones Date: Tue, 31 May 2022 19:34:28 +0800 Subject: [PATCH 3/3] Support portrait mode --- .../res/adventure/Shandalar/ui/start_menu_portrait.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/forge-gui/res/adventure/Shandalar/ui/start_menu_portrait.json b/forge-gui/res/adventure/Shandalar/ui/start_menu_portrait.json index 05d67e5f6a4..66263f17a28 100644 --- a/forge-gui/res/adventure/Shandalar/ui/start_menu_portrait.json +++ b/forge-gui/res/adventure/Shandalar/ui/start_menu_portrait.json @@ -54,6 +54,15 @@ "x": 16, "yOffset": 8 }, + { + "type": "TextButton", + "name": "Continue", + "text": "Continue", + "width": 238, + "height": 48, + "x": 16, + "yOffset": 8 + }, { "type": "TextButton", "name": "Settings",