From e94a0511b6c7d929a6d6e853420e95404967b21c Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sun, 22 May 2022 12:17:55 +0800 Subject: [PATCH] minor fixes for adventure mode - fix save dialog now fading out when saving - fix deck selector for chaos mode as check box - fix button opacity on tiled map stage --- .../adventure/player/AdventurePlayer.java | 3 +- .../forge/adventure/scene/NewGameScene.java | 36 +++++++++++-------- .../forge/adventure/scene/SaveLoadScene.java | 4 +-- .../src/forge/adventure/stage/GameHUD.java | 11 +++--- .../src/main/java/forge/deck/DeckgenUtil.java | 2 +- 5 files changed, 34 insertions(+), 22 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java b/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java index 4a349be413e..572b65a43a7 100644 --- a/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java +++ b/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java @@ -86,7 +86,8 @@ public class AdventurePlayer implements Serializable, SaveFileContent { heroRace = race; isFemale = !male; name = n; - setColorIdentity(startingColorIdentity + 1); //+1 because index 0 is colorless. + //todo make coloridentity as colorset so if player is using multi color deck, get rewards based on the current selected deck color + setColorIdentity(fantasyMode ? 0 : startingColorIdentity + 1); //+1 because index 0 is colorless. statistic.clear(); newCards.clear(); onGoldChangeList.emit(); diff --git a/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java b/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java index 0effd6c4965..6f836cbe6ea 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java @@ -2,20 +2,25 @@ package forge.adventure.scene; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Event; import com.badlogic.gdx.scenes.scene2d.EventListener; +import com.badlogic.gdx.scenes.scene2d.ui.CheckBox; 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.ChangeListener; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.utils.Array; import forge.Forge; import forge.adventure.data.DifficultyData; import forge.adventure.data.HeroListData; import forge.adventure.util.Config; +import forge.adventure.util.Controls; import forge.adventure.util.Selector; import forge.adventure.world.WorldSave; import forge.deck.Deck; @@ -44,6 +49,7 @@ public class NewGameScene extends UIScene { private ImageButton leftArrow, rightArrow; private TextButton backButton, startButton; boolean fantasyMode = false; + private CheckBox box; public NewGameScene() { super(Forge.isLandscapeMode() ? "ui/new_game.json" : "ui/new_game_portrait.json"); @@ -100,15 +106,10 @@ public class NewGameScene extends UIScene { Array stringList = new Array<>(starterDeck.length); for (Deck deck : starterDeck) stringList.add(deck.getName()); - stringList.add("Chaos Mode"); + Array chaos = new Array<>(); + chaos.add("Preconstructed"); deck.setTextList(stringList); - deck.addListener(new EventListener() { - @Override - public boolean handle(Event event) { - return NewGameScene.this.updateFantasy(); - } - }); race = ui.findActor("race"); race.addListener(new EventListener() { @@ -177,13 +178,26 @@ public class NewGameScene extends UIScene { difficultyL.setText(Forge.getLocalizer().getMessage("lblDifficulty")); deckL = ui.findActor("deckL"); deckL.setText(Forge.getLocalizer().getMessage("lblDeck")); + box = Controls.newCheckBox(""); + box.addListener(new ChangeListener() { + @Override + public void changed(ChangeEvent event, Actor actor) { + fantasyMode = ((CheckBox) actor).isChecked(); + deck.setTextList(fantasyMode ? chaos : stringList); + } + }); + box.setBounds(deckL.getX()-box.getHeight(), deckL.getY()-box.getHeight(), deckL.getHeight(), deckL.getHeight()); + Label label = Controls.newLabel("Chaos Mode"); + label.setColor(Color.BLACK); + label.setBounds(box.getX()+22, box.getY(), box.getWidth(), box.getHeight()); + ui.addActor(box); + ui.addActor(label); leftArrow = ui.findActor("leftAvatar"); rightArrow = ui.findActor("rightAvatar"); backButton = ui.findActor("back"); backButton.getLabel().setText(Forge.getLocalizer().getMessage("lblBack")); startButton = ui.findActor("start"); startButton.getLabel().setText(Forge.getLocalizer().getMessage("lblStart")); - updateFantasy(); } @@ -203,11 +217,6 @@ public class NewGameScene extends UIScene { return false; } - private boolean updateFantasy() { - fantasyMode = "Chaos Mode".equalsIgnoreCase(deck.getText()); - return false; - } - @Override public void create() { @@ -216,7 +225,6 @@ public class NewGameScene extends UIScene { @Override public void enter() { updateAvatar(); - updateFantasy(); Gdx.input.setInputProcessor(stage); //Start taking input from the ui } diff --git a/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java b/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java index 2ce110b78ff..dc95ad33b85 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java @@ -175,10 +175,10 @@ public class SaveLoadScene extends UIScene { dialog.hide(); if (WorldSave.getCurrentSave().save(textInput.getText(), currentSlot)) { updateFiles(); + //ensure the dialog is hidden before switching + dialog.getColor().a = 0f; Forge.switchScene(SceneType.GameScene.instance); } - - } private void updateFiles() { diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java index 10e2c9b8afa..8f4620db22b 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java @@ -46,6 +46,7 @@ public class GameHUD extends Stage { private Console console; float TOUCHPAD_SCALE = 70f, referenceX; boolean isHiding = false, isShowing = false; + float opacity = 1f; private GameHUD(GameStage gameStage) { super(new ScalingViewport(Scaling.stretch, Scene.getIntendedWidth(), Scene.getIntendedHeight()), gameStage.getBatch()); @@ -260,11 +261,13 @@ public class GameHUD extends Stage { menuActor.getColor().a = 1f; statsActor.getColor().a = 1f; inventoryActor.getColor().a = 1f; + opacity = 1f; } else { deckActor.getColor().a = 0.5f; menuActor.getColor().a = 0.5f; statsActor.getColor().a = 0.5f; inventoryActor.getColor().a = 0.5f; + opacity = 0.5f; } } @@ -312,10 +315,10 @@ public class GameHUD extends Stage { if (isShowing) return; isShowing = true; - menuActor.addAction(Actions.sequence(Actions.delay(0.1f), Actions.parallel(Actions.show(), Actions.fadeIn(0.1f), Actions.moveTo(referenceX, menuActor.getY(), 0.25f)))); - statsActor.addAction(Actions.sequence(Actions.delay(0.15f), Actions.parallel(Actions.show(), Actions.fadeIn(0.1f), Actions.moveTo(referenceX, statsActor.getY(), 0.25f)))); - inventoryActor.addAction(Actions.sequence(Actions.delay(0.2f), Actions.parallel(Actions.fadeIn(0.1f), Actions.show(), Actions.moveTo(referenceX, inventoryActor.getY(), 0.25f)))); - deckActor.addAction(Actions.sequence(Actions.delay(0.25f), Actions.parallel(Actions.fadeIn(0.1f), Actions.show(), Actions.moveTo(referenceX, deckActor.getY(), 0.25f)))); + menuActor.addAction(Actions.sequence(Actions.delay(0.1f), Actions.parallel(Actions.show(), Actions.alpha(opacity,0.1f), Actions.moveTo(referenceX, menuActor.getY(), 0.25f)))); + statsActor.addAction(Actions.sequence(Actions.delay(0.15f), Actions.parallel(Actions.show(), Actions.alpha(opacity,0.1f), Actions.moveTo(referenceX, statsActor.getY(), 0.25f)))); + inventoryActor.addAction(Actions.sequence(Actions.delay(0.2f), Actions.parallel(Actions.show(), Actions.alpha(opacity,0.1f), Actions.moveTo(referenceX, inventoryActor.getY(), 0.25f)))); + deckActor.addAction(Actions.sequence(Actions.delay(0.25f), Actions.parallel(Actions.show(), Actions.alpha(opacity,0.1f), Actions.moveTo(referenceX, deckActor.getY(), 0.25f)))); FThreads.delayInEDT(300, () -> isShowing = false); } class ConsoleToggleListener extends ActorGestureListener { diff --git a/forge-gui/src/main/java/forge/deck/DeckgenUtil.java b/forge-gui/src/main/java/forge/deck/DeckgenUtil.java index d128b0aa3de..6e9fb625b6c 100644 --- a/forge-gui/src/main/java/forge/deck/DeckgenUtil.java +++ b/forge-gui/src/main/java/forge/deck/DeckgenUtil.java @@ -474,7 +474,7 @@ public class DeckgenUtil { if (deck != null) { return deck; } - return DeckgenUtil.buildColorDeck(selection, null, forAi); + return getRandomColorDeck(forAi); } /** @return {@link forge.deck.Deck} */