Merge branch 'master' into 'master'

Adventure portrait mode

See merge request core-developers/forge!6325
This commit is contained in:
Anthony Calosa
2022-03-02 02:56:02 +00:00
23 changed files with 543 additions and 154 deletions

View File

@@ -598,11 +598,9 @@ public class Forge implements ApplicationListener {
} //don't allow exiting multiple times } //don't allow exiting multiple times
final Localizer localizer = Localizer.getInstance(); final Localizer localizer = Localizer.getInstance();
final String title = Forge.isLandscapeMode() && GuiBase.isAndroid() ? "" : localizer.getMessage("lblExitForge");
final List<String> options = new ArrayList<>(); final List<String> options = new ArrayList<>();
options.add(localizer.getMessage("lblExit")); options.add(localizer.getMessage("lblExit"));
if (Forge.isLandscapeMode() && GuiBase.isAndroid()) options.add(localizer.getMessage("lblAdventure"));
options.add(localizer.getMessageorUseDefault("lblAdventureMode", "Adventure Mode"));
options.add(localizer.getMessage("lblCancel")); options.add(localizer.getMessage("lblCancel"));
Callback<Integer> callback = new Callback<Integer>() { Callback<Integer> callback = new Callback<Integer>() {
@@ -611,7 +609,7 @@ public class Forge implements ApplicationListener {
if (result == 0) { if (result == 0) {
exited = true; exited = true;
exitAnimation(false); exitAnimation(false);
} else if (result == 1 && Forge.isLandscapeMode() && GuiBase.isAndroid()) { } else if (result == 1) {
switchToAdventure(); switchToAdventure();
} }
} }
@@ -620,7 +618,7 @@ public class Forge implements ApplicationListener {
if (silent) { if (silent) {
callback.run(0); callback.run(0);
} else { } else {
FOptionPane.showOptionDialog(localizer.getMessage("lblAreYouSureYouWishExitForge"), title, FOptionPane.showOptionDialog(localizer.getMessage("lblAreYouSureYouWishExitForge"), "",
FOptionPane.QUESTION_ICON, options, 0, callback); FOptionPane.QUESTION_ICON, options, 0, callback);
} }
} }
@@ -725,7 +723,7 @@ public class Forge implements ApplicationListener {
openAdventure(); openAdventure();
exited = false; exited = false;
} }
}, ScreenUtils.getFrameBufferTexture(), false, false)); }, null, false, true));
} }
public static void setTransitionScreen(TransitionScreen screen) { public static void setTransitionScreen(TransitionScreen screen) {

View File

@@ -16,7 +16,6 @@ import forge.Forge;
import forge.adventure.player.AdventurePlayer; import forge.adventure.player.AdventurePlayer;
import forge.adventure.util.Controls; import forge.adventure.util.Controls;
import forge.adventure.util.Current; import forge.adventure.util.Current;
import forge.gui.GuiBase;
public class DeckSelectScene extends UIScene { public class DeckSelectScene extends UIScene {
private final IntMap<TextButton> buttons = new IntMap<>(); private final IntMap<TextButton> buttons = new IntMap<>();
@@ -25,10 +24,11 @@ public class DeckSelectScene extends UIScene {
TextField textInput; TextField textInput;
Table layout; Table layout;
Label header; Label header;
TextButton back, edit, rename;
int currentSlot = 0; int currentSlot = 0;
public DeckSelectScene() { 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) { private TextButton addDeckSlot(String name, int i) {
@@ -105,6 +105,25 @@ public class DeckSelectScene extends UIScene {
dialog = Controls.newDialog("Save"); dialog = Controls.newDialog("Save");
textInput = Controls.newTextField(""); textInput = Controls.newTextField("");
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().add(Controls.newLabel("Name your new save file.")).colspan(2);
dialog.getButtonTable().row(); dialog.getButtonTable().row();
dialog.getButtonTable().add(Controls.newLabel("Name:")).align(Align.left); dialog.getButtonTable().add(Controls.newLabel("Name:")).align(Align.left);
@@ -122,7 +141,10 @@ public class DeckSelectScene extends UIScene {
dialog.hide(); dialog.hide();
} }
})).align(Align.left); })).align(Align.left);
}
back = ui.findActor("return");
edit = ui.findActor("edit");
rename = ui.findActor("rename");
ui.onButtonPress("return", new Runnable() { ui.onButtonPress("return", new Runnable() {
@Override @Override
public void run() { public void run() {
@@ -147,6 +169,28 @@ public class DeckSelectScene extends UIScene {
ScrollPane scrollPane = ui.findActor("deckSlots"); ScrollPane scrollPane = ui.findActor("deckSlots");
scrollPane.setActor(layout); 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() { private void rename() {

View File

@@ -2,6 +2,7 @@ package forge.adventure.scene;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import forge.Forge; import forge.Forge;
import forge.adventure.stage.WorldStage; import forge.adventure.stage.WorldStage;
@@ -10,6 +11,7 @@ import forge.adventure.stage.WorldStage;
* does render the WorldStage and HUD * does render the WorldStage and HUD
*/ */
public class GameScene extends HudScene { public class GameScene extends HudScene {
private float cameraWidth = 0f, cameraHeight = 0f;
public GameScene() { public GameScene() {
super(WorldStage.getInstance()); super(WorldStage.getInstance());
@@ -28,6 +30,7 @@ public class GameScene extends HudScene {
} }
@Override @Override
public void render() { public void render() {
@@ -40,14 +43,23 @@ public class GameScene extends HudScene {
@Override @Override
public void resLoaded() { public void resLoaded() {
//set initial camera width and height
if (cameraWidth == 0f)
cameraWidth = stage.getCamera().viewportWidth;
if (cameraHeight == 0f)
cameraHeight = stage.getCamera().viewportHeight;
} }
@Override @Override
public void enter() { public void enter() {
Forge.clearTransitionScreen(); Forge.clearTransitionScreen();
Forge.clearCurrentScreen(); 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(); super.enter();
} }

View File

@@ -1,6 +1,7 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.Input; import com.badlogic.gdx.Input;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import forge.Forge; import forge.Forge;
import forge.adventure.stage.GameHUD; import forge.adventure.stage.GameHUD;
@@ -10,6 +11,8 @@ import forge.adventure.util.Current;
* Scene for the Inn in towns * Scene for the Inn in towns
*/ */
public class InnScene extends UIScene { public class InnScene extends UIScene {
TextButton heal, sell, leave;
Image healIcon, sellIcon, leaveIcon;
public InnScene() { public InnScene() {
super("ui/inn.json"); super("ui/inn.json");
@@ -50,7 +53,17 @@ public class InnScene extends UIScene {
InnScene.this.sell(); 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() { private void sell() {

View File

@@ -5,6 +5,10 @@ import com.badlogic.gdx.Input;
import com.badlogic.gdx.scenes.scene2d.Event; import com.badlogic.gdx.scenes.scene2d.Event;
import com.badlogic.gdx.scenes.scene2d.EventListener; import com.badlogic.gdx.scenes.scene2d.EventListener;
import com.badlogic.gdx.scenes.scene2d.ui.Image; 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.ui.TextField;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
@@ -15,7 +19,6 @@ import forge.adventure.util.Config;
import forge.adventure.util.Selector; import forge.adventure.util.Selector;
import forge.adventure.world.WorldSave; import forge.adventure.world.WorldSave;
import forge.deck.Deck; import forge.deck.Deck;
import forge.gui.GuiBase;
import forge.localinstance.properties.ForgePreferences; import forge.localinstance.properties.ForgePreferences;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil; import forge.player.GamePlayerUtil;
@@ -36,9 +39,13 @@ public class NewGameScene extends UIScene {
private Selector deck; private Selector deck;
private Selector gender; private Selector gender;
private Selector difficulty; 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() { 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() { 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(); updateAvatar();
} }

View File

@@ -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.Label;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.ui.Table; 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.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
import forge.Forge; import forge.Forge;
@@ -24,12 +25,13 @@ import java.util.Map;
public class PlayerStatisticScene extends UIScene { public class PlayerStatisticScene extends UIScene {
Image avatar; Image avatar, avatarBorder, lifeIcon, goldIcon;
Label money, life; Label money, life;
Label totalWins; Label wins, totalWins;
Label totalLoss; Label loss, totalLoss;
Label lossWinRatio; Label winloss, lossWinRatio;
Label playerName; Label playerName;
TextButton back;
private Table enemiesGroup; private Table enemiesGroup;
public PlayerStatisticScene() { public PlayerStatisticScene() {
@@ -106,6 +108,8 @@ public class PlayerStatisticScene extends UIScene {
Image enemyImage = new Image(); Image enemyImage = new Image();
enemyImage.setDrawable(new TextureRegionDrawable(new EnemySprite(data).getAvatar())); enemyImage.setDrawable(new TextureRegionDrawable(new EnemySprite(data).getAvatar()));
enemyImage.setSize(8, 8); enemyImage.setSize(8, 8);
if (!Forge.isLandscapeMode())
enemyImage.setScaleX(2);
enemiesGroup.add(enemyImage).align(Align.center).space(3, 10, 3, 10); 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); 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); 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 @Override
@@ -130,13 +182,19 @@ public class PlayerStatisticScene extends UIScene {
} }
}); });
avatar = ui.findActor("avatar"); avatar = ui.findActor("avatar");
avatarBorder = ui.findActor("avatarBorder");
playerName = ui.findActor("playerName"); playerName = ui.findActor("playerName");
life = ui.findActor("lifePoints"); life = ui.findActor("lifePoints");
money = ui.findActor("money"); money = ui.findActor("money");
lifeIcon = ui.findActor("lifeIcon");
goldIcon = ui.findActor("goldIcon");
wins = ui.findActor("wins");
totalWins = ui.findActor("totalWins"); totalWins = ui.findActor("totalWins");
loss = ui.findActor("loss");
totalLoss = ui.findActor("totalLoss"); totalLoss = ui.findActor("totalLoss");
winloss = ui.findActor("winloss");
lossWinRatio = ui.findActor("lossWinRatio"); lossWinRatio = ui.findActor("lossWinRatio");
back = ui.findActor("return");
ScrollPane scrollPane = ui.findActor("enemies"); ScrollPane scrollPane = ui.findActor("enemies");
scrollPane.setActor(enemiesGroup); scrollPane.setActor(enemiesGroup);
enemiesGroup.setFillParent(true); enemiesGroup.setFillParent(true);

View File

@@ -18,7 +18,6 @@ import forge.adventure.util.Reward;
import forge.adventure.util.RewardActor; import forge.adventure.util.RewardActor;
import forge.adventure.world.WorldSave; import forge.adventure.world.WorldSave;
import forge.assets.ImageCache; import forge.assets.ImageCache;
import forge.gui.GuiBase;
/** /**
* Displays the rewards of a fight or a treasure * Displays the rewards of a fight or a treasure
@@ -34,12 +33,12 @@ public class RewardScene extends UIScene {
Type type; Type type;
Array<Actor> generated = new Array<>(); Array<Actor> generated = new Array<>();
static public final float CARD_WIDTH = 550f; static public final float CARD_WIDTH = Forge.isLandscapeMode() ? 550f : 200f;
static public final float CARD_HEIGHT = 400f; static public final float CARD_HEIGHT = Forge.isLandscapeMode() ? 400f : 300f;
static public final float CARD_WIDTH_TO_HEIGHT = CARD_WIDTH / CARD_HEIGHT; static public final float CARD_WIDTH_TO_HEIGHT = CARD_WIDTH / CARD_HEIGHT;
public RewardScene() { 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; boolean doneClicked = false;
@@ -145,10 +144,10 @@ public class RewardScene extends UIScene {
switch (type) { switch (type) {
case Shop: case Shop:
doneButton.setText("Return"); doneButton.setText("Leave");
break; break;
case Loot: case Loot:
doneButton.setText("Take all"); doneButton.setText("Done");
break; break;
} }
for (int h = 1; h < targetHeight; h++) { for (int h = 1; h < targetHeight; h++) {
@@ -159,6 +158,7 @@ public class RewardScene extends UIScene {
//cardHeight=targetHeight/i; //cardHeight=targetHeight/i;
cardWidth = h / CARD_WIDTH_TO_HEIGHT; cardWidth = h / CARD_WIDTH_TO_HEIGHT;
newArea = newRewards.size * cardWidth * cardHeight; newArea = newRewards.size * cardWidth * cardHeight;
int rows = (int) (targetHeight / cardHeight); int rows = (int) (targetHeight / cardHeight);
int cols = (int) Math.ceil(newRewards.size / (double) rows); int cols = (int) Math.ceil(newRewards.size / (double) rows);
if (newArea > oldCardArea && newArea <= targetArea && rows * cardHeight < targetHeight && cols * cardWidth < targetWidth) { if (newArea > oldCardArea && newArea <= targetArea && rows * cardHeight < targetHeight && cols * cardWidth < targetWidth) {
@@ -169,11 +169,12 @@ public class RewardScene extends UIScene {
} }
} }
cardHeight = bestCardHeight; cardHeight = Forge.isLandscapeMode() ? bestCardHeight : bestCardHeight * 0.75f;
cardWidth = bestCardHeight / CARD_WIDTH_TO_HEIGHT; cardWidth = bestCardHeight / CARD_WIDTH_TO_HEIGHT;
yOff += (targetHeight - (cardHeight * numberOfRows)) / 2f; yOff += (targetHeight - (cardHeight * numberOfRows)) / 2f;
xOff += (targetWidth - (cardWidth * numberOfColumns)) / 2f; xOff += (targetWidth - (cardWidth * numberOfColumns)) / 2f;
float spacing = 2; float spacing = 2;
int i = 0; int i = 0;
for (Reward reward : new Array.ArrayIterator<>(newRewards)) { for (Reward reward : new Array.ArrayIterator<>(newRewards)) {
@@ -245,7 +246,7 @@ public class RewardScene extends UIScene {
setX(actor.getX()); setX(actor.getX());
setY(actor.getY() - getHeight()); setY(actor.getY() - getHeight());
price = CardUtil.getCardPrice(actor.getReward().getCard()); price = CardUtil.getCardPrice(actor.getReward().getCard());
setText("Buy for " + price); setText("$ " + price);
addListener(new ClickListener() { addListener(new ClickListener() {
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {

View File

@@ -20,7 +20,6 @@ import forge.Forge;
import forge.adventure.util.Controls; import forge.adventure.util.Controls;
import forge.adventure.world.WorldSave; import forge.adventure.world.WorldSave;
import forge.adventure.world.WorldSaveHeader; import forge.adventure.world.WorldSaveHeader;
import forge.gui.GuiBase;
import forge.screens.TransitionScreen; import forge.screens.TransitionScreen;
import java.io.File; import java.io.File;
@@ -44,12 +43,12 @@ public class SaveLoadScene extends UIScene {
int currentSlot = -3; int currentSlot = -3;
Image previewImage; Image previewImage;
Image previewBorder; Image previewBorder;
TextButton saveLoadButton; TextButton saveLoadButton, back;
TextButton quickSave; TextButton quickSave;
TextButton autoSave; TextButton autoSave;
public SaveLoadScene() { 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,6 +206,25 @@ public class SaveLoadScene extends UIScene {
stage.addActor(layout); stage.addActor(layout);
dialog = Controls.newDialog("Save"); dialog = Controls.newDialog("Save");
textInput = Controls.newTextField(""); textInput = Controls.newTextField("");
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().add(Controls.newLabel("Name your new save file.")).colspan(2);
dialog.getButtonTable().row(); dialog.getButtonTable().row();
dialog.getButtonTable().add(Controls.newLabel("Name:")).align(Align.left); dialog.getButtonTable().add(Controls.newLabel("Name:")).align(Align.left);
@@ -223,8 +241,8 @@ public class SaveLoadScene extends UIScene {
public void run() { public void run() {
SaveLoadScene.this.saveAbort(); SaveLoadScene.this.saveAbort();
} }
})).align(Align.left); })).align(Align.right);
}
previewImage = ui.findActor("preview"); previewImage = ui.findActor("preview");
previewBorder = ui.findActor("preview_border"); previewBorder = ui.findActor("preview_border");
header = Controls.newLabel("Save"); header = Controls.newLabel("Save");
@@ -244,6 +262,7 @@ public class SaveLoadScene extends UIScene {
SaveLoadScene.this.loadSave(); SaveLoadScene.this.loadSave();
} }
}); });
back = ui.findActor("return");
ui.onButtonPress("return", new Runnable() { ui.onButtonPress("return", new Runnable() {
@Override @Override
public void run() { public void run() {
@@ -255,5 +274,25 @@ public class SaveLoadScene extends UIScene {
ScrollPane scrollPane = ui.findActor("saveSlots"); ScrollPane scrollPane = ui.findActor("saveSlots");
scrollPane.setActor(layout); 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());
}
} }
} }

View File

@@ -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.SelectBox;
import com.badlogic.gdx.scenes.scene2d.ui.Slider; import com.badlogic.gdx.scenes.scene2d.ui.Slider;
import com.badlogic.gdx.scenes.scene2d.ui.Table; 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.TextField;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
@@ -36,9 +37,10 @@ public class SettingsScene extends UIScene {
Stage stage; Stage stage;
Texture Background; Texture Background;
private Table settingGroup; private Table settingGroup;
TextButton back;
public SettingsScene() { 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) { private void addCheckBox(String name, ForgePreferences.FPref pref) {
CheckBox box = Controls.newCheckBox(""); CheckBox box = Controls.newCheckBox("");
if (GuiBase.isAndroid()) { if (GuiBase.isAndroid()||!Forge.isLandscapeMode()) {
box.getImage().setScaling(Scaling.fill); box.getImage().setScaling(Scaling.stretch);
box.getImageCell().size(12, 12); float width = !Forge.isLandscapeMode() ? 24 : 12;
box.getImageCell().size(width, 12);
box.getImageCell().pad(2, 2, 2, 10); box.getImageCell().pad(2, 2, 2, 10);
} }
box.setChecked(Preference.getPrefBoolean(pref)); box.setChecked(Preference.getPrefBoolean(pref));
@@ -130,9 +133,10 @@ public class SettingsScene extends UIScene {
private void addSettingField(String name, boolean value, ChangeListener change) { private void addSettingField(String name, boolean value, ChangeListener change) {
CheckBox box = Controls.newCheckBox(""); CheckBox box = Controls.newCheckBox("");
if (GuiBase.isAndroid()) { if (GuiBase.isAndroid()||!Forge.isLandscapeMode()) {
box.getImage().setScaling(Scaling.fill); box.getImage().setScaling(Scaling.stretch);
box.getImageCell().size(12, 12); float width = !Forge.isLandscapeMode() ? 24 : 12;
box.getImageCell().size(width, 12);
box.getImageCell().pad(2, 2, 2, 10); box.getImageCell().pad(2, 2, 2, 10);
} }
box.setChecked(value); box.setChecked(value);
@@ -156,9 +160,16 @@ public class SettingsScene extends UIScene {
void addLabel(String name) { void addLabel(String name) {
Label label = new Label(name, Controls.GetSkin().get("white", Label.LabelStyle.class)); Label label = new Label(name, Controls.GetSkin().get("white", Label.LabelStyle.class));
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.row().space(5);
settingGroup.add(label).align(Align.left).pad(2, 2, 2, 5); settingGroup.add(label).align(Align.left).pad(2, 2, 2, 5);
} }
}
@Override @Override
public void resLoaded() { public void resLoaded() {
@@ -178,6 +189,9 @@ public class SettingsScene extends UIScene {
} }
}); });
addLabel("Plane"); addLabel("Plane");
if (!Forge.isLandscapeMode()) {
plane.getStyle().listStyle.font.getData().setScale(2, 1);
}
settingGroup.add(plane).align(Align.right).pad(2); settingGroup.add(plane).align(Align.right).pad(2);
if (!GuiBase.isAndroid()) { if (!GuiBase.isAndroid()) {
@@ -252,7 +266,7 @@ public class SettingsScene extends UIScene {
settingGroup.row(); settingGroup.row();
back = ui.findActor("return");
ui.onButtonPress("return", new Runnable() { ui.onButtonPress("return", new Runnable() {
@Override @Override
public void run() { public void run() {
@@ -262,6 +276,18 @@ public class SettingsScene extends UIScene {
ScrollPane scrollPane = ui.findActor("settings"); ScrollPane scrollPane = ui.findActor("settings");
scrollPane.setActor(settingGroup); 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 @Override

View File

@@ -2,23 +2,21 @@ package forge.adventure.scene;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input; 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.Forge;
import forge.adventure.stage.GameHUD; import forge.adventure.stage.GameHUD;
import forge.adventure.stage.MapStage; import forge.adventure.stage.MapStage;
import forge.adventure.world.WorldSave; import forge.adventure.world.WorldSave;
import forge.gui.GuiBase;
/** /**
* First scene after the splash screen * First scene after the splash screen
*/ */
public class StartScene extends UIScene { public class StartScene extends UIScene {
Actor saveButton; TextButton saveButton, resumeButton, newGameButton, loadButtton, settingsButton, exitButton, switchButton;
Actor resumeButton;
public StartScene() { 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(); StartScene.this.Load();
} }
}); });
ui.onButtonPress("Start", new Runnable() {
@Override
public void run() {
StartScene.this.NewGame();
}
});
ui.onButtonPress("Save", new Runnable() { ui.onButtonPress("Save", new Runnable() {
@Override @Override
public void run() { public void run() {
@@ -118,9 +110,6 @@ public class StartScene extends UIScene {
StartScene.this.Resume(); StartScene.this.Resume();
} }
}); });
saveButton = ui.findActor("Save");
resumeButton = ui.findActor("Resume");
ui.onButtonPress("Settings", new Runnable() { ui.onButtonPress("Settings", new Runnable() {
@Override @Override
public void run() { public void run() {
@@ -133,14 +122,45 @@ public class StartScene extends UIScene {
StartScene.this.Exit(); StartScene.this.Exit();
} }
}); });
if (GuiBase.isAndroid()) { 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() { ui.onButtonPress("Switch", new Runnable() {
@Override @Override
public void run() { public void run() {
Forge.switchToClassic(); Forge.switchToClassic();
} }
}); });
}
saveButton.setVisible(false); saveButton.setVisible(false);
resumeButton.setVisible(false); resumeButton.setVisible(false);
} }

View File

@@ -2,7 +2,9 @@ package forge.adventure.scene;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.maps.tiled.TiledMap; import com.badlogic.gdx.maps.tiled.TiledMap;
import forge.Forge;
import forge.adventure.pointofintrest.PointOfInterest; import forge.adventure.pointofintrest.PointOfInterest;
import forge.adventure.stage.MapStage; import forge.adventure.stage.MapStage;
import forge.adventure.stage.PointOfInterestMapRenderer; import forge.adventure.stage.PointOfInterestMapRenderer;
@@ -13,22 +15,19 @@ import forge.adventure.world.WorldSave;
/** /**
* Scene that will render tiled maps. * Scene that will render tiled maps.
* Used for towns dungeons etc * Used for towns dungeons etc
*
*/ */
public class TileMapScene extends HudScene { public class TileMapScene extends HudScene {
TiledMap map; TiledMap map;
PointOfInterestMapRenderer tiledMapRenderer; PointOfInterestMapRenderer tiledMapRenderer;
private String nextMap; private String nextMap;
private float cameraWidth = 0f, cameraHeight = 0f;
public TileMapScene() { public TileMapScene() {
super(MapStage.getInstance()); super(MapStage.getInstance());
tiledMapRenderer = new PointOfInterestMapRenderer((MapStage) stage); tiledMapRenderer = new PointOfInterestMapRenderer((MapStage) stage);
} }
public MapStage currentMap() public MapStage currentMap() {
{
return (MapStage) stage; return (MapStage) stage;
} }
@@ -39,20 +38,18 @@ public class TileMapScene extends HudScene {
} }
@Override @Override
public void act(float delta) public void act(float delta) {
{
if (map == null) if (map == null)
return; return;
if(nextMap!=null) if (nextMap != null) {
{
load(nextMap); load(nextMap);
nextMap = null; nextMap = null;
} }
stage.act(Gdx.graphics.getDeltaTime()); stage.act(Gdx.graphics.getDeltaTime());
} }
@Override @Override
public void render() public void render() {
{
if (map == null) if (map == null)
return; return;
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
@@ -60,11 +57,33 @@ public class TileMapScene extends HudScene {
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); 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(); tiledMapRenderer.render();
hud.draw(); hud.draw();
} }
@Override
public void resLoaded() {
//set initial camera width and height
if (cameraWidth == 0f)
cameraWidth = stage.getCamera().viewportWidth;
if (cameraHeight == 0f)
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) { public void load(PointOfInterest point) {
rootPoint = point; rootPoint = point;
@@ -74,13 +93,12 @@ public class TileMapScene extends HudScene {
stage.GetPlayer().setPosition(0, 0); stage.GetPlayer().setPosition(0, 0);
WorldSave.getCurrentSave().getWorld().setSeed(point.getSeedOffset()); WorldSave.getCurrentSave().getWorld().setSeed(point.getSeedOffset());
tiledMapRenderer.loadMap(map, ""); tiledMapRenderer.loadMap(map, "");
} }
PointOfInterest rootPoint; PointOfInterest rootPoint;
String oldMap; String oldMap;
private void load(String targetMap) { private void load(String targetMap) {
map = new TemplateTmxMapLoader().load(Config.instance().getFilePath(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); stage.GetPlayer().setPosition(0, 0);

View File

@@ -10,7 +10,6 @@ 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.Scaling; import com.badlogic.gdx.utils.Scaling;
import com.badlogic.gdx.utils.viewport.ScalingViewport; 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;
@@ -55,8 +54,7 @@ public class UIScene extends Scene{
} }
@Override @Override
public void resLoaded() { public void resLoaded() {
Viewport viewport = new ScalingViewport(Scaling.stretch, GetIntendedWidth(), GetIntendedHeight()); stage = new Stage(new ScalingViewport(Scaling.stretch, GetIntendedWidth(), GetIntendedHeight())) {
stage = new Stage(viewport){
@Override @Override
public boolean keyUp(int keycode) { public boolean keyUp(int keycode) {

View File

@@ -40,7 +40,7 @@ public class GameHUD extends Stage {
private final Image miniMapPlayer; private final Image miniMapPlayer;
private final Label lifePoints; private final Label lifePoints;
private final Label money; private final Label money;
private Image miniMap, gamehud, mapborder, avatarborder; private Image miniMap, gamehud, mapborder, avatarborder, blank;
private TextButton deckActor, menuActor, statsActor; private TextButton deckActor, menuActor, statsActor;
private boolean deckPressed = false; private boolean deckPressed = false;
private boolean menuPressed = false; private boolean menuPressed = false;
@@ -59,7 +59,9 @@ public class GameHUD extends Stage {
instance = this; instance = this;
this.gameStage = gameStage; 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"); miniMap = ui.findActor("map");
mapborder = ui.findActor("mapborder"); mapborder = ui.findActor("mapborder");
avatarborder = ui.findActor("avatarborder"); avatarborder = ui.findActor("avatarborder");
@@ -84,6 +86,8 @@ public class GameHUD extends Stage {
//create touchpad //create touchpad
touchpad = new Touchpad(10, touchpadStyle); touchpad = new Touchpad(10, touchpadStyle);
touchpad.setBounds(15, 15, TOUCHPAD_SCALE, TOUCHPAD_SCALE); 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() { touchpad.addListener(new ChangeListener() {
@Override @Override
public void changed(ChangeEvent changeEvent, Actor actor) { public void changed(ChangeEvent changeEvent, Actor actor) {
@@ -327,6 +331,37 @@ public class GameHUD extends Stage {
miniMap.setDrawable(new TextureRegionDrawable(miniMapTexture)); miniMap.setDrawable(new TextureRegionDrawable(miniMapTexture));
avatar.setDrawable(new TextureRegionDrawable(Current.player().avatar())); 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() { private void openDeck() {
@@ -340,11 +375,12 @@ public class GameHUD extends Stage {
miniMap.setVisible(visible); miniMap.setVisible(visible);
mapborder.setVisible(visible); mapborder.setVisible(visible);
miniMapPlayer.setVisible(visible); miniMapPlayer.setVisible(visible);
gamehud.setVisible(visible);
avatarborder.setVisible(visible); avatarborder.setVisible(visible);
avatar.setVisible(visible); avatar.setVisible(visible);
lifePoints.setVisible(visible); lifePoints.setVisible(visible);
money.setVisible(visible); money.setVisible(visible);
gamehud.setVisible(visible); blank.setVisible(visible);
if (visible) { if (visible) {
deckActor.getColor().a = 1f; deckActor.getColor().a = 1f;
menuActor.getColor().a = 1f; menuActor.getColor().a = 1f;
@@ -354,5 +390,8 @@ public class GameHUD extends Stage {
menuActor.getColor().a = 0.5f; menuActor.getColor().a = 0.5f;
statsActor.getColor().a = 0.5f; statsActor.getColor().a = 0.5f;
} }
if (!Forge.isLandscapeMode()) {
gamehud.setVisible(false);
}
} }
} }

View File

@@ -232,7 +232,7 @@ public abstract class GameStage extends Stage {
touchY = screenY; touchY = screenY;
} }
return false; return true;
} }
@Override @Override

View File

@@ -291,15 +291,16 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
class HoldTooltip extends ActorGestureListener { class HoldTooltip extends ActorGestureListener {
Image tooltip_image; Image tooltip_image;
Table tooltip_actor; Table tooltip_actor;
float height;
//Vector2 tmp = new Vector2(); //Vector2 tmp = new Vector2();
public HoldTooltip(Image tooltip_image) { public HoldTooltip(Image tooltip_image) {
this.tooltip_image = tooltip_image; this.tooltip_image = tooltip_image;
tooltip_actor = new Table(); tooltip_actor = new Table();
tooltip_actor.add(this.tooltip_image); tooltip_actor.add(this.tooltip_image);
tooltip_actor.align(Align.center); tooltip_actor.align(Align.center);
tooltip_actor.setSize(this.tooltip_image.getPrefWidth(), this.tooltip_image.getPrefHeight()); tooltip_actor.setSize(this.tooltip_image.getPrefWidth(), this.tooltip_image.getPrefHeight());
this.height = tooltip_actor.getHeight();
getGestureDetector().setLongPressSeconds(0.1f); 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) if (tooltip_actor.getX() + tooltip_actor.getWidth() > 480)
tooltip_actor.setX(actor.getX() - tooltip_actor.getWidth()); tooltip_actor.setX(actor.getX() - tooltip_actor.getWidth());
tooltip_actor.setY(270 / 2 - tooltip_actor.getHeight() / 2); 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.setX(480/2 - tooltip_actor.getWidth()/2); //480 hud width
//tooltip_actor.setY(270/2-tooltip_actor.getHeight()/2); //270 hud height //tooltip_actor.setY(270/2-tooltip_actor.getHeight()/2); //270 hud height
actor.getStage().addActor(tooltip_actor); actor.getStage().addActor(tooltip_actor);

View File

@@ -213,10 +213,7 @@ public class SplashScreen extends FContainer {
if (!init) { if (!init) {
init = true; init = true;
String defaultText = Localizer.getInstance().getMessageorUseDefault("lblAdventureMode", "Adventure Mode"); btnAdventure = new FButton(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());
btnHome = new FButton(Localizer.getInstance().getMessageorUseDefault("lblClassicMode", "Classic Mode")); btnHome = new FButton(Localizer.getInstance().getMessageorUseDefault("lblClassicMode", "Classic Mode"));
btnAdventure.setCommand(new FEvent.FEventHandler() { btnAdventure.setCommand(new FEvent.FEventHandler() {
@Override @Override
@@ -252,7 +249,8 @@ public class SplashScreen extends FContainer {
}); });
float btn_w = (w - 2 * padding); float btn_w = (w - 2 * padding);
float btn_x = x + 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)); btnHome.setFont(FSkinFont.get(22));
btnAdventure.setFont(FSkinFont.get(22)); btnAdventure.setFont(FSkinFont.get(22));
btnHome.setBounds(btn_x, btn_y, btn_w, height); btnHome.setBounds(btn_x, btn_y, btn_w, height);

View File

@@ -29,6 +29,15 @@
"x": 0, "x": 0,
"y": 0 "y": 0
}, },
{
"type": "Image",
"name": "blank",
"image": "ui/blank.png",
"width": 46,
"height": 46,
"x": 425,
"y": 10
},
{ {
"type": "Image", "type": "Image",
"name": "avatar", "name": "avatar",

View File

@@ -11,6 +11,7 @@
}, },
{ {
"type": "Image", "type": "Image",
"name": "healIcon",
"image": "ui/heal.png", "image": "ui/heal.png",
"x": 60, "x": 60,
"y": 85, "y": 85,
@@ -28,6 +29,7 @@
}, },
{ {
"type": "Image", "type": "Image",
"name": "sellIcon",
"image": "ui/sell.png", "image": "ui/sell.png",
"x": 190, "x": 190,
"y": 85, "y": 85,
@@ -45,6 +47,7 @@
}, },
{ {
"type": "Image", "type": "Image",
"name": "leaveIcon",
"image": "ui/leave.png", "image": "ui/leave.png",
"x": 320, "x": 320,
"y": 85, "y": 85,

View File

@@ -11,6 +11,7 @@
}, },
{ {
"type": "Scroll", "type": "Scroll",
"name" : "scroll",
"style": "paper", "style": "paper",
"x": 10, "x": 10,
"y": 10, "y": 10,
@@ -19,6 +20,7 @@
}, },
{ {
"type": "Label", "type": "Label",
"name" : "titleL",
"text": "Create a Character", "text": "Create a Character",
"width": 128, "width": 128,
"height": 32, "height": 32,
@@ -28,51 +30,63 @@
}, },
{ {
"type": "Label", "type": "Label",
"name" : "avatarL",
"text": "Avatar:", "text": "Avatar:",
"width": 128, "width": 128,
"height": 32, "height": 32,
"font" : "black",
"x": 16, "x": 16,
"y": 64 "y": 58
}, },
{ {
"type": "Label", "type": "Label",
"name" : "nameL",
"text": "Name:", "text": "Name:",
"width": 128, "width": 128,
"height": 32, "height": 32,
"font" : "black",
"x": 16, "x": 16,
"y": 96 "y": 90
}, },
{ {
"type": "Label", "type": "Label",
"name" : "raceL",
"text": "Race:", "text": "Race:",
"width": 128, "width": 128,
"height": 32, "height": 32,
"font" : "black",
"x": 16, "x": 16,
"y": 128 "y": 124
}, },
{ {
"type": "Label", "type": "Label",
"name" : "genderL",
"text": "Gender:", "text": "Gender:",
"width": 128, "width": 128,
"height": 32, "height": 32,
"font" : "black",
"x": 16, "x": 16,
"y": 160 "y": 154
}, },
{ {
"type": "Label", "type": "Label",
"name" : "difficultyL",
"text": "Difficulty:", "text": "Difficulty:",
"width": 128, "width": 128,
"height": 32, "height": 32,
"font" : "black",
"x": 16, "x": 16,
"y": 192 "y": 186
}, },
{ {
"type": "Label", "type": "Label",
"name" : "deckL",
"text": "Deck:", "text": "Deck:",
"width": 128, "width": 128,
"height": 32, "height": 32,
"font" : "black",
"x": 16, "x": 16,
"y": 224 "y": 218
}, },
{ {
"type": "ImageButton", "type": "ImageButton",
@@ -147,7 +161,7 @@
"width": 38, "width": 38,
"height": 16, "height": 16,
"x": 352, "x": 352,
"y": 240 "y": 251
}, },
{ {
"type": "TextButton", "type": "TextButton",
@@ -156,7 +170,7 @@
"width": 38, "width": 38,
"height": 16, "height": 16,
"x": 416, "x": 416,
"y": 240 "y": 251
} }
] ]
} }

View File

@@ -11,6 +11,7 @@
}, },
{ {
"type": "Scroll", "type": "Scroll",
"name" : "scroll",
"style": "paper", "style": "paper",
"x": 56, "x": 56,
"y": 10, "y": 10,
@@ -19,6 +20,7 @@
}, },
{ {
"type": "Label", "type": "Label",
"name" : "titleL",
"text": "Create a Character", "text": "Create a Character",
"width": 128, "width": 128,
"height": 32, "height": 32,
@@ -28,6 +30,7 @@
}, },
{ {
"type": "Label", "type": "Label",
"name" : "avatarL",
"text": "Avatar:", "text": "Avatar:",
"width": 128, "width": 128,
"height": 32, "height": 32,
@@ -37,6 +40,7 @@
}, },
{ {
"type": "Label", "type": "Label",
"name" : "nameL",
"text": "Name:", "text": "Name:",
"width": 128, "width": 128,
"height": 32, "height": 32,
@@ -46,6 +50,7 @@
}, },
{ {
"type": "Label", "type": "Label",
"name" : "raceL",
"text": "Race:", "text": "Race:",
"width": 128, "width": 128,
"height": 32, "height": 32,
@@ -55,6 +60,7 @@
}, },
{ {
"type": "Label", "type": "Label",
"name" : "genderL",
"text": "Gender:", "text": "Gender:",
"width": 128, "width": 128,
"height": 32, "height": 32,
@@ -64,6 +70,7 @@
}, },
{ {
"type": "Label", "type": "Label",
"name" : "difficultyL",
"text": "Difficulty:", "text": "Difficulty:",
"width": 128, "width": 128,
"height": 32, "height": 32,
@@ -73,6 +80,7 @@
}, },
{ {
"type": "Label", "type": "Label",
"name" : "deckL",
"text": "Deck:", "text": "Deck:",
"width": 128, "width": 128,
"height": 32, "height": 32,

View File

@@ -9,14 +9,6 @@
"width": 480, "width": 480,
"height": 270 "height": 270
}, },
{
"type": "Image",
"name": "preview",
"x": 364,
"y": 10,
"width": 96,
"height": 54
},
{ {
"type": "Scroll", "type": "Scroll",
"name": "saveSlots", "name": "saveSlots",
@@ -25,6 +17,14 @@
"width": 344, "width": 344,
"height": 235 "height": 235
}, },
{
"type": "Image",
"name": "preview",
"x": 300,
"y": 18,
"width": 96,
"height": 54
},
{ {
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",

View File

@@ -66,7 +66,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Switch", "name": "Switch",
"text": "Classic Mode", "text": "Classic",
"width": 75, "width": 75,
"height": 30, "height": 30,
"x": 245, "x": 245,

View File

@@ -11,6 +11,7 @@
}, },
{ {
"type": "Scroll", "type": "Scroll",
"name": "stats",
"style": "paper", "style": "paper",
"x": 300, "x": 300,
"y": 18, "y": 18,
@@ -35,6 +36,7 @@
}, },
{ {
"type": "Image", "type": "Image",
"name": "avatarBorder",
"image": "ui/avatarhud.png", "image": "ui/avatarhud.png",
"x": 320, "x": 320,
"y": 28, "y": 28,
@@ -61,6 +63,7 @@
}, },
{ {
"type": "Label", "type": "Label",
"name": "wins",
"text": "Win:", "text": "Win:",
"x": 330, "x": 330,
"y": 114, "y": 114,
@@ -79,6 +82,7 @@
}, },
{ {
"type": "Label", "type": "Label",
"name": "loss",
"text": "Loss:", "text": "Loss:",
"x": 330, "x": 330,
"y": 134, "y": 134,
@@ -97,6 +101,7 @@
}, },
{ {
"type": "Label", "type": "Label",
"name": "winloss",
"text": "Win Loss Ratio:", "text": "Win Loss Ratio:",
"x": 330, "x": 330,
"y": 154, "y": 154,
@@ -115,6 +120,7 @@
}, },
{ {
"type": "Image", "type": "Image",
"name": "lifeIcon",
"image": "ui/life.png", "image": "ui/life.png",
"x": 400, "x": 400,
"y": 40, "y": 40,
@@ -123,6 +129,7 @@
}, },
{ {
"type": "Image", "type": "Image",
"name": "goldIcon",
"image": "ui/money.png", "image": "ui/money.png",
"x": 400, "x": 400,
"y": 60, "y": 60,