mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
add Main Story Key Indicator
- show quest keys in GameHUD
This commit is contained in:
@@ -8,15 +8,9 @@ import com.badlogic.gdx.graphics.Color;
|
|||||||
import com.badlogic.gdx.graphics.Pixmap;
|
import com.badlogic.gdx.graphics.Pixmap;
|
||||||
import com.badlogic.gdx.graphics.Texture;
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Action;
|
import com.badlogic.gdx.scenes.scene2d.*;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
|
||||||
import com.badlogic.gdx.scenes.scene2d.InputEvent;
|
|
||||||
import com.badlogic.gdx.scenes.scene2d.Stage;
|
|
||||||
import com.badlogic.gdx.scenes.scene2d.actions.Actions;
|
import com.badlogic.gdx.scenes.scene2d.actions.Actions;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.Button;
|
import com.badlogic.gdx.scenes.scene2d.ui.*;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
|
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.Image;
|
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.Touchpad;
|
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.ActorGestureListener;
|
import com.badlogic.gdx.scenes.scene2d.utils.ActorGestureListener;
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
|
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
|
||||||
@@ -48,20 +42,11 @@ public class GameHUD extends Stage {
|
|||||||
|
|
||||||
static public GameHUD instance;
|
static public GameHUD instance;
|
||||||
private final GameStage gameStage;
|
private final GameStage gameStage;
|
||||||
private final Image avatar;
|
private final Image avatar, miniMapPlayer;
|
||||||
private final Image miniMapPlayer;
|
private final TextraLabel lifePoints, money, shards, keys;
|
||||||
private final TextraLabel lifePoints;
|
|
||||||
private final TextraLabel money;
|
|
||||||
private final TextraLabel shards;
|
|
||||||
private final Image miniMap, gamehud, mapborder, avatarborder, blank;
|
private final Image miniMap, gamehud, mapborder, avatarborder, blank;
|
||||||
private final InputEvent eventTouchDown;
|
private final InputEvent eventTouchDown, eventTouchUp;
|
||||||
private final InputEvent eventTouchUp;
|
private final TextraButton deckActor, openMapActor, menuActor, statsActor, inventoryActor, exitToWorldMapActor;
|
||||||
private final TextraButton deckActor;
|
|
||||||
private final TextraButton openMapActor;
|
|
||||||
private final TextraButton menuActor;
|
|
||||||
private final TextraButton statsActor;
|
|
||||||
private final TextraButton inventoryActor;
|
|
||||||
private final TextraButton exitToWorldMapActor;
|
|
||||||
public final UIActor ui;
|
public final UIActor ui;
|
||||||
private final Touchpad touchpad;
|
private final Touchpad touchpad;
|
||||||
private final Console console;
|
private final Console console;
|
||||||
@@ -73,8 +58,10 @@ public class GameHUD extends Stage {
|
|||||||
private final Dialog dialog;
|
private final Dialog dialog;
|
||||||
private boolean dialogOnlyInput;
|
private boolean dialogOnlyInput;
|
||||||
private final Array<TextraButton> dialogButtonMap = new Array<>();
|
private final Array<TextraButton> dialogButtonMap = new Array<>();
|
||||||
|
private final Array<String> questKeys = new Array<>();
|
||||||
private String lifepointsTextColor = "";
|
private String lifepointsTextColor = "";
|
||||||
TextraButton selectedKey;
|
private TextraButton selectedKey;
|
||||||
|
private final ScrollPane scrollPane;
|
||||||
|
|
||||||
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());
|
||||||
@@ -137,6 +124,11 @@ public class GameHUD extends Stage {
|
|||||||
shards.setText("[%95][+Shards] 0");
|
shards.setText("[%95][+Shards] 0");
|
||||||
money.setText("[%95][+Gold] ");
|
money.setText("[%95][+Gold] ");
|
||||||
lifePoints.setText("[%95][+Life] 20/20");
|
lifePoints.setText("[%95][+Life] 20/20");
|
||||||
|
keys = Controls.newTextraLabel("");
|
||||||
|
scrollPane = new ScrollPane(keys);
|
||||||
|
scrollPane.setPosition(2, 2);
|
||||||
|
scrollPane.setStyle(Controls.getSkin().get("transluscent", ScrollPane.ScrollPaneStyle.class));
|
||||||
|
addActor(scrollPane);
|
||||||
AdventurePlayer.current().onLifeChange(() -> lifePoints.setText("[%95][+Life]" + lifepointsTextColor + " " + AdventurePlayer.current().getLife() + "/" + AdventurePlayer.current().getMaxLife()));
|
AdventurePlayer.current().onLifeChange(() -> lifePoints.setText("[%95][+Life]" + lifepointsTextColor + " " + AdventurePlayer.current().getLife() + "/" + AdventurePlayer.current().getMaxLife()));
|
||||||
AdventurePlayer.current().onShardsChange(() -> shards.setText("[%95][+Shards] " + AdventurePlayer.current().getShards()));
|
AdventurePlayer.current().onShardsChange(() -> shards.setText("[%95][+Shards] " + AdventurePlayer.current().getShards()));
|
||||||
|
|
||||||
@@ -291,6 +283,7 @@ public class GameHUD extends Stage {
|
|||||||
Pixmap miniMapToolTipPixmap;
|
Pixmap miniMapToolTipPixmap;
|
||||||
|
|
||||||
public void enter() {
|
public void enter() {
|
||||||
|
questKeys.clear();
|
||||||
if (miniMapTexture != null)
|
if (miniMapTexture != null)
|
||||||
miniMapTexture.dispose();
|
miniMapTexture.dispose();
|
||||||
miniMapTexture = new Texture(WorldSave.getCurrentSave().getWorld().getBiomeImage());
|
miniMapTexture = new Texture(WorldSave.getCurrentSave().getWorld().getBiomeImage());
|
||||||
@@ -304,6 +297,28 @@ 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()));
|
||||||
Deck deck = AdventurePlayer.current().getSelectedDeck();
|
Deck deck = AdventurePlayer.current().getSelectedDeck();
|
||||||
|
if (AdventurePlayer.current().hasItem("Red Key"))
|
||||||
|
questKeys.add("[+RedKey]");
|
||||||
|
if (AdventurePlayer.current().hasItem("Green Key"))
|
||||||
|
questKeys.add("[+GreenKey]");
|
||||||
|
if (AdventurePlayer.current().hasItem("Blue Key"))
|
||||||
|
questKeys.add("[+BlueKey]");
|
||||||
|
if (AdventurePlayer.current().hasItem("Black Key"))
|
||||||
|
questKeys.add("[+BlackKey]");
|
||||||
|
if (AdventurePlayer.current().hasItem("White Key"))
|
||||||
|
questKeys.add("[+WhiteKey]");
|
||||||
|
if (AdventurePlayer.current().hasItem("Strange Key"))
|
||||||
|
questKeys.add("[+StrangeKey]");
|
||||||
|
if (!questKeys.isEmpty()) {
|
||||||
|
keys.setText(String.join("\n", questKeys));
|
||||||
|
scrollPane.setSize(keys.getWidth() + 8, keys.getHeight() + 5);
|
||||||
|
scrollPane.layout();
|
||||||
|
keys.layout();
|
||||||
|
scrollPane.getColor().a = opacity;
|
||||||
|
} else {
|
||||||
|
keys.setText("");
|
||||||
|
scrollPane.getColor().a = 0;
|
||||||
|
}
|
||||||
if (deck == null || deck.isEmpty() || deck.getMain().toFlatList().size() < 30) {
|
if (deck == null || deck.isEmpty() || deck.getMain().toFlatList().size() < 30) {
|
||||||
deckActor.setColor(Color.RED);
|
deckActor.setColor(Color.RED);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -260,6 +260,15 @@ thinwindow
|
|||||||
orig: 16, 16
|
orig: 16, 16
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
|
transwindow
|
||||||
|
rotate: false
|
||||||
|
xy: 305, 415
|
||||||
|
size: 16, 16
|
||||||
|
split: 2, 2, 2, 2
|
||||||
|
pad: 0, 0, 0, 0
|
||||||
|
orig: 16, 16
|
||||||
|
offset: 0, 0
|
||||||
|
index: -1
|
||||||
uncheck
|
uncheck
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 293, 375
|
xy: 293, 375
|
||||||
|
|||||||
@@ -166,6 +166,26 @@
|
|||||||
"playMode": 2,
|
"playMode": 2,
|
||||||
"crushMode": 0
|
"crushMode": 0
|
||||||
},
|
},
|
||||||
|
"transwindow10Patch": {
|
||||||
|
"region": "transwindow",
|
||||||
|
"horizontalStretchAreas": [ 2, 13 ],
|
||||||
|
"verticalStretchAreas": [ 2, 13 ],
|
||||||
|
"tiling": true,
|
||||||
|
"minWidth": 16,
|
||||||
|
"minHeight": 16,
|
||||||
|
"rightWidth": 4,
|
||||||
|
"leftWidth": 4,
|
||||||
|
"bottomHeight": 4,
|
||||||
|
"topHeight": 4,
|
||||||
|
"offsetX": 0,
|
||||||
|
"offsetY": 0,
|
||||||
|
"offsetXspeed": 0,
|
||||||
|
"offsetYspeed": 0,
|
||||||
|
"frameDuration": 0.03,
|
||||||
|
"regions": [],
|
||||||
|
"playMode": 2,
|
||||||
|
"crushMode": 0
|
||||||
|
},
|
||||||
"pressed10Patch": {
|
"pressed10Patch": {
|
||||||
"region": "pressed",
|
"region": "pressed",
|
||||||
"horizontalStretchAreas": [ 3, 10 ],
|
"horizontalStretchAreas": [ 3, 10 ],
|
||||||
@@ -443,6 +463,9 @@
|
|||||||
"gold": {
|
"gold": {
|
||||||
"background": "9patch4"
|
"background": "9patch4"
|
||||||
},
|
},
|
||||||
|
"transluscent": {
|
||||||
|
"background": "transwindow10Patch"
|
||||||
|
},
|
||||||
"nobg": {
|
"nobg": {
|
||||||
"background": "transparent"
|
"background": "transparent"
|
||||||
}
|
}
|
||||||
@@ -549,6 +572,11 @@
|
|||||||
"background": "paper10Patch",
|
"background": "paper10Patch",
|
||||||
"titleFont": "default"
|
"titleFont": "default"
|
||||||
},
|
},
|
||||||
|
"transluscent": {
|
||||||
|
"parent": "default",
|
||||||
|
"background": "transwindow10Patch",
|
||||||
|
"titleFont": "default"
|
||||||
|
},
|
||||||
"gold": {
|
"gold": {
|
||||||
"background": "TenPatchGold",
|
"background": "TenPatchGold",
|
||||||
"titleFont": "default"
|
"titleFont": "default"
|
||||||
|
|||||||
Reference in New Issue
Block a user