diff --git a/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java b/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java index 2670181c661..871ec590d6f 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java @@ -4,13 +4,7 @@ import com.badlogic.gdx.Input; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.scenes.scene2d.InputEvent; -import com.badlogic.gdx.scenes.scene2d.ui.Dialog; -import com.badlogic.gdx.scenes.scene2d.ui.Image; -import com.badlogic.gdx.scenes.scene2d.ui.Label; -import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; -import com.badlogic.gdx.scenes.scene2d.ui.Table; -import com.badlogic.gdx.scenes.scene2d.ui.TextButton; -import com.badlogic.gdx.scenes.scene2d.ui.TextField; +import com.badlogic.gdx.scenes.scene2d.ui.*; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.utils.Align; @@ -18,6 +12,7 @@ import com.badlogic.gdx.utils.GdxRuntimeException; import com.badlogic.gdx.utils.IntMap; import forge.Forge; import forge.adventure.util.Controls; +import forge.adventure.util.Current; import forge.adventure.world.WorldSave; import forge.adventure.world.WorldSaveHeader; import forge.screens.TransitionScreen; @@ -36,7 +31,7 @@ public class SaveLoadScene extends UIScene { IntMap previews = new IntMap<>(); Color defColor; Table layout; - boolean save = true; + Modes mode; Dialog dialog; TextField textInput; Label header; @@ -105,14 +100,16 @@ public class SaveLoadScene extends UIScene { } public void loadSave() { - if (save) { + switch (mode) { + case Save: if (currentSlot > 0) { //prevent NPE, allowed saveslot is 1 to 10.. textInput.setText(buttons.get(currentSlot).getText().toString()); dialog.show(stage); stage.setKeyboardFocus(textInput); } - } else { + break; + case Load: if (WorldSave.load(currentSlot)) { Forge.setTransitionScreen(new TransitionScreen(new Runnable() { @Override @@ -123,6 +120,23 @@ public class SaveLoadScene extends UIScene { } else { Forge.clearTransitionScreen(); } + break; + case NewGamePlus: + if (WorldSave.load(currentSlot)) { + WorldSave.getCurrentSave().getWorld().generateNew(0); + Current.player().setWorldPosY((int) (WorldSave.getCurrentSave().getWorld().getData().playerStartPosY * WorldSave.getCurrentSave().getWorld().getData().height * WorldSave.getCurrentSave().getWorld().getTileSize())); + Current.player().setWorldPosX((int) (WorldSave.getCurrentSave().getWorld().getData().playerStartPosX * WorldSave.getCurrentSave().getWorld().getData().width * WorldSave.getCurrentSave().getWorld().getTileSize())); + Forge.setTransitionScreen(new TransitionScreen(new Runnable() { + @Override + public void run() { + Forge.switchScene(SceneType.GameScene.instance); + } + }, null, false, true)); + } else { + Forge.clearTransitionScreen(); + } + break; + } } @@ -182,18 +196,33 @@ public class SaveLoadScene extends UIScene { } + public enum Modes + { + Save, + Load, + NewGamePlus + } - public void setSaveGame(boolean save) { - if (save) { + public void setMode(Modes mode) { + switch (mode) + { + case Save: header.setText(Forge.getLocalizer().getMessage("lblSaveGame")); saveLoadButton.setText(Forge.getLocalizer().getMessage("lblSave")); - } else { + break; + case Load: header.setText(Forge.getLocalizer().getMessage("lblLoadGame")); saveLoadButton.setText(Forge.getLocalizer().getMessage("lblLoad")); + break; + + case NewGamePlus: + header.setText("New Game Plus"); + saveLoadButton.setText("Use selected Save"); + break; } - autoSave.setDisabled(save); - quickSave.setDisabled(save); - this.save = save; + autoSave.setDisabled(mode == Modes.Save); + quickSave.setDisabled(mode == Modes.Save); + this.mode = mode; } @Override diff --git a/forge-gui-mobile/src/forge/adventure/scene/StartScene.java b/forge-gui-mobile/src/forge/adventure/scene/StartScene.java index afcc24f160d..e4f0844c26c 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/StartScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/StartScene.java @@ -12,7 +12,7 @@ import forge.adventure.world.WorldSave; * First scene after the splash screen */ public class StartScene extends UIScene { - TextButton saveButton, resumeButton, newGameButton, loadButtton, settingsButton, exitButton, switchButton; + TextButton saveButton, resumeButton, newGameButton, loadButton, settingsButton, exitButton, switchButton; boolean init; public StartScene() { @@ -26,13 +26,13 @@ public class StartScene extends UIScene { } public boolean Save() { - ((SaveLoadScene) SceneType.SaveLoadScene.instance).setSaveGame(true); + ((SaveLoadScene) SceneType.SaveLoadScene.instance).setMode(SaveLoadScene.Modes.Save); Forge.switchScene(SceneType.SaveLoadScene.instance); return true; } public boolean Load() { - ((SaveLoadScene) SceneType.SaveLoadScene.instance).setSaveGame(false); + ((SaveLoadScene) SceneType.SaveLoadScene.instance).setMode(SaveLoadScene.Modes.Load); Forge.switchScene(SceneType.SaveLoadScene.instance); return true; } @@ -90,6 +90,7 @@ public class StartScene extends UIScene { StartScene.this.NewGame(); } }); + ui.onButtonPress("Start+", () -> NewGamePlus()); ui.onButtonPress("Load", new Runnable() { @Override public void run() { @@ -122,8 +123,8 @@ public class StartScene extends UIScene { }); newGameButton = ui.findActor("Start"); newGameButton.getLabel().setText(Forge.getLocalizer().getMessage("lblNewGame")); - loadButtton = ui.findActor("Load"); - loadButtton.getLabel().setText(Forge.getLocalizer().getMessage("lblLoad")); + loadButton = ui.findActor("Load"); + loadButton.getLabel().setText(Forge.getLocalizer().getMessage("lblLoad")); saveButton = ui.findActor("Save"); saveButton.getLabel().setText(Forge.getLocalizer().getMessage("lblSave")); resumeButton = ui.findActor("Resume"); @@ -141,9 +142,9 @@ public class StartScene extends UIScene { newGameButton.setWidth(bW); newGameButton.setX(oX); newGameButton.getLabel().setFontScaleX(2); - loadButtton.setWidth(bW); - loadButtton.setX(oX); - loadButtton.getLabel().setFontScaleX(2); + loadButton.setWidth(bW); + loadButton.setX(oX); + loadButton.getLabel().setFontScaleX(2); saveButton.setWidth(bW); saveButton.setX(oX); saveButton.getLabel().setFontScaleX(2); @@ -171,4 +172,9 @@ public class StartScene extends UIScene { this.init = true; } } + + private void NewGamePlus() { + ((SaveLoadScene) SceneType.SaveLoadScene.instance).setMode(SaveLoadScene.Modes.NewGamePlus); + Forge.switchScene(SceneType.SaveLoadScene.instance); + } } diff --git a/forge-gui/res/adventure/Shandalar/maps/main.tiled-session b/forge-gui/res/adventure/Shandalar/maps/main.tiled-session index 026e191d121..fe8cc3609aa 100644 --- a/forge-gui/res/adventure/Shandalar/maps/main.tiled-session +++ b/forge-gui/res/adventure/Shandalar/maps/main.tiled-session @@ -177,8 +177,8 @@ "scale": 1.5, "selectedLayer": 4, "viewCenter": { - "x": 232, - "y": 135.99999999999994 + "x": 231.99999999999997, + "y": 136 } }, "map/cave_14.tmx": { @@ -193,7 +193,7 @@ "scale": 3, "selectedLayer": 3, "viewCenter": { - "x": 232, + "x": 231.99999999999997, "y": 136 } }, @@ -201,7 +201,7 @@ "scale": 0.75, "selectedLayer": 3, "viewCenter": { - "x": 232, + "x": 231.99999999999994, "y": 136 } }, @@ -209,7 +209,7 @@ "scale": 1.0548958333333331, "selectedLayer": 3, "viewCenter": { - "x": 240.78206773970567, + "x": 240.78206773970578, "y": 136.50636911227411 } }, @@ -545,7 +545,7 @@ "scale": 1.0166158536585366, "selectedLayer": 4, "viewCenter": { - "x": 311.8188633978108, + "x": 311.81886339781073, "y": 320.6717648822912 } }, @@ -649,7 +649,7 @@ "scale": 1.0166158536585366, "selectedLayer": 4, "viewCenter": { - "x": 311.8188633978108, + "x": 311.81886339781073, "y": 320.6717648822912 } }, @@ -1297,16 +1297,16 @@ "scale": 0.75, "selectedLayer": 4, "viewCenter": { - "x": 480, - "y": 319.9999999999999 + "x": 479.99999999999994, + "y": 320 } }, "map/cave_25C.tmx": { "scale": 1.5, "selectedLayer": 5, "viewCenter": { - "x": 480, - "y": 320 + "x": 479.99999999999994, + "y": 144 } }, "map/cave_3.tmx": { @@ -1369,7 +1369,7 @@ "scale": 3, "selectedLayer": 0, "viewCenter": { - "x": 232, + "x": 231.99999999999997, "y": 136 } }, @@ -1377,8 +1377,8 @@ "scale": 1.5, "selectedLayer": 0, "viewCenter": { - "x": 232, - "y": 135.99999999999994 + "x": 231.99999999999997, + "y": 136 } }, "map/crypt.tmx": { @@ -1417,7 +1417,7 @@ "scale": 1.5, "selectedLayer": 3, "viewCenter": { - "x": 320, + "x": 319.99999999999994, "y": 320 } }, @@ -1458,15 +1458,15 @@ "selectedLayer": 0, "viewCenter": { "x": 240, - "y": 136 + "y": 202 } }, "map/evilgrove_1.tmx": { "scale": 1.5, "selectedLayer": 0, "viewCenter": { - "x": 240, - "y": 135.99999999999994 + "x": 239.99999999999997, + "y": 136 } }, "map/evilgrove_2.tmx": { @@ -2065,8 +2065,8 @@ "scale": 3, "selectedLayer": 4, "viewCenter": { - "x": 236.99999999999997, - "y": 242 + "x": 232, + "y": 240 } }, "map/main_story/colorless_castle.tmx": { @@ -2089,8 +2089,8 @@ "scale": 2, "selectedLayer": 4, "viewCenter": { - "x": 299.5, - "y": 1259 + "x": 240, + "y": 911.5 } }, "map/main_story/green_castle.tmx": { diff --git a/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.atlas b/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.atlas index c8488962c1e..960067761ce 100644 --- a/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.atlas +++ b/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.atlas @@ -131,7 +131,7 @@ ArtefactShop xy: 320, 786 size: 16, 16 Test - xy: 129, 48 + xy: 128, 48 size: 32, 32 Cave xy: 192, 272 diff --git a/forge-gui/res/adventure/Shandalar/ui/start_menu_mobile.json b/forge-gui/res/adventure/Shandalar/ui/start_menu_mobile.json index 6a32c7b116f..b3821728678 100644 --- a/forge-gui/res/adventure/Shandalar/ui/start_menu_mobile.json +++ b/forge-gui/res/adventure/Shandalar/ui/start_menu_mobile.json @@ -13,11 +13,20 @@ "type": "TextButton", "name": "Start", "text": "New Game", - "width": 160, + "width": 80, "height": 30, "x": 160, "y": 20 }, + { + "type": "TextButton", + "name": "Start+", + "text": "New Game +", + "width": 80, + "height": 30, + "x": 240, + "y": 20 + }, { "type": "TextButton", "name": "Load",