update actor groupings

This commit is contained in:
Anthony Calosa
2024-08-26 17:28:24 +08:00
parent 4a8776a2f7
commit 284a4daf88

View File

@@ -8,10 +8,20 @@ import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.*;
import com.badlogic.gdx.scenes.scene2d.Action;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.Touchable;
import com.badlogic.gdx.scenes.scene2d.actions.Actions;
import com.badlogic.gdx.scenes.scene2d.actions.SequenceAction;
import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.scenes.scene2d.ui.Button;
import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.ui.Touchpad;
import com.badlogic.gdx.scenes.scene2d.utils.ActorGestureListener;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
@@ -28,8 +38,19 @@ import forge.adventure.character.CharacterSprite;
import forge.adventure.data.AdventureQuestData;
import forge.adventure.data.ItemData;
import forge.adventure.player.AdventurePlayer;
import forge.adventure.scene.*;
import forge.adventure.util.*;
import forge.adventure.scene.DeckSelectScene;
import forge.adventure.scene.GameScene;
import forge.adventure.scene.InventoryScene;
import forge.adventure.scene.MapViewScene;
import forge.adventure.scene.QuestLogScene;
import forge.adventure.scene.Scene;
import forge.adventure.scene.TileMapScene;
import forge.adventure.util.AdventureQuestController;
import forge.adventure.util.Config;
import forge.adventure.util.Controls;
import forge.adventure.util.Current;
import forge.adventure.util.KeyBinding;
import forge.adventure.util.UIActor;
import forge.adventure.world.WorldSave;
import forge.deck.Deck;
import forge.gui.GuiBase;
@@ -70,6 +91,9 @@ public class GameHUD extends Stage {
private String lifepointsTextColor = "";
private final ScrollPane scrollPane;
private final ScrollPane notificationPane;
private final Group mapGroup = new Group();
private final Group hudGroup = new Group();
private final Group menuGroup = new Group();
private GameHUD(GameStage gameStage) {
super(new ScalingViewport(Scaling.stretch, Scene.getIntendedWidth(), Scene.getIntendedHeight()), gameStage.getBatch());
@@ -156,16 +180,12 @@ public class GameHUD extends Stage {
effectEnd = "";
heartbeat = "{HEARTBEAT=0.5;0.5}";
lifepointsTextColor = "{ENDHEARTBEAT}[RED]";
}
else {
} else {
lifepointsTextColor = "[WHITE]";
}
lifePoints.restart("[%95]" + heartbeat + "[+Life]" + lifepointsTextColor + effect + " " + AdventurePlayer.current().getLife() + effectEnd + "/" + AdventurePlayer.current().getMaxLife());
});
AdventurePlayer.current().onShardsChange(() -> {
shards.restart("[%95][+Shards]{EMERGE} " + AdventurePlayer.current().getShards() + "{ENDEMERGE}");
});
AdventurePlayer.current().onShardsChange(() -> shards.restart("[%95][+Shards]{EMERGE} " + AdventurePlayer.current().getShards() + "{ENDEMERGE}"));
AdventurePlayer.current().onGoldChange(() -> money.restart("[%95][+Gold]{EMERGE} " + AdventurePlayer.current().getGold() + "{ENDEMERGE}"));
AdventurePlayer.current().onEquipmentChanged(this::updateAbility);
addActor(ui);
@@ -193,6 +213,29 @@ public class GameHUD extends Stage {
notificationPane.getColor().a = 0f;
ui.addActor(notificationPane);
//MAP
mapGroup.addActor(miniMap);
mapGroup.addActor(mapborder);
mapGroup.addActor(openMapActor);
mapGroup.addActor(miniMapPlayer);
ui.addActor(mapGroup);
//HUD
hudGroup.addActor(gamehud);
hudGroup.addActor(lifePoints);
hudGroup.addActor(shards);
hudGroup.addActor(money);
hudGroup.addActor(blank);
hudGroup.addActor(avatarborder);
hudGroup.addActor(avatar);
ui.addActor(hudGroup);
//MENU
menuGroup.addActor(deckActor);
menuGroup.addActor(menuActor);
menuGroup.addActor(logbookActor);
menuGroup.addActor(inventoryActor);
menuGroup.addActor(exitToWorldMapActor);
menuGroup.addActor(bookmarkActor);
ui.addActor(menuGroup);
}
private void openMap() {
@@ -685,65 +728,30 @@ public class GameHUD extends Stage {
public void showHideMap(boolean visible) {
transluscent = !visible;
setVisibility(miniMap, visible);
setVisibility(mapborder, visible);
setVisibility(openMapActor, visible);
setVisibility(miniMapPlayer, visible);
setAlpha(gamehud, visible);
setVisibility(mapGroup, visible);
setAlpha(hudGroup, visible);
setAlpha(menuGroup, visible);
setAlpha(lifePoints, visible);
setAlpha(shards, visible);
setAlpha(money, visible);
setAlpha(blank, visible);
setDisabled(exitToWorldMapActor, !MapStage.getInstance().isInMap(), "[%120][+ExitToWorldMap]", "\uFF0F");
setDisabled(bookmarkActor, !MapStage.getInstance().isInMap(), "[%120][+Bookmark]", "\uFF0F");
setAlpha(avatarborder, visible);
setAlpha(avatar, visible);
setAlpha(deckActor, visible);
setAlpha(menuActor, visible);
setAlpha(logbookActor, visible);
setAlpha(inventoryActor, visible);
setAlpha(exitToWorldMapActor, visible);
setAlpha(bookmarkActor, visible);
for (TextraButton button : abilityButtonMap) {
setAlpha(button, visible);
}
opacity = visible ? 1f : 0.4f;
}
public void updateHUD(boolean translucent) {
public void setHUDOpacity(boolean translucent) {
if (translucent) {
setAlpha(lifePoints, false);
setAlpha(shards, false);
setAlpha(money, false);
setAlpha(avatarborder, false);
setAlpha(avatar, false);
setAlpha(deckActor, false);
setAlpha(menuActor, false);
setAlpha(logbookActor, false);
setAlpha(inventoryActor, false);
setAlpha(exitToWorldMapActor, false);
setAlpha(bookmarkActor, false);
setAlpha(gamehud, false);
setAlpha(blank, false);
setAlpha(hudGroup, false);
setAlpha(menuGroup, false);
for (TextraButton button : abilityButtonMap) {
setAlpha(button, false);
}
transluscent = true;
} else {
setAlpha(lifePoints, true);
setAlpha(shards, true);
setAlpha(money, true);
setAlpha(avatarborder, true);
setAlpha(avatar, true);
setAlpha(deckActor, true);
setAlpha(menuActor, true);
setAlpha(logbookActor, true);
setAlpha(inventoryActor, true);
setAlpha(exitToWorldMapActor, true);
setAlpha(bookmarkActor, true);
setAlpha(gamehud, true);
setAlpha(blank, true);
setAlpha(hudGroup, true);
setAlpha(menuGroup, true);
for (TextraButton button : abilityButtonMap) {
setAlpha(button, true);
}
@@ -910,7 +918,7 @@ public class GameHUD extends Stage {
@Override
public void tap(InputEvent event, float x, float y, int count, int button) {
if (count > 1 && MapStage.getInstance().isInMap())
updateHUD(!transluscent);
setHUDOpacity(!transluscent);
super.tap(event, x, y, count, button);
}