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;
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();

View File

@@ -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<String> stringList = new Array<>(starterDeck.length);
for (Deck deck : starterDeck)
stringList.add(deck.getName());
stringList.add("Chaos Mode");
Array<String> 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
}

View File

@@ -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() {

View File

@@ -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 {