diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index ea4ea90af7d..679e649ef2d 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -581,25 +581,32 @@ public class Forge implements ApplicationListener { public static void exit(boolean silent) { if (exited) { return; } //don't allow exiting multiple times - Callback callback = new Callback() { + final Localizer localizer = Localizer.getInstance(); + final String title = Forge.isLandscapeMode() && GuiBase.isAndroid() ? "" : localizer.getMessage("lblExitForge"); + final List options = new ArrayList<>(); + options.add(localizer.getMessage("lblExit")); + if (Forge.isLandscapeMode() && GuiBase.isAndroid()) + options.add(localizer.getMessageorUseDefault("lblAdventureMode", "Adventure Mode")); + options.add(localizer.getMessage("lblCancel")); + + Callback callback = new Callback() { @Override - public void run(Boolean result) { - if (result) { + public void run(Integer result) { + if (result == 0) { exited = true; exitAnimation(false); + } else if (result == 1 && Forge.isLandscapeMode() && GuiBase.isAndroid()) { + switchToAdventure(); } } }; - - final Localizer localizer = Localizer.getInstance(); if (silent) { - callback.run(true); + callback.run(0); } else { - FOptionPane.showConfirmDialog( - localizer.getMessage("lblAreYouSureYouWishExitForge"), localizer.getMessage("lblExitForge"), - localizer.getMessage("lblExit"), localizer.getMessage("lblCancel"), callback); + FOptionPane.showOptionDialog(localizer.getMessage("lblAreYouSureYouWishExitForge"), title, + FOptionPane.QUESTION_ICON, options,0, callback); } } @@ -674,6 +681,30 @@ public class Forge implements ApplicationListener { public static void clearCurrentScreen() { currentScreen = null; } + public static void switchToClassic() { + setTransitionScreen(new TransitionScreen(new Runnable() { + @Override + public void run() { + isMobileAdventureMode = false; + GuiBase.setIsAdventureMode(false); + setCursor(FSkin.getCursor().get(0), "0"); + altZoneTabs = FModel.getPreferences().getPrefBoolean(FPref.UI_ALT_PLAYERZONETABS); + Gdx.input.setInputProcessor(getInputProcessor()); + openHomeDefault(); + clearTransitionScreen(); + } + }, ScreenUtils.getFrameBufferTexture(), false, false)); + } + public static void switchToAdventure() { + setTransitionScreen(new TransitionScreen(new Runnable() { + @Override + public void run() { + clearCurrentScreen(); + clearTransitionScreen(); + openAdventure(); + } + }, ScreenUtils.getFrameBufferTexture(), false, false)); + } public static void setTransitionScreen(TransitionScreen screen) { transitionScreen = screen; } diff --git a/forge-gui-mobile/src/forge/adventure/scene/StartScene.java b/forge-gui-mobile/src/forge/adventure/scene/StartScene.java index 08b7c78bc2b..24cb92613c6 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/StartScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/StartScene.java @@ -133,6 +133,14 @@ public class StartScene extends UIScene { StartScene.this.Exit(); } }); + if (GuiBase.isAndroid()) { + ui.onButtonPress("Switch", new Runnable() { + @Override + public void run() { + Forge.switchToClassic(); + } + }); + } saveButton.setVisible(false); resumeButton.setVisible(false); } diff --git a/forge-gui-mobile/src/forge/adventure/scene/UIScene.java b/forge-gui-mobile/src/forge/adventure/scene/UIScene.java index 0335f9846b6..7f5cd77c512 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/UIScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/UIScene.java @@ -8,7 +8,9 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; -import com.badlogic.gdx.utils.viewport.StretchViewport; +import com.badlogic.gdx.utils.Scaling; +import com.badlogic.gdx.utils.viewport.ScalingViewport; +import com.badlogic.gdx.utils.viewport.Viewport; import forge.adventure.util.Config; import forge.adventure.util.UIActor; @@ -53,7 +55,8 @@ public class UIScene extends Scene{ } @Override public void resLoaded() { - stage = new Stage(new StretchViewport(GetIntendedWidth(), GetIntendedHeight())){ + Viewport viewport = new ScalingViewport(Scaling.stretch, GetIntendedWidth(), GetIntendedHeight()); + stage = new Stage(viewport){ @Override public boolean keyUp(int keycode) { diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java index 0039ae87cf3..b15e6acdb71 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java @@ -21,6 +21,7 @@ import com.badlogic.gdx.utils.Scaling; import com.badlogic.gdx.utils.viewport.ScalingViewport; import forge.Forge; import forge.adventure.player.AdventurePlayer; +import forge.adventure.scene.Scene; import forge.adventure.scene.SceneType; import forge.adventure.util.Config; import forge.adventure.util.Current; @@ -54,7 +55,7 @@ public class GameHUD extends Stage { float TOUCHPAD_KNOB_MIN_WIDTH = 40f; private GameHUD(GameStage gameStage) { - super(new ScalingViewport(Scaling.fillX, 480f, 270f), gameStage.getBatch()); + super(new ScalingViewport(Scaling.stretch, Scene.GetIntendedWidth(), Scene.GetIntendedHeight()), gameStage.getBatch()); instance = this; this.gameStage = gameStage; diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameStage.java b/forge-gui-mobile/src/forge/adventure/stage/GameStage.java index 8ed98cec1f7..065731eae39 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameStage.java @@ -49,7 +49,7 @@ public abstract class GameStage extends Stage { } public GameStage() { - super(new ScalingViewport(Scaling.fillX, Scene.GetIntendedWidth(), Scene.GetIntendedHeight(), new OrthographicCamera())); + super(new ScalingViewport(Scaling.stretch, Scene.GetIntendedWidth(), Scene.GetIntendedHeight(), new OrthographicCamera())); WorldSave.getCurrentSave().onLoad(new Runnable() { @Override public void run() { diff --git a/forge-gui-mobile/src/forge/toolbox/FOptionPane.java b/forge-gui-mobile/src/forge/toolbox/FOptionPane.java index 10b06fa06cc..f45f19b99e4 100644 --- a/forge-gui-mobile/src/forge/toolbox/FOptionPane.java +++ b/forge-gui-mobile/src/forge/toolbox/FOptionPane.java @@ -366,7 +366,7 @@ public class FOptionPane extends FDialog { if (Forge.endKeyInput()) { return true; } if (isButtonEnabled(1)) { - setResult(1); //set result to final option on Escape or Back + setResult(isButtonEnabled(2) ? 2 : 1); //set result to final option on Escape or Back } return true; } 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 d130042cef9..ba320756c6a 100644 --- a/forge-gui/res/adventure/Shandalar/ui/start_menu_mobile.json +++ b/forge-gui/res/adventure/Shandalar/ui/start_menu_mobile.json @@ -58,10 +58,19 @@ "type": "TextButton", "name": "Exit", "text": "Exit", - "width": 160, + "width": 75, "height": 30, "x": 160, "y": 220 + }, + { + "type": "TextButton", + "name": "Switch", + "text": "Classic Mode", + "width": 75, + "height": 30, + "x": 245, + "y": 220 } ] } \ No newline at end of file