[Mobile] Add Adventure/Classic Switch button

- on Classic Mode, on Exit, you can switch to Adventure Mode
- on Adventure Mode, added switch button to Classic Mode
This commit is contained in:
Anthony Calosa
2022-02-28 15:14:25 +08:00
parent 8129d1004a
commit ecbfb5bdd1
7 changed files with 67 additions and 15 deletions

View File

@@ -581,25 +581,32 @@ public class Forge implements ApplicationListener {
public static void exit(boolean silent) { public static void exit(boolean silent) {
if (exited) { return; } //don't allow exiting multiple times if (exited) { return; } //don't allow exiting multiple times
Callback<Boolean> callback = new Callback<Boolean>() { final Localizer localizer = Localizer.getInstance();
final String title = Forge.isLandscapeMode() && GuiBase.isAndroid() ? "" : localizer.getMessage("lblExitForge");
final List<String> 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<Integer> callback = new Callback<Integer>() {
@Override @Override
public void run(Boolean result) { public void run(Integer result) {
if (result) { if (result == 0) {
exited = true; exited = true;
exitAnimation(false); exitAnimation(false);
} else if (result == 1 && Forge.isLandscapeMode() && GuiBase.isAndroid()) {
switchToAdventure();
} }
} }
}; };
final Localizer localizer = Localizer.getInstance();
if (silent) { if (silent) {
callback.run(true); callback.run(0);
} }
else { else {
FOptionPane.showConfirmDialog( FOptionPane.showOptionDialog(localizer.getMessage("lblAreYouSureYouWishExitForge"), title,
localizer.getMessage("lblAreYouSureYouWishExitForge"), localizer.getMessage("lblExitForge"), FOptionPane.QUESTION_ICON, options,0, callback);
localizer.getMessage("lblExit"), localizer.getMessage("lblCancel"), callback);
} }
} }
@@ -674,6 +681,30 @@ public class Forge implements ApplicationListener {
public static void clearCurrentScreen() { public static void clearCurrentScreen() {
currentScreen = null; 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) { public static void setTransitionScreen(TransitionScreen screen) {
transitionScreen = screen; transitionScreen = screen;
} }

View File

@@ -133,6 +133,14 @@ public class StartScene extends UIScene {
StartScene.this.Exit(); StartScene.this.Exit();
} }
}); });
if (GuiBase.isAndroid()) {
ui.onButtonPress("Switch", new Runnable() {
@Override
public void run() {
Forge.switchToClassic();
}
});
}
saveButton.setVisible(false); saveButton.setVisible(false);
resumeButton.setVisible(false); resumeButton.setVisible(false);
} }

View File

@@ -8,7 +8,9 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; 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.Config;
import forge.adventure.util.UIActor; import forge.adventure.util.UIActor;
@@ -53,7 +55,8 @@ public class UIScene extends Scene{
} }
@Override @Override
public void resLoaded() { public void resLoaded() {
stage = new Stage(new StretchViewport(GetIntendedWidth(), GetIntendedHeight())){ Viewport viewport = new ScalingViewport(Scaling.stretch, GetIntendedWidth(), GetIntendedHeight());
stage = new Stage(viewport){
@Override @Override
public boolean keyUp(int keycode) { public boolean keyUp(int keycode) {

View File

@@ -21,6 +21,7 @@ import com.badlogic.gdx.utils.Scaling;
import com.badlogic.gdx.utils.viewport.ScalingViewport; import com.badlogic.gdx.utils.viewport.ScalingViewport;
import forge.Forge; import forge.Forge;
import forge.adventure.player.AdventurePlayer; import forge.adventure.player.AdventurePlayer;
import forge.adventure.scene.Scene;
import forge.adventure.scene.SceneType; import forge.adventure.scene.SceneType;
import forge.adventure.util.Config; import forge.adventure.util.Config;
import forge.adventure.util.Current; import forge.adventure.util.Current;
@@ -54,7 +55,7 @@ public class GameHUD extends Stage {
float TOUCHPAD_KNOB_MIN_WIDTH = 40f; float TOUCHPAD_KNOB_MIN_WIDTH = 40f;
private GameHUD(GameStage gameStage) { 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; instance = this;
this.gameStage = gameStage; this.gameStage = gameStage;

View File

@@ -49,7 +49,7 @@ public abstract class GameStage extends Stage {
} }
public GameStage() { 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() { WorldSave.getCurrentSave().onLoad(new Runnable() {
@Override @Override
public void run() { public void run() {

View File

@@ -366,7 +366,7 @@ public class FOptionPane extends FDialog {
if (Forge.endKeyInput()) { return true; } if (Forge.endKeyInput()) { return true; }
if (isButtonEnabled(1)) { 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; return true;
} }

View File

@@ -58,10 +58,19 @@
"type": "TextButton", "type": "TextButton",
"name": "Exit", "name": "Exit",
"text": "Exit", "text": "Exit",
"width": 160, "width": 75,
"height": 30, "height": 30,
"x": 160, "x": 160,
"y": 220 "y": 220
},
{
"type": "TextButton",
"name": "Switch",
"text": "Classic Mode",
"width": 75,
"height": 30,
"x": 245,
"y": 220
} }
] ]
} }