From 0317adfd31ed445d5e1c2ac381c17ad7baf0b664 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Wed, 2 Mar 2022 05:43:30 +0800 Subject: [PATCH 1/3] Adventure portrait mode --- forge-gui-mobile/src/forge/Forge.java | 10 +-- .../adventure/scene/DeckSelectScene.java | 84 ++++++++++++++----- .../src/forge/adventure/scene/GameScene.java | 14 +++- .../forge/adventure/scene/NewGameScene.java | 81 +++++++++++++++++- .../adventure/scene/PlayerStatisticScene.java | 68 +++++++++++++-- .../forge/adventure/scene/RewardScene.java | 15 ++-- .../forge/adventure/scene/SaveLoadScene.java | 81 +++++++++++++----- .../forge/adventure/scene/SettingsScene.java | 46 +++++++--- .../src/forge/adventure/scene/StartScene.java | 62 +++++++++----- .../forge/adventure/scene/TileMapScene.java | 72 +++++++++------- .../src/forge/adventure/scene/UIScene.java | 4 +- .../src/forge/adventure/stage/GameHUD.java | 43 +++++++++- .../src/forge/screens/SplashScreen.java | 8 +- .../adventure/Shandalar/ui/hud_mobile.json | 9 ++ .../res/adventure/Shandalar/ui/new_game.json | 30 +++++-- .../Shandalar/ui/new_game_mobile.json | 8 ++ .../res/adventure/Shandalar/ui/save_load.json | 16 ++-- .../res/adventure/Shandalar/ui/statistic.json | 7 ++ 18 files changed, 509 insertions(+), 149 deletions(-) diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index eee883bdaf4..8ad8fe856fd 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -598,11 +598,9 @@ public class Forge implements ApplicationListener { } //don't allow exiting multiple times 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.getMessageorUseDefault("lblAdventureMode", "Adventure Mode")); options.add(localizer.getMessage("lblCancel")); Callback callback = new Callback() { @@ -611,7 +609,7 @@ public class Forge implements ApplicationListener { if (result == 0) { exited = true; exitAnimation(false); - } else if (result == 1 && Forge.isLandscapeMode() && GuiBase.isAndroid()) { + } else if (result == 1) { switchToAdventure(); } } @@ -620,7 +618,7 @@ public class Forge implements ApplicationListener { if (silent) { callback.run(0); } else { - FOptionPane.showOptionDialog(localizer.getMessage("lblAreYouSureYouWishExitForge"), title, + FOptionPane.showOptionDialog(localizer.getMessage("lblAreYouSureYouWishExitForge"), "", FOptionPane.QUESTION_ICON, options, 0, callback); } } @@ -725,7 +723,7 @@ public class Forge implements ApplicationListener { openAdventure(); exited = false; } - }, ScreenUtils.getFrameBufferTexture(), false, false)); + }, null, false, true)); } public static void setTransitionScreen(TransitionScreen screen) { diff --git a/forge-gui-mobile/src/forge/adventure/scene/DeckSelectScene.java b/forge-gui-mobile/src/forge/adventure/scene/DeckSelectScene.java index 89218d8c31f..3d6110e8977 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/DeckSelectScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/DeckSelectScene.java @@ -16,7 +16,6 @@ import forge.Forge; import forge.adventure.player.AdventurePlayer; import forge.adventure.util.Controls; import forge.adventure.util.Current; -import forge.gui.GuiBase; public class DeckSelectScene extends UIScene { private final IntMap buttons = new IntMap<>(); @@ -25,10 +24,11 @@ public class DeckSelectScene extends UIScene { TextField textInput; Table layout; Label header; + TextButton back, edit, rename; int currentSlot = 0; public DeckSelectScene() { - super(GuiBase.isAndroid() ? "ui/deck_selector_mobile.json" : "ui/deck_selector.json"); + super(Forge.isLandscapeMode() ? "ui/deck_selector_mobile.json" : "ui/deck_selector.json"); } private TextButton addDeckSlot(String name, int i) { @@ -105,24 +105,46 @@ public class DeckSelectScene extends UIScene { dialog = Controls.newDialog("Save"); textInput = Controls.newTextField(""); - dialog.getButtonTable().add(Controls.newLabel("Name your new save file.")).colspan(2); - dialog.getButtonTable().row(); - dialog.getButtonTable().add(Controls.newLabel("Name:")).align(Align.left); - dialog.getButtonTable().add(textInput).fillX().expandX(); - dialog.getButtonTable().row(); - dialog.getButtonTable().add(Controls.newTextButton("Rename", new Runnable() { - @Override - public void run() { - DeckSelectScene.this.rename(); - } - })).align(Align.left); - dialog.getButtonTable().add(Controls.newTextButton("Abort", new Runnable() { - @Override - public void run() { - dialog.hide(); - } - })).align(Align.left); - + if (!Forge.isLandscapeMode()) { + dialog.getButtonTable().add(Controls.newLabel("Name your new save file.")).colspan(2).pad(2, 15, 2, 15); + dialog.getButtonTable().row(); + dialog.getButtonTable().add(Controls.newLabel("Name:")).align(Align.left).pad(2, 15, 2, 2); + dialog.getButtonTable().add(textInput).fillX().expandX().padRight(15); + dialog.getButtonTable().row(); + dialog.getButtonTable().add(Controls.newTextButton("Rename", new Runnable() { + @Override + public void run() { + DeckSelectScene.this.rename(); + } + })).align(Align.left).padLeft(15); + dialog.getButtonTable().add(Controls.newTextButton("Abort", new Runnable() { + @Override + public void run() { + dialog.hide(); + } + })).align(Align.right).padRight(15); + } else { + dialog.getButtonTable().add(Controls.newLabel("Name your new save file.")).colspan(2); + dialog.getButtonTable().row(); + dialog.getButtonTable().add(Controls.newLabel("Name:")).align(Align.left); + dialog.getButtonTable().add(textInput).fillX().expandX(); + dialog.getButtonTable().row(); + dialog.getButtonTable().add(Controls.newTextButton("Rename", new Runnable() { + @Override + public void run() { + DeckSelectScene.this.rename(); + } + })).align(Align.left); + dialog.getButtonTable().add(Controls.newTextButton("Abort", new Runnable() { + @Override + public void run() { + dialog.hide(); + } + })).align(Align.left); + } + back = ui.findActor("return"); + edit = ui.findActor("edit"); + rename = ui.findActor("rename"); ui.onButtonPress("return", new Runnable() { @Override public void run() { @@ -147,6 +169,28 @@ public class DeckSelectScene extends UIScene { ScrollPane scrollPane = ui.findActor("deckSlots"); scrollPane.setActor(layout); + if (!Forge.isLandscapeMode()) { + float w = Scene.GetIntendedWidth(); + float sW = w - 20; + float oX = w/2 - sW/2; + float h = Scene.GetIntendedHeight(); + float sH = (h - 10)/12; + scrollPane.setWidth(sW); + scrollPane.setHeight(sH*11); + scrollPane.setX(oX); + float rW = (w - 20)/3; + float rX = w/2 - rW/2; + rename.setWidth(rW); + rename.setHeight(20); + rename.setX(rX); + back.setWidth(rW); + back.setHeight(20); + back.setX(rename.getX()-rW); + edit.setWidth(rW); + edit.setHeight(20); + edit.setX(rename.getRight()); + } + } private void rename() { diff --git a/forge-gui-mobile/src/forge/adventure/scene/GameScene.java b/forge-gui-mobile/src/forge/adventure/scene/GameScene.java index 1bf76d24a2a..3d62e00dac9 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/GameScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/GameScene.java @@ -2,6 +2,7 @@ package forge.adventure.scene; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.OrthographicCamera; import forge.Forge; import forge.adventure.stage.WorldStage; @@ -10,6 +11,7 @@ import forge.adventure.stage.WorldStage; * does render the WorldStage and HUD */ public class GameScene extends HudScene { + private float cameraWidth, cameraHeight; public GameScene() { super(WorldStage.getInstance()); @@ -28,6 +30,7 @@ public class GameScene extends HudScene { } + @Override public void render() { @@ -40,14 +43,21 @@ public class GameScene extends HudScene { @Override public void resLoaded() { - - + //set initial camera width and height + cameraWidth = stage.getCamera().viewportWidth; + cameraHeight = stage.getCamera().viewportHeight; } @Override public void enter() { Forge.clearTransitionScreen(); Forge.clearCurrentScreen(); + if (!Forge.isLandscapeMode()) { + //Trick: switch the camera viewport width and height so it looks normal since we shrink the width for portrait mode for WorldStage + stage.getCamera().viewportHeight = cameraWidth; + stage.getCamera().viewportWidth = cameraHeight; + ((OrthographicCamera)stage.getCamera()).zoom = 0.85f; + } super.enter(); } diff --git a/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java b/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java index 826a4559ff9..964af0c1b7b 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java @@ -5,6 +5,10 @@ import com.badlogic.gdx.Input; import com.badlogic.gdx.scenes.scene2d.Event; import com.badlogic.gdx.scenes.scene2d.EventListener; import com.badlogic.gdx.scenes.scene2d.ui.Image; +import com.badlogic.gdx.scenes.scene2d.ui.ImageButton; +import com.badlogic.gdx.scenes.scene2d.ui.Label; +import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; +import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.ui.TextField; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.utils.Array; @@ -15,7 +19,6 @@ import forge.adventure.util.Config; import forge.adventure.util.Selector; import forge.adventure.world.WorldSave; import forge.deck.Deck; -import forge.gui.GuiBase; import forge.localinstance.properties.ForgePreferences; import forge.model.FModel; import forge.player.GamePlayerUtil; @@ -36,9 +39,13 @@ public class NewGameScene extends UIScene { private Selector deck; private Selector gender; private Selector difficulty; + private ScrollPane scrollPane; + private Label titleL, avatarL, nameL, raceL, genderL, difficultyL, deckL; + private ImageButton leftArrow, rightArrow; + private TextButton backButton, startButton; public NewGameScene() { - super(GuiBase.isAndroid() ? "ui/new_game_mobile.json" : "ui/new_game.json"); + super(Forge.isLandscapeMode() ? "ui/new_game_mobile.json" : "ui/new_game.json"); } public boolean start() { @@ -144,6 +151,76 @@ public class NewGameScene extends UIScene { } }); + scrollPane = ui.findActor("scroll"); + titleL = ui.findActor("titleL"); + avatarL = ui.findActor("avatarL"); + nameL = ui.findActor("nameL"); + raceL = ui.findActor("raceL"); + genderL = ui.findActor("genderL"); + difficultyL = ui.findActor("difficultyL"); + deckL = ui.findActor("deckL"); + leftArrow = ui.findActor("leftAvatar"); + rightArrow = ui.findActor("rightAvatar"); + backButton = ui.findActor("back"); + startButton = ui.findActor("start"); + if (!Forge.isLandscapeMode()) { + float w = Scene.GetIntendedWidth(); + float sW = w - 20; + float oX = w/2 - sW/2; + float h = Scene.GetIntendedHeight(); + float sH = (h - 10)/12; + + selectedName.setWidth(280); + selectedName.setX(w/2- selectedName.getWidth()/2); + nameL.setFontScaleX(2); + + titleL.setFontScaleX(2); + titleL.setX(selectedName.getX()-20); + + avatarImage.setScaleX(2); + avatarImage.setX(w/2-avatarImage.getWidth()); + + leftArrow.getImage().setScaleX(2); + leftArrow.setX(selectedName.getX()); + rightArrow.getImage().setScaleX(2); + rightArrow.setX(selectedName.getRight()-(rightArrow.getWidth()*2)); + + avatarL.setFontScaleX(2); + + race.setScaleX(2); + race.setWidth(140); + race.setX(selectedName.getX()); + raceL.setFontScaleX(2); + + gender.setScaleX(2); + gender.setWidth(140); + gender.setX(selectedName.getX()); + genderL.setFontScaleX(2); + + difficulty.setScaleX(2); + difficulty.setWidth(140); + difficulty.setX(selectedName.getX()); + difficultyL.setFontScaleX(2); + + deck.setScaleX(2); + deck.setWidth(140); + deck.setX(selectedName.getX()); + deckL.setFontScaleX(2); + + scrollPane.setWidth(sW); + scrollPane.setHeight(sH*11); + scrollPane.setX(oX); + + float bW = w - 165; + float bX = w/2 - bW/2; + backButton.setWidth(bW/2); + backButton.setHeight(20); + backButton.setX(bX); + startButton.setWidth(bW/2); + startButton.setHeight(20); + startButton.setX(backButton.getRight()); + + } updateAvatar(); } diff --git a/forge-gui-mobile/src/forge/adventure/scene/PlayerStatisticScene.java b/forge-gui-mobile/src/forge/adventure/scene/PlayerStatisticScene.java index a4e096dcd1c..5958b42e344 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/PlayerStatisticScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/PlayerStatisticScene.java @@ -5,6 +5,7 @@ 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.utils.TextureRegionDrawable; import com.badlogic.gdx.utils.Align; import forge.Forge; @@ -24,12 +25,13 @@ import java.util.Map; public class PlayerStatisticScene extends UIScene { - Image avatar; + Image avatar, avatarBorder, lifeIcon, goldIcon; Label money, life; - Label totalWins; - Label totalLoss; - Label lossWinRatio; + Label wins, totalWins; + Label loss, totalLoss; + Label winloss, lossWinRatio; Label playerName; + TextButton back; private Table enemiesGroup; public PlayerStatisticScene() { @@ -106,6 +108,8 @@ public class PlayerStatisticScene extends UIScene { Image enemyImage = new Image(); enemyImage.setDrawable(new TextureRegionDrawable(new EnemySprite(data).getAvatar())); enemyImage.setSize(8, 8); + if (!Forge.isLandscapeMode()) + enemyImage.setScaleX(2); enemiesGroup.add(enemyImage).align(Align.center).space(3, 10, 3, 10); enemiesGroup.add((data.name)).fillX().align(Align.center).fillX().space(3, 10, 3, 10); @@ -115,6 +119,54 @@ public class PlayerStatisticScene extends UIScene { enemiesGroup.row().space(8); } + if (!Forge.isLandscapeMode()) { + float w = Scene.GetIntendedWidth(); + back.setHeight(20); + back.setX(w / 2 - back.getWidth() / 2); + back.setY(0); + ScrollPane enemies = ui.findActor("enemies"); + enemies.setWidth(w - 20); + enemies.setX(w / 2 - enemies.getWidth() / 2); + enemies.setHeight(150); + enemies.setY(21); + ScrollPane stats = ui.findActor("stats"); + stats.setWidth(w - 20); + stats.setX(w / 2 - enemies.getWidth() / 2); + stats.setHeight(90); + stats.setY(enemies.getY() + 153); + avatar.setScaleX(2); + avatar.setX(40); + avatar.setY(stats.getY() + 15); + avatarBorder.setScaleX(2); + avatarBorder.setX(40); + avatarBorder.setY(stats.getY() + 15); + playerName.setX(avatar.getRight() + 105); + playerName.getStyle().font.getData().setScale(2, 1); + playerName.setY(avatar.getY() + 45); + wins.setY(avatar.getY() + 30); + wins.setX(avatar.getRight() + 105); + totalWins.setY(wins.getY()); + totalWins.setX(wins.getRight() + 85); + loss.setY(avatar.getY() + 15); + loss.setX(avatar.getRight() + 105); + totalLoss.setX(loss.getRight() + 85); + totalLoss.setY(loss.getY()); + winloss.setY(avatar.getY()); + winloss.setX(avatar.getRight() + 105); + lossWinRatio.setY(winloss.getY()); + lossWinRatio.setX(winloss.getRight() + 85); + lifeIcon.setScaleX(2); + lifeIcon.setY(stats.getY() + 5); + lifeIcon.setX(wins.getX()-35); + life.setX(lifeIcon.getX() + 35); + life.setY(lifeIcon.getY()); + goldIcon.setScaleX(2); + goldIcon.setY(stats.getY() + 5); + goldIcon.setX(totalWins.getX()-35); + money.setY(goldIcon.getY()); + money.setX(goldIcon.getX() + 35); + } + } @Override @@ -130,13 +182,19 @@ public class PlayerStatisticScene extends UIScene { } }); avatar = ui.findActor("avatar"); + avatarBorder = ui.findActor("avatarBorder"); playerName = ui.findActor("playerName"); life = ui.findActor("lifePoints"); money = ui.findActor("money"); + lifeIcon = ui.findActor("lifeIcon"); + goldIcon = ui.findActor("goldIcon"); + wins = ui.findActor("wins"); totalWins = ui.findActor("totalWins"); + loss = ui.findActor("loss"); totalLoss = ui.findActor("totalLoss"); + winloss = ui.findActor("winloss"); lossWinRatio = ui.findActor("lossWinRatio"); - + back = ui.findActor("return"); ScrollPane scrollPane = ui.findActor("enemies"); scrollPane.setActor(enemiesGroup); enemiesGroup.setFillParent(true); diff --git a/forge-gui-mobile/src/forge/adventure/scene/RewardScene.java b/forge-gui-mobile/src/forge/adventure/scene/RewardScene.java index 9744f3fa39c..dfdc5a31af4 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/RewardScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/RewardScene.java @@ -18,7 +18,6 @@ import forge.adventure.util.Reward; import forge.adventure.util.RewardActor; import forge.adventure.world.WorldSave; import forge.assets.ImageCache; -import forge.gui.GuiBase; /** * Displays the rewards of a fight or a treasure @@ -34,12 +33,12 @@ public class RewardScene extends UIScene { Type type; Array generated = new Array<>(); - static public final float CARD_WIDTH = 550f; - static public final float CARD_HEIGHT = 400f; + static public final float CARD_WIDTH = Forge.isLandscapeMode() ? 550f : 200f; + static public final float CARD_HEIGHT = Forge.isLandscapeMode() ? 400f : 300f; static public final float CARD_WIDTH_TO_HEIGHT = CARD_WIDTH / CARD_HEIGHT; public RewardScene() { - super(GuiBase.isAndroid() ? "ui/items_mobile.json" : "ui/items.json"); + super(Forge.isLandscapeMode() ? "ui/items_mobile.json" : "ui/items.json"); } boolean doneClicked = false; @@ -145,10 +144,10 @@ public class RewardScene extends UIScene { switch (type) { case Shop: - doneButton.setText("Return"); + doneButton.setText("Leave"); break; case Loot: - doneButton.setText("Take all"); + doneButton.setText("Done"); break; } for (int h = 1; h < targetHeight; h++) { @@ -159,6 +158,7 @@ public class RewardScene extends UIScene { //cardHeight=targetHeight/i; cardWidth = h / CARD_WIDTH_TO_HEIGHT; newArea = newRewards.size * cardWidth * cardHeight; + int rows = (int) (targetHeight / cardHeight); int cols = (int) Math.ceil(newRewards.size / (double) rows); if (newArea > oldCardArea && newArea <= targetArea && rows * cardHeight < targetHeight && cols * cardWidth < targetWidth) { @@ -174,6 +174,7 @@ public class RewardScene extends UIScene { yOff += (targetHeight - (cardHeight * numberOfRows)) / 2f; xOff += (targetWidth - (cardWidth * numberOfColumns)) / 2f; + float spacing = 2; int i = 0; for (Reward reward : new Array.ArrayIterator<>(newRewards)) { @@ -245,7 +246,7 @@ public class RewardScene extends UIScene { setX(actor.getX()); setY(actor.getY() - getHeight()); price = CardUtil.getCardPrice(actor.getReward().getCard()); - setText("Buy for " + price); + setText("$ " + price); addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { diff --git a/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java b/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java index da8f03ad0f8..b61ae9862bb 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java @@ -20,7 +20,6 @@ import forge.Forge; import forge.adventure.util.Controls; import forge.adventure.world.WorldSave; import forge.adventure.world.WorldSaveHeader; -import forge.gui.GuiBase; import forge.screens.TransitionScreen; import java.io.File; @@ -44,12 +43,12 @@ public class SaveLoadScene extends UIScene { int currentSlot = -3; Image previewImage; Image previewBorder; - TextButton saveLoadButton; + TextButton saveLoadButton, back; TextButton quickSave; TextButton autoSave; public SaveLoadScene() { - super(GuiBase.isAndroid() ? "ui/save_load_mobile.json" : "ui/save_load.json"); + super(Forge.isLandscapeMode() ? "ui/save_load_mobile.json" : "ui/save_load.json"); } @@ -207,24 +206,43 @@ public class SaveLoadScene extends UIScene { stage.addActor(layout); dialog = Controls.newDialog("Save"); textInput = Controls.newTextField(""); - dialog.getButtonTable().add(Controls.newLabel("Name your new save file.")).colspan(2); - dialog.getButtonTable().row(); - dialog.getButtonTable().add(Controls.newLabel("Name:")).align(Align.left); - dialog.getButtonTable().add(textInput).fillX().expandX(); - dialog.getButtonTable().row(); - dialog.getButtonTable().add(Controls.newTextButton("Save", new Runnable() { - @Override - public void run() { - SaveLoadScene.this.save(); - } - })).align(Align.left); - dialog.getButtonTable().add(Controls.newTextButton("Abort", new Runnable() { - @Override - public void run() { - SaveLoadScene.this.saveAbort(); - } - })).align(Align.left); - + if (!Forge.isLandscapeMode()) { + dialog.getButtonTable().add(Controls.newLabel("Name your new save file.")).colspan(2).pad(2, 15, 2, 15); + dialog.getButtonTable().row(); + dialog.getButtonTable().add(Controls.newLabel("Name:")).align(Align.left).pad(2, 15, 2, 2); + dialog.getButtonTable().add(textInput).fillX().expandX().padRight(15); + dialog.getButtonTable().row(); + dialog.getButtonTable().add(Controls.newTextButton("Save", new Runnable() { + @Override + public void run() { + SaveLoadScene.this.save(); + } + })).align(Align.left).padLeft(15); + dialog.getButtonTable().add(Controls.newTextButton("Abort", new Runnable() { + @Override + public void run() { + SaveLoadScene.this.saveAbort(); + } + })).align(Align.right).padRight(15); + } else { + dialog.getButtonTable().add(Controls.newLabel("Name your new save file.")).colspan(2); + dialog.getButtonTable().row(); + dialog.getButtonTable().add(Controls.newLabel("Name:")).align(Align.left); + dialog.getButtonTable().add(textInput).fillX().expandX(); + dialog.getButtonTable().row(); + dialog.getButtonTable().add(Controls.newTextButton("Save", new Runnable() { + @Override + public void run() { + SaveLoadScene.this.save(); + } + })).align(Align.left); + dialog.getButtonTable().add(Controls.newTextButton("Abort", new Runnable() { + @Override + public void run() { + SaveLoadScene.this.saveAbort(); + } + })).align(Align.right); + } previewImage = ui.findActor("preview"); previewBorder = ui.findActor("preview_border"); header = Controls.newLabel("Save"); @@ -244,6 +262,7 @@ public class SaveLoadScene extends UIScene { SaveLoadScene.this.loadSave(); } }); + back = ui.findActor("return"); ui.onButtonPress("return", new Runnable() { @Override public void run() { @@ -255,5 +274,25 @@ public class SaveLoadScene extends UIScene { ScrollPane scrollPane = ui.findActor("saveSlots"); scrollPane.setActor(layout); + if (!Forge.isLandscapeMode()) { + float w = Scene.GetIntendedWidth(); + float sW = w - 20; + float oX = w/2 - sW/2; + float h = Scene.GetIntendedHeight(); + float sH = (h - 10)/12; + scrollPane.setWidth(sW); + scrollPane.setHeight(sH*11); + scrollPane.setX(oX); + previewImage.setScaleX(1.5f); + previewImage.setScaleY(0.9f); + float bW = w - 165; + float bX = w/2 - bW/2; + back.setWidth(bW/2); + back.setHeight(20); + back.setX(bX); + saveLoadButton.setWidth(bW/2); + saveLoadButton.setHeight(20); + saveLoadButton.setX(back.getRight()); + } } } diff --git a/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java b/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java index 81970e041f9..2db63df04ba 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java @@ -12,6 +12,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; import com.badlogic.gdx.scenes.scene2d.ui.SelectBox; import com.badlogic.gdx.scenes.scene2d.ui.Slider; 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.utils.ChangeListener; import com.badlogic.gdx.utils.Align; @@ -36,9 +37,10 @@ public class SettingsScene extends UIScene { Stage stage; Texture Background; private Table settingGroup; + TextButton back; public SettingsScene() { - super(GuiBase.isAndroid() ? "ui/settings_mobile.json" : "ui/settings.json"); + super(Forge.isLandscapeMode() ? "ui/settings_mobile.json" : "ui/settings.json"); } @@ -95,9 +97,10 @@ public class SettingsScene extends UIScene { private void addCheckBox(String name, ForgePreferences.FPref pref) { CheckBox box = Controls.newCheckBox(""); - if (GuiBase.isAndroid()) { - box.getImage().setScaling(Scaling.fill); - box.getImageCell().size(12, 12); + if (GuiBase.isAndroid()||!Forge.isLandscapeMode()) { + box.getImage().setScaling(Scaling.stretch); + float width = !Forge.isLandscapeMode() ? 24 : 12; + box.getImageCell().size(width, 12); box.getImageCell().pad(2, 2, 2, 10); } box.setChecked(Preference.getPrefBoolean(pref)); @@ -130,9 +133,10 @@ public class SettingsScene extends UIScene { private void addSettingField(String name, boolean value, ChangeListener change) { CheckBox box = Controls.newCheckBox(""); - if (GuiBase.isAndroid()) { - box.getImage().setScaling(Scaling.fill); - box.getImageCell().size(12, 12); + if (GuiBase.isAndroid()||!Forge.isLandscapeMode()) { + box.getImage().setScaling(Scaling.stretch); + float width = !Forge.isLandscapeMode() ? 24 : 12; + box.getImageCell().size(width, 12); box.getImageCell().pad(2, 2, 2, 10); } box.setChecked(value); @@ -156,8 +160,15 @@ public class SettingsScene extends UIScene { void addLabel(String name) { Label label = new Label(name, Controls.GetSkin().get("white", Label.LabelStyle.class)); - settingGroup.row().space(5); - settingGroup.add(label).align(Align.left).pad(2, 2, 2, 5); + if (!Forge.isLandscapeMode()) { + label.setFontScaleX(2); + label.setWrap(true); + settingGroup.row().space(5); + settingGroup.add(label).align(Align.left).pad(2, 2, 2, 5).expandX(); + } else { + settingGroup.row().space(5); + settingGroup.add(label).align(Align.left).pad(2, 2, 2, 5); + } } @Override @@ -178,6 +189,9 @@ public class SettingsScene extends UIScene { } }); addLabel("Plane"); + if (!Forge.isLandscapeMode()) { + plane.getStyle().listStyle.font.getData().setScale(2, 1); + } settingGroup.add(plane).align(Align.right).pad(2); if (!GuiBase.isAndroid()) { @@ -252,7 +266,7 @@ public class SettingsScene extends UIScene { settingGroup.row(); - + back = ui.findActor("return"); ui.onButtonPress("return", new Runnable() { @Override public void run() { @@ -262,6 +276,18 @@ public class SettingsScene extends UIScene { ScrollPane scrollPane = ui.findActor("settings"); scrollPane.setActor(settingGroup); + + if (!Forge.isLandscapeMode()) { + float w = Scene.GetIntendedWidth(); + float bW = w/2; + float oX = w/2 - bW/2; + back.getLabel().setFontScaleX(2); + back.setWidth(bW); + back.setHeight(20); + float bH = back.getHeight(); + back.setX(oX); + scrollPane.setX(w/2-scrollPane.getWidth()/2); + } } @Override diff --git a/forge-gui-mobile/src/forge/adventure/scene/StartScene.java b/forge-gui-mobile/src/forge/adventure/scene/StartScene.java index 24cb92613c6..8e8b97112de 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/StartScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/StartScene.java @@ -2,23 +2,21 @@ package forge.adventure.scene; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; -import com.badlogic.gdx.scenes.scene2d.Actor; +import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import forge.Forge; import forge.adventure.stage.GameHUD; import forge.adventure.stage.MapStage; import forge.adventure.world.WorldSave; -import forge.gui.GuiBase; /** * First scene after the splash screen */ public class StartScene extends UIScene { - Actor saveButton; - Actor resumeButton; + TextButton saveButton, resumeButton, newGameButton, loadButtton, settingsButton, exitButton, switchButton; public StartScene() { - super(GuiBase.isAndroid() ? "ui/start_menu_mobile.json" : "ui/start_menu.json"); + super("ui/start_menu_mobile.json"); } @@ -100,12 +98,6 @@ public class StartScene extends UIScene { StartScene.this.Load(); } }); - ui.onButtonPress("Start", new Runnable() { - @Override - public void run() { - StartScene.this.NewGame(); - } - }); ui.onButtonPress("Save", new Runnable() { @Override public void run() { @@ -118,9 +110,6 @@ public class StartScene extends UIScene { StartScene.this.Resume(); } }); - - saveButton = ui.findActor("Save"); - resumeButton = ui.findActor("Resume"); ui.onButtonPress("Settings", new Runnable() { @Override public void run() { @@ -133,14 +122,45 @@ public class StartScene extends UIScene { StartScene.this.Exit(); } }); - if (GuiBase.isAndroid()) { - ui.onButtonPress("Switch", new Runnable() { - @Override - public void run() { - Forge.switchToClassic(); - } - }); + newGameButton = ui.findActor("Start"); + loadButtton = ui.findActor("Load"); + saveButton = ui.findActor("Save"); + resumeButton = ui.findActor("Resume"); + settingsButton = ui.findActor("Settings"); + exitButton = ui.findActor("Exit"); + switchButton = ui.findActor("Switch"); + if (!Forge.isLandscapeMode()) { + float w = Scene.GetIntendedWidth(); + float bW = w - 165; + float oX = w/2 - bW/2; + newGameButton.setWidth(bW); + newGameButton.setX(oX); + newGameButton.getLabel().setFontScaleX(2); + loadButtton.setWidth(bW); + loadButtton.setX(oX); + loadButtton.getLabel().setFontScaleX(2); + saveButton.setWidth(bW); + saveButton.setX(oX); + saveButton.getLabel().setFontScaleX(2); + resumeButton.setWidth(bW); + resumeButton.setX(oX); + resumeButton.getLabel().setFontScaleX(2); + settingsButton.setWidth(bW); + settingsButton.setX(oX); + settingsButton.getLabel().setFontScaleX(2); + exitButton.setWidth(bW/2); + exitButton.setX(w/2-exitButton.getWidth()); + exitButton.getLabel().setFontScaleX(2); + switchButton.setWidth(bW/2); + switchButton.setX(w/2); + switchButton.getLabel().setFontScaleX(2); } + 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/TileMapScene.java b/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java index 7668fc301cb..25815500018 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java @@ -2,7 +2,9 @@ package forge.adventure.scene; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.maps.tiled.TiledMap; +import forge.Forge; import forge.adventure.pointofintrest.PointOfInterest; import forge.adventure.stage.MapStage; import forge.adventure.stage.PointOfInterestMapRenderer; @@ -13,23 +15,20 @@ import forge.adventure.world.WorldSave; /** * Scene that will render tiled maps. * Used for towns dungeons etc - * */ public class TileMapScene extends HudScene { - - TiledMap map; PointOfInterestMapRenderer tiledMapRenderer; private String nextMap; + private float cameraWidth, cameraHeight; public TileMapScene() { super(MapStage.getInstance()); - tiledMapRenderer = new PointOfInterestMapRenderer((MapStage)stage); + tiledMapRenderer = new PointOfInterestMapRenderer((MapStage) stage); } - public MapStage currentMap() - { - return (MapStage)stage; + public MapStage currentMap() { + return (MapStage) stage; } @Override @@ -39,58 +38,75 @@ public class TileMapScene extends HudScene { } @Override - public void act(float delta) - { - if(map==null) + public void act(float delta) { + if (map == null) return; - if(nextMap!=null) - { + if (nextMap != null) { load(nextMap); - nextMap=null; + nextMap = null; } stage.act(Gdx.graphics.getDeltaTime()); } + @Override - public void render() - { - if(map==null) + public void render() { + if (map == null) return; Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); - tiledMapRenderer.setView(stage.getCamera().combined, stage.getCamera().position.x-Scene.GetIntendedWidth()/2.0f, stage.getCamera().position.y-Scene.GetIntendedHeight()/2.0f, Scene.GetIntendedWidth(), Scene.GetIntendedHeight()); + tiledMapRenderer.setView(stage.getCamera().combined, stage.getCamera().position.x - Scene.GetIntendedWidth() / 2.0f, stage.getCamera().position.y - Scene.GetIntendedHeight() / 2.0f, Scene.GetIntendedWidth(), Scene.GetIntendedHeight()); + if (!Forge.isLandscapeMode()) { + stage.getCamera().position.x = stage.GetPlayer().pos().x; + } tiledMapRenderer.render(); hud.draw(); } + @Override + public void resLoaded() { + //set initial camera width and height + cameraWidth = stage.getCamera().viewportWidth; + cameraHeight = stage.getCamera().viewportHeight; + super.resLoaded(); + } + @Override + public void enter() { + if (!Forge.isLandscapeMode()) { + //Trick for Map Stage + stage.getCamera().viewportWidth = cameraHeight; + stage.getCamera().viewportHeight = cameraWidth; + ((OrthographicCamera)stage.getCamera()).zoom = 0.55f; + } + super.enter(); + } public void load(PointOfInterest point) { - rootPoint=point; - oldMap=point.getData().map; + rootPoint = point; + oldMap = point.getData().map; map = new TemplateTmxMapLoader().load(Config.instance().getFilePath(point.getData().map)); - ((MapStage)stage).setPointOfInterest(WorldSave.getCurrentSave().getPointOfInterestChanges(point.getID()+oldMap)); + ((MapStage) stage).setPointOfInterest(WorldSave.getCurrentSave().getPointOfInterestChanges(point.getID() + oldMap)); stage.GetPlayer().setPosition(0, 0); WorldSave.getCurrentSave().getWorld().setSeed(point.getSeedOffset()); - tiledMapRenderer.loadMap(map,""); - + tiledMapRenderer.loadMap(map, ""); } + PointOfInterest rootPoint; String oldMap; - - private void load(String targetMap) { + private void load(String targetMap) { map = new TemplateTmxMapLoader().load(Config.instance().getFilePath(targetMap)); - ((MapStage)stage).setPointOfInterest(WorldSave.getCurrentSave().getPointOfInterestChanges(rootPoint.getID()+targetMap)); + ((MapStage) stage).setPointOfInterest(WorldSave.getCurrentSave().getPointOfInterestChanges(rootPoint.getID() + targetMap)); stage.GetPlayer().setPosition(0, 0); WorldSave.getCurrentSave().getWorld().setSeed(rootPoint.getSeedOffset()); - tiledMapRenderer.loadMap(map,oldMap); - oldMap=targetMap; + tiledMapRenderer.loadMap(map, oldMap); + oldMap = targetMap; } public void loadNext(String targetMap) { - nextMap=targetMap; + nextMap = targetMap; } } diff --git a/forge-gui-mobile/src/forge/adventure/scene/UIScene.java b/forge-gui-mobile/src/forge/adventure/scene/UIScene.java index 7f5cd77c512..c0811a8f82c 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/UIScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/UIScene.java @@ -10,7 +10,6 @@ import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; 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; @@ -55,8 +54,7 @@ public class UIScene extends Scene{ } @Override public void resLoaded() { - Viewport viewport = new ScalingViewport(Scaling.stretch, GetIntendedWidth(), GetIntendedHeight()); - stage = new Stage(viewport){ + stage = new Stage(new ScalingViewport(Scaling.stretch, GetIntendedWidth(), GetIntendedHeight())) { @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 b15e6acdb71..6356fbccf44 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java @@ -40,7 +40,7 @@ public class GameHUD extends Stage { private final Image miniMapPlayer; private final Label lifePoints; private final Label money; - private Image miniMap, gamehud, mapborder, avatarborder; + private Image miniMap, gamehud, mapborder, avatarborder, blank; private TextButton deckActor, menuActor, statsActor; private boolean deckPressed = false; private boolean menuPressed = false; @@ -59,7 +59,9 @@ public class GameHUD extends Stage { instance = this; this.gameStage = gameStage; - ui = new UIActor(Config.instance().getFile(GuiBase.isAndroid() ? "ui/hud_mobile.json" : "ui/hud.json")); + ui = new UIActor(Config.instance().getFile("ui/hud_mobile.json")); + + blank = ui.findActor("blank"); miniMap = ui.findActor("map"); mapborder = ui.findActor("mapborder"); avatarborder = ui.findActor("avatarborder"); @@ -327,6 +329,37 @@ public class GameHUD extends Stage { miniMap.setDrawable(new TextureRegionDrawable(miniMapTexture)); avatar.setDrawable(new TextureRegionDrawable(Current.player().avatar())); + if (!Forge.isLandscapeMode()) { + miniMap.setWidth(160); + mapborder.setWidth(160); + miniMapPlayer.setWidth(10); + gamehud.setVisible(false); + blank.setScaleX(2); + blank.setX(388); + blank.setHeight(80); + blank.setY(miniMap.getY()); + avatar.setScaleX(2); + avatar.setX(388); + avatarborder.setX(388); + avatarborder.setY(miniMap.getY()); + avatarborder.setScaleX(2); + avatarborder.setHeight(80); + money.setX(418); + lifePoints.setX(418); + lifePoints.setY(avatar.getY()-15); + money.setY(avatar.getY()-25); + menuActor.setHeight(20); + menuActor.setWidth(60); + menuActor.setX(420); + statsActor.setHeight(20); + statsActor.setWidth(60); + statsActor.setX(420); + statsActor.setY(menuActor.getY() + 35); + deckActor.setHeight(20); + deckActor.setWidth(60); + deckActor.setX(420); + deckActor.setY(statsActor.getY() + 35); + } } private void openDeck() { @@ -340,11 +373,12 @@ public class GameHUD extends Stage { miniMap.setVisible(visible); mapborder.setVisible(visible); miniMapPlayer.setVisible(visible); + gamehud.setVisible(visible); avatarborder.setVisible(visible); avatar.setVisible(visible); lifePoints.setVisible(visible); money.setVisible(visible); - gamehud.setVisible(visible); + blank.setVisible(visible); if (visible) { deckActor.getColor().a = 1f; menuActor.getColor().a = 1f; @@ -354,5 +388,8 @@ public class GameHUD extends Stage { menuActor.getColor().a = 0.5f; statsActor.getColor().a = 0.5f; } + if (!Forge.isLandscapeMode()) { + gamehud.setVisible(false); + } } } diff --git a/forge-gui-mobile/src/forge/screens/SplashScreen.java b/forge-gui-mobile/src/forge/screens/SplashScreen.java index 43b9bc7be28..7e2d8b0ee27 100644 --- a/forge-gui-mobile/src/forge/screens/SplashScreen.java +++ b/forge-gui-mobile/src/forge/screens/SplashScreen.java @@ -213,10 +213,7 @@ public class SplashScreen extends FContainer { if (!init) { init = true; - String defaultText = Localizer.getInstance().getMessageorUseDefault("lblAdventureMode", "Adventure Mode"); - String advAndroid = Forge.isLandscapeMode() ? defaultText : "Adventure Mode (Landscape Only)"; - btnAdventure = new FButton(GuiBase.isAndroid() ? advAndroid : defaultText); - btnAdventure.setEnabled(Forge.isLandscapeMode()); + btnAdventure = new FButton(Localizer.getInstance().getMessageorUseDefault("lblAdventureMode", "Adventure Mode")); btnHome = new FButton(Localizer.getInstance().getMessageorUseDefault("lblClassicMode", "Classic Mode")); btnAdventure.setCommand(new FEvent.FEventHandler() { @Override @@ -252,7 +249,8 @@ public class SplashScreen extends FContainer { }); float btn_w = (w - 2 * padding); float btn_x = x + padding; - float btn_y = y + padding; + float multiplier = Forge.isLandscapeMode() ? 1 : 1.2f; + float btn_y = (y + padding) * multiplier; btnHome.setFont(FSkinFont.get(22)); btnAdventure.setFont(FSkinFont.get(22)); btnHome.setBounds(btn_x, btn_y, btn_w, height); diff --git a/forge-gui/res/adventure/Shandalar/ui/hud_mobile.json b/forge-gui/res/adventure/Shandalar/ui/hud_mobile.json index 232faff6fbe..4b4b87f676b 100644 --- a/forge-gui/res/adventure/Shandalar/ui/hud_mobile.json +++ b/forge-gui/res/adventure/Shandalar/ui/hud_mobile.json @@ -29,6 +29,15 @@ "x": 0, "y": 0 }, + { + "type": "Image", + "name": "blank", + "image": "ui/blank.png", + "width": 46, + "height": 46, + "x": 425, + "y": 10 + }, { "type": "Image", "name": "avatar", diff --git a/forge-gui/res/adventure/Shandalar/ui/new_game.json b/forge-gui/res/adventure/Shandalar/ui/new_game.json index 83dbc5cadb4..dc2778448d0 100644 --- a/forge-gui/res/adventure/Shandalar/ui/new_game.json +++ b/forge-gui/res/adventure/Shandalar/ui/new_game.json @@ -11,6 +11,7 @@ }, { "type": "Scroll", + "name" : "scroll", "style": "paper", "x": 10, "y": 10, @@ -19,6 +20,7 @@ }, { "type": "Label", + "name" : "titleL", "text": "Create a Character", "width": 128, "height": 32, @@ -28,51 +30,63 @@ }, { "type": "Label", + "name" : "avatarL", "text": "Avatar:", "width": 128, "height": 32, + "font" : "black", "x": 16, - "y": 64 + "y": 58 }, { "type": "Label", + "name" : "nameL", "text": "Name:", "width": 128, "height": 32, + "font" : "black", "x": 16, - "y": 96 + "y": 90 }, { "type": "Label", + "name" : "raceL", "text": "Race:", "width": 128, "height": 32, + "font" : "black", "x": 16, - "y": 128 + "y": 124 }, { "type": "Label", + "name" : "genderL", "text": "Gender:", "width": 128, "height": 32, + "font" : "black", "x": 16, - "y": 160 + "y": 154 }, { "type": "Label", + "name" : "difficultyL", "text": "Difficulty:", "width": 128, "height": 32, + "font" : "black", "x": 16, - "y": 192 + "y": 186 }, { "type": "Label", + "name" : "deckL", "text": "Deck:", "width": 128, "height": 32, + "font" : "black", "x": 16, - "y": 224 + "y": 218 }, { "type": "ImageButton", @@ -147,7 +161,7 @@ "width": 38, "height": 16, "x": 352, - "y": 240 + "y": 251 }, { "type": "TextButton", @@ -156,7 +170,7 @@ "width": 38, "height": 16, "x": 416, - "y": 240 + "y": 251 } ] } \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/ui/new_game_mobile.json b/forge-gui/res/adventure/Shandalar/ui/new_game_mobile.json index ade8e395f3b..e213e26e95d 100644 --- a/forge-gui/res/adventure/Shandalar/ui/new_game_mobile.json +++ b/forge-gui/res/adventure/Shandalar/ui/new_game_mobile.json @@ -11,6 +11,7 @@ }, { "type": "Scroll", + "name" : "scroll", "style": "paper", "x": 56, "y": 10, @@ -19,6 +20,7 @@ }, { "type": "Label", + "name" : "titleL", "text": "Create a Character", "width": 128, "height": 32, @@ -28,6 +30,7 @@ }, { "type": "Label", + "name" : "avatarL", "text": "Avatar:", "width": 128, "height": 32, @@ -37,6 +40,7 @@ }, { "type": "Label", + "name" : "nameL", "text": "Name:", "width": 128, "height": 32, @@ -46,6 +50,7 @@ }, { "type": "Label", + "name" : "raceL", "text": "Race:", "width": 128, "height": 32, @@ -55,6 +60,7 @@ }, { "type": "Label", + "name" : "genderL", "text": "Gender:", "width": 128, "height": 32, @@ -64,6 +70,7 @@ }, { "type": "Label", + "name" : "difficultyL", "text": "Difficulty:", "width": 128, "height": 32, @@ -73,6 +80,7 @@ }, { "type": "Label", + "name" : "deckL", "text": "Deck:", "width": 128, "height": 32, diff --git a/forge-gui/res/adventure/Shandalar/ui/save_load.json b/forge-gui/res/adventure/Shandalar/ui/save_load.json index a89b02dd8e7..ee615dd80d4 100644 --- a/forge-gui/res/adventure/Shandalar/ui/save_load.json +++ b/forge-gui/res/adventure/Shandalar/ui/save_load.json @@ -9,14 +9,6 @@ "width": 480, "height": 270 }, - { - "type": "Image", - "name": "preview", - "x": 364, - "y": 10, - "width": 96, - "height": 54 - }, { "type": "Scroll", "name": "saveSlots", @@ -25,6 +17,14 @@ "width": 344, "height": 235 }, + { + "type": "Image", + "name": "preview", + "x": 300, + "y": 18, + "width": 96, + "height": 54 + }, { "type": "TextButton", "name": "return", diff --git a/forge-gui/res/adventure/Shandalar/ui/statistic.json b/forge-gui/res/adventure/Shandalar/ui/statistic.json index 9cb8a782742..f1894e38e41 100644 --- a/forge-gui/res/adventure/Shandalar/ui/statistic.json +++ b/forge-gui/res/adventure/Shandalar/ui/statistic.json @@ -11,6 +11,7 @@ }, { "type": "Scroll", + "name": "stats", "style": "paper", "x": 300, "y": 18, @@ -35,6 +36,7 @@ }, { "type": "Image", + "name": "avatarBorder", "image": "ui/avatarhud.png", "x": 320, "y": 28, @@ -61,6 +63,7 @@ }, { "type": "Label", + "name": "wins", "text": "Win:", "x": 330, "y": 114, @@ -79,6 +82,7 @@ }, { "type": "Label", + "name": "loss", "text": "Loss:", "x": 330, "y": 134, @@ -97,6 +101,7 @@ }, { "type": "Label", + "name": "winloss", "text": "Win Loss Ratio:", "x": 330, "y": 154, @@ -115,6 +120,7 @@ }, { "type": "Image", + "name": "lifeIcon", "image": "ui/life.png", "x": 400, "y": 40, @@ -123,6 +129,7 @@ }, { "type": "Image", + "name": "goldIcon", "image": "ui/money.png", "x": 400, "y": 60, From d94dcd3256219bd3ab7b30ba7d71e81f9deba440 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Wed, 2 Mar 2022 09:56:36 +0800 Subject: [PATCH 2/3] update --- forge-gui-mobile/src/forge/Forge.java | 2 +- .../src/forge/adventure/scene/InnScene.java | 15 ++++++++++++++- .../src/forge/adventure/scene/RewardScene.java | 2 +- .../src/forge/adventure/stage/GameHUD.java | 2 ++ .../src/forge/adventure/stage/GameStage.java | 2 +- .../src/forge/adventure/util/RewardActor.java | 9 ++++++++- forge-gui/res/adventure/Shandalar/ui/inn.json | 3 +++ .../adventure/Shandalar/ui/start_menu_mobile.json | 2 +- 8 files changed, 31 insertions(+), 6 deletions(-) diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index 8ad8fe856fd..8e8a7cf69f2 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -600,7 +600,7 @@ public class Forge implements ApplicationListener { final Localizer localizer = Localizer.getInstance(); final List options = new ArrayList<>(); options.add(localizer.getMessage("lblExit")); - options.add(localizer.getMessageorUseDefault("lblAdventureMode", "Adventure Mode")); + options.add(localizer.getMessage("lblAdventure")); options.add(localizer.getMessage("lblCancel")); Callback callback = new Callback() { diff --git a/forge-gui-mobile/src/forge/adventure/scene/InnScene.java b/forge-gui-mobile/src/forge/adventure/scene/InnScene.java index 2d536ba4b10..f4db1dd57a4 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/InnScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/InnScene.java @@ -1,6 +1,7 @@ package forge.adventure.scene; import com.badlogic.gdx.Input; +import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import forge.Forge; import forge.adventure.stage.GameHUD; @@ -10,6 +11,8 @@ import forge.adventure.util.Current; * Scene for the Inn in towns */ public class InnScene extends UIScene { + TextButton heal, sell, leave; + Image healIcon, sellIcon, leaveIcon; public InnScene() { super("ui/inn.json"); @@ -50,7 +53,17 @@ public class InnScene extends UIScene { InnScene.this.sell(); } }); - TextButton doneButton = ui.findActor("done"); + leave = ui.findActor("done"); + sell = ui.findActor("sell"); + heal = ui.findActor("heal"); + leaveIcon = ui.findActor("leaveIcon"); + healIcon = ui.findActor("healIcon"); + sellIcon = ui.findActor("sellIcon"); + if (!Forge.isLandscapeMode()) { + sellIcon.setHeight(70); + healIcon.setHeight(70); + leaveIcon.setHeight(70); + } } private void sell() { diff --git a/forge-gui-mobile/src/forge/adventure/scene/RewardScene.java b/forge-gui-mobile/src/forge/adventure/scene/RewardScene.java index dfdc5a31af4..2d2590a86f4 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/RewardScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/RewardScene.java @@ -169,7 +169,7 @@ public class RewardScene extends UIScene { } } - cardHeight = bestCardHeight; + cardHeight = Forge.isLandscapeMode() ? bestCardHeight : bestCardHeight * 0.75f; cardWidth = bestCardHeight / CARD_WIDTH_TO_HEIGHT; yOff += (targetHeight - (cardHeight * numberOfRows)) / 2f; diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java index 6356fbccf44..121e5b539fe 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java @@ -86,6 +86,8 @@ public class GameHUD extends Stage { //create touchpad touchpad = new Touchpad(10, touchpadStyle); touchpad.setBounds(15, 15, TOUCHPAD_SCALE, TOUCHPAD_SCALE); + if (!Forge.isLandscapeMode()) + touchpad.getColor().a = 0.01f; //can't scale image on portrait.. touchpad.addListener(new ChangeListener() { @Override public void changed(ChangeEvent changeEvent, Actor actor) { diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameStage.java b/forge-gui-mobile/src/forge/adventure/stage/GameStage.java index 065731eae39..129775fd37a 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameStage.java @@ -232,7 +232,7 @@ public abstract class GameStage extends Stage { touchY = screenY; } - return false; + return true; } @Override diff --git a/forge-gui-mobile/src/forge/adventure/util/RewardActor.java b/forge-gui-mobile/src/forge/adventure/util/RewardActor.java index 6708e3836dc..bcaf723774b 100644 --- a/forge-gui-mobile/src/forge/adventure/util/RewardActor.java +++ b/forge-gui-mobile/src/forge/adventure/util/RewardActor.java @@ -291,15 +291,16 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb class HoldTooltip extends ActorGestureListener { Image tooltip_image; Table tooltip_actor; + float height; //Vector2 tmp = new Vector2(); public HoldTooltip(Image tooltip_image) { this.tooltip_image = tooltip_image; - tooltip_actor = new Table(); tooltip_actor.add(this.tooltip_image); tooltip_actor.align(Align.center); tooltip_actor.setSize(this.tooltip_image.getPrefWidth(), this.tooltip_image.getPrefHeight()); + this.height = tooltip_actor.getHeight(); getGestureDetector().setLongPressSeconds(0.1f); } @@ -311,6 +312,12 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb if (tooltip_actor.getX() + tooltip_actor.getWidth() > 480) tooltip_actor.setX(actor.getX() - tooltip_actor.getWidth()); tooltip_actor.setY(270 / 2 - tooltip_actor.getHeight() / 2); + if (!Forge.isLandscapeMode()) { + float h = height * 0.75f; + tooltip_actor.setX(480/2 - tooltip_actor.getWidth() /2); + tooltip_actor.setHeight(h); + tooltip_actor.setY(270/2 - h/2); + } //tooltip_actor.setX(480/2 - tooltip_actor.getWidth()/2); //480 hud width //tooltip_actor.setY(270/2-tooltip_actor.getHeight()/2); //270 hud height actor.getStage().addActor(tooltip_actor); diff --git a/forge-gui/res/adventure/Shandalar/ui/inn.json b/forge-gui/res/adventure/Shandalar/ui/inn.json index e3f29ce23e8..15a8d8eea91 100644 --- a/forge-gui/res/adventure/Shandalar/ui/inn.json +++ b/forge-gui/res/adventure/Shandalar/ui/inn.json @@ -11,6 +11,7 @@ }, { "type": "Image", + "name": "healIcon", "image": "ui/heal.png", "x": 60, "y": 85, @@ -28,6 +29,7 @@ }, { "type": "Image", + "name": "sellIcon", "image": "ui/sell.png", "x": 190, "y": 85, @@ -45,6 +47,7 @@ }, { "type": "Image", + "name": "leaveIcon", "image": "ui/leave.png", "x": 320, "y": 85, 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 ba320756c6a..6a32c7b116f 100644 --- a/forge-gui/res/adventure/Shandalar/ui/start_menu_mobile.json +++ b/forge-gui/res/adventure/Shandalar/ui/start_menu_mobile.json @@ -66,7 +66,7 @@ { "type": "TextButton", "name": "Switch", - "text": "Classic Mode", + "text": "Classic", "width": 75, "height": 30, "x": 245, From 8524229676d5d09b86ff18edfbdf41116cc93d6b Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Wed, 2 Mar 2022 10:23:53 +0800 Subject: [PATCH 3/3] initialize once to prevent bug switch game modes --- forge-gui-mobile/src/forge/adventure/scene/GameScene.java | 8 +++++--- .../src/forge/adventure/scene/TileMapScene.java | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/scene/GameScene.java b/forge-gui-mobile/src/forge/adventure/scene/GameScene.java index 3d62e00dac9..f2a39c16d6b 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/GameScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/GameScene.java @@ -11,7 +11,7 @@ import forge.adventure.stage.WorldStage; * does render the WorldStage and HUD */ public class GameScene extends HudScene { - private float cameraWidth, cameraHeight; + private float cameraWidth = 0f, cameraHeight = 0f; public GameScene() { super(WorldStage.getInstance()); @@ -44,8 +44,10 @@ public class GameScene extends HudScene { @Override public void resLoaded() { //set initial camera width and height - cameraWidth = stage.getCamera().viewportWidth; - cameraHeight = stage.getCamera().viewportHeight; + if (cameraWidth == 0f) + cameraWidth = stage.getCamera().viewportWidth; + if (cameraHeight == 0f) + cameraHeight = stage.getCamera().viewportHeight; } @Override diff --git a/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java b/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java index 25815500018..157c74b0673 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java @@ -20,7 +20,7 @@ public class TileMapScene extends HudScene { TiledMap map; PointOfInterestMapRenderer tiledMapRenderer; private String nextMap; - private float cameraWidth, cameraHeight; + private float cameraWidth = 0f, cameraHeight = 0f; public TileMapScene() { super(MapStage.getInstance()); @@ -67,8 +67,10 @@ public class TileMapScene extends HudScene { @Override public void resLoaded() { //set initial camera width and height - cameraWidth = stage.getCamera().viewportWidth; - cameraHeight = stage.getCamera().viewportHeight; + if (cameraWidth == 0f) + cameraWidth = stage.getCamera().viewportWidth; + if (cameraHeight == 0f) + cameraHeight = stage.getCamera().viewportHeight; super.resLoaded(); }