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
This commit is contained in:
Anthony Calosa
2022-05-22 12:17:55 +08:00
parent aa4fad07cb
commit e94a0511b6
5 changed files with 34 additions and 22 deletions

View File

@@ -86,7 +86,8 @@ public class AdventurePlayer implements Serializable, SaveFileContent {
heroRace = race; heroRace = race;
isFemale = !male; isFemale = !male;
name = n; 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(); statistic.clear();
newCards.clear(); newCards.clear();
onGoldChangeList.emit(); onGoldChangeList.emit();

View File

@@ -2,20 +2,25 @@ 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.graphics.Color;
import com.badlogic.gdx.scenes.scene2d.Actor;
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.CheckBox;
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.ImageButton;
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.TextButton; 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.TextureRegionDrawable; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import forge.Forge; import forge.Forge;
import forge.adventure.data.DifficultyData; import forge.adventure.data.DifficultyData;
import forge.adventure.data.HeroListData; import forge.adventure.data.HeroListData;
import forge.adventure.util.Config; import forge.adventure.util.Config;
import forge.adventure.util.Controls;
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;
@@ -44,6 +49,7 @@ public class NewGameScene extends UIScene {
private ImageButton leftArrow, rightArrow; private ImageButton leftArrow, rightArrow;
private TextButton backButton, startButton; private TextButton backButton, startButton;
boolean fantasyMode = false; boolean fantasyMode = false;
private CheckBox box;
public NewGameScene() { public NewGameScene() {
super(Forge.isLandscapeMode() ? "ui/new_game.json" : "ui/new_game_portrait.json"); super(Forge.isLandscapeMode() ? "ui/new_game.json" : "ui/new_game_portrait.json");
@@ -100,15 +106,10 @@ public class NewGameScene extends UIScene {
Array<String> stringList = new Array<>(starterDeck.length); Array<String> stringList = new Array<>(starterDeck.length);
for (Deck deck : starterDeck) for (Deck deck : starterDeck)
stringList.add(deck.getName()); stringList.add(deck.getName());
stringList.add("Chaos Mode"); Array<String> chaos = new Array<>();
chaos.add("Preconstructed");
deck.setTextList(stringList); deck.setTextList(stringList);
deck.addListener(new EventListener() {
@Override
public boolean handle(Event event) {
return NewGameScene.this.updateFantasy();
}
});
race = ui.findActor("race"); race = ui.findActor("race");
race.addListener(new EventListener() { race.addListener(new EventListener() {
@@ -177,13 +178,26 @@ public class NewGameScene extends UIScene {
difficultyL.setText(Forge.getLocalizer().getMessage("lblDifficulty")); difficultyL.setText(Forge.getLocalizer().getMessage("lblDifficulty"));
deckL = ui.findActor("deckL"); deckL = ui.findActor("deckL");
deckL.setText(Forge.getLocalizer().getMessage("lblDeck")); 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"); leftArrow = ui.findActor("leftAvatar");
rightArrow = ui.findActor("rightAvatar"); rightArrow = ui.findActor("rightAvatar");
backButton = ui.findActor("back"); backButton = ui.findActor("back");
backButton.getLabel().setText(Forge.getLocalizer().getMessage("lblBack")); backButton.getLabel().setText(Forge.getLocalizer().getMessage("lblBack"));
startButton = ui.findActor("start"); startButton = ui.findActor("start");
startButton.getLabel().setText(Forge.getLocalizer().getMessage("lblStart")); startButton.getLabel().setText(Forge.getLocalizer().getMessage("lblStart"));
updateFantasy();
} }
@@ -203,11 +217,6 @@ public class NewGameScene extends UIScene {
return false; return false;
} }
private boolean updateFantasy() {
fantasyMode = "Chaos Mode".equalsIgnoreCase(deck.getText());
return false;
}
@Override @Override
public void create() { public void create() {
@@ -216,7 +225,6 @@ public class NewGameScene extends UIScene {
@Override @Override
public void enter() { public void enter() {
updateAvatar(); updateAvatar();
updateFantasy();
Gdx.input.setInputProcessor(stage); //Start taking input from the ui Gdx.input.setInputProcessor(stage); //Start taking input from the ui
} }

View File

@@ -175,10 +175,10 @@ public class SaveLoadScene extends UIScene {
dialog.hide(); dialog.hide();
if (WorldSave.getCurrentSave().save(textInput.getText(), currentSlot)) { if (WorldSave.getCurrentSave().save(textInput.getText(), currentSlot)) {
updateFiles(); updateFiles();
//ensure the dialog is hidden before switching
dialog.getColor().a = 0f;
Forge.switchScene(SceneType.GameScene.instance); Forge.switchScene(SceneType.GameScene.instance);
} }
} }
private void updateFiles() { private void updateFiles() {

View File

@@ -46,6 +46,7 @@ public class GameHUD extends Stage {
private Console console; private Console console;
float TOUCHPAD_SCALE = 70f, referenceX; float TOUCHPAD_SCALE = 70f, referenceX;
boolean isHiding = false, isShowing = false; boolean isHiding = false, isShowing = false;
float opacity = 1f;
private GameHUD(GameStage gameStage) { private GameHUD(GameStage gameStage) {
super(new ScalingViewport(Scaling.stretch, Scene.getIntendedWidth(), Scene.getIntendedHeight()), gameStage.getBatch()); super(new ScalingViewport(Scaling.stretch, Scene.getIntendedWidth(), Scene.getIntendedHeight()), gameStage.getBatch());
@@ -260,11 +261,13 @@ public class GameHUD extends Stage {
menuActor.getColor().a = 1f; menuActor.getColor().a = 1f;
statsActor.getColor().a = 1f; statsActor.getColor().a = 1f;
inventoryActor.getColor().a = 1f; inventoryActor.getColor().a = 1f;
opacity = 1f;
} else { } else {
deckActor.getColor().a = 0.5f; deckActor.getColor().a = 0.5f;
menuActor.getColor().a = 0.5f; menuActor.getColor().a = 0.5f;
statsActor.getColor().a = 0.5f; statsActor.getColor().a = 0.5f;
inventoryActor.getColor().a = 0.5f; inventoryActor.getColor().a = 0.5f;
opacity = 0.5f;
} }
} }
@@ -312,10 +315,10 @@ public class GameHUD extends Stage {
if (isShowing) if (isShowing)
return; return;
isShowing = true; 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)))); 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.fadeIn(0.1f), Actions.moveTo(referenceX, statsActor.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.fadeIn(0.1f), Actions.show(), Actions.moveTo(referenceX, inventoryActor.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.fadeIn(0.1f), Actions.show(), Actions.moveTo(referenceX, deckActor.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); FThreads.delayInEDT(300, () -> isShowing = false);
} }
class ConsoleToggleListener extends ActorGestureListener { class ConsoleToggleListener extends ActorGestureListener {

View File

@@ -474,7 +474,7 @@ public class DeckgenUtil {
if (deck != null) { if (deck != null) {
return deck; return deck;
} }
return DeckgenUtil.buildColorDeck(selection, null, forAi); return getRandomColorDeck(forAi);
} }
/** @return {@link forge.deck.Deck} */ /** @return {@link forge.deck.Deck} */