From aeb9c85f7d8e21b1df1e315b5a481900063336eb Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Mon, 13 Feb 2023 19:39:20 +0800 Subject: [PATCH 1/3] fix gamehud life color --- .../src/forge/adventure/stage/GameHUD.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java index 5c6df1995a1..e8ee936927f 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java @@ -60,7 +60,7 @@ public class GameHUD extends Stage { float TOUCHPAD_SCALE = 70f, referenceX; boolean isHiding = false, isShowing = false; float opacity = 1f; - private boolean debugMap; + private boolean debugMap, updatelife; private final Dialog dialog; private boolean dialogOnlyInput; @@ -125,7 +125,7 @@ public class GameHUD extends Stage { shards.setText("[%95][+Shards] 0"); money.setText("[%95][+Gold] "); lifePoints.setText("[%95][+Life] 20/20"); - AdventurePlayer.current().onLifeChange(() -> lifePoints.setText("[%95][+Life] "+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())); WorldSave.getCurrentSave().getPlayer().onGoldChange(() -> money.setText("[%95][+Gold] "+String.valueOf(AdventurePlayer.current().getGold()))); @@ -236,6 +236,7 @@ public class GameHUD extends Stage { @Override public void draw() { + updatelife = false; int yPos = (int) gameStage.player.getY(); int xPos = (int) gameStage.player.getX(); act(Gdx.graphics.getDeltaTime()); //act the Hud @@ -248,22 +249,26 @@ public class GameHUD extends Stage { //colored lifepoints if (Current.player().getLife() >= Current.player().getMaxLife()) { //color green if max life - if (!lifepointsTextColor.equalsIgnoreCase("green")) { - lifePoints.setText("[%95][+Life] [GREEN]" + AdventurePlayer.current().getLife() + "/" + AdventurePlayer.current().getMaxLife()); - lifepointsTextColor = "green"; + if (!lifepointsTextColor.equals("[GREEN]")) { + lifepointsTextColor = "[GREEN]"; + updatelife = true; } } else if (Current.player().getLife() <= 5) { //color red if critical - if (!lifepointsTextColor.equalsIgnoreCase("red")) { - lifePoints.setText("[%95][+Life] [RED]" + AdventurePlayer.current().getLife() + "/" + AdventurePlayer.current().getMaxLife()); - lifepointsTextColor = "red"; + if (!lifepointsTextColor.equals("[RED]")) { + lifepointsTextColor = "[RED]"; + updatelife = true; } } else { if (!lifepointsTextColor.equals("")) { - lifePoints.setText("[%95][+Life] " + AdventurePlayer.current().getLife() + "/" + AdventurePlayer.current().getMaxLife()); lifepointsTextColor = ""; + updatelife = true; } } + if (updatelife) { + updatelife = false; + lifePoints.setText("[%95][+Life]" + lifepointsTextColor + " " + AdventurePlayer.current().getLife() + "/" + AdventurePlayer.current().getMaxLife()); + } } Texture miniMapTexture; From bd1c0d65f78b8eda030c09a42cf307551b0e78bc Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Tue, 14 Feb 2023 06:41:07 +0800 Subject: [PATCH 2/3] update deckaward dialog --- .../src/forge/adventure/stage/MapStage.java | 37 ++++++++++++++++--- .../src/forge/adventure/stage/WorldStage.java | 11 +++--- .../src/forge/adventure/util/MapDialog.java | 2 +- .../adventure/Shandalar/ui/hud_landscape.json | 10 ++--- .../adventure/Shandalar/ui/hud_portrait.json | 6 +-- 5 files changed, 46 insertions(+), 20 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/stage/MapStage.java b/forge-gui-mobile/src/forge/adventure/stage/MapStage.java index db2d5816142..3c431367506 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/MapStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/MapStage.java @@ -29,6 +29,7 @@ import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Scaling; import com.badlogic.gdx.utils.Timer; import com.github.tommyettinger.textra.TextraButton; +import com.github.tommyettinger.textra.TextraLabel; import com.github.tommyettinger.textra.TypingAdapter; import com.github.tommyettinger.textra.TypingLabel; import forge.Forge; @@ -38,8 +39,12 @@ import forge.adventure.pointofintrest.PointOfInterestChanges; import forge.adventure.scene.*; import forge.adventure.util.*; import forge.adventure.world.WorldSave; +import forge.assets.FImageComplex; +import forge.assets.FSkin; +import forge.card.CardRenderer; import forge.deck.Deck; import forge.deck.DeckProxy; +import forge.game.GameType; import forge.gui.FThreads; import forge.screens.TransitionScreen; import forge.sound.SoundEffectType; @@ -212,7 +217,7 @@ public class MapStage extends GameStage { super.clicked(event, x, y); } }); - dialog.getButtonTable().add(ok).width(250f); + dialog.getButtonTable().add(ok).width(240f); dialog.getContentTable().add(L).width(250f); dialog.setKeepWithinStage(true); showDialog(); @@ -234,7 +239,7 @@ public class MapStage extends GameStage { L.setWrap(true); L.skipToTheEnd(); dialog.getContentTable().add(L).width(250f); - dialog.getButtonTable().add(Controls.newTextButton("OK", this::hideDialog)).width(250f); + dialog.getButtonTable().add(Controls.newTextButton("OK", this::hideDialog)).width(240f); dialog.setKeepWithinStage(true); setDialogStage(GameHUD.getInstance()); showDialog(); @@ -244,14 +249,36 @@ public class MapStage extends GameStage { dialog.getContentTable().clear(); dialog.getButtonTable().clear(); dialog.clearListeners(); - dialog.getContentTable().add(Controls.newTypingLabel("[%150]"+Controls.colorIdToTypingString(DeckProxy.getColorIdentity(deck)))).align(Align.center); - dialog.getContentTable().add().row(); + DeckProxy dp = new DeckProxy(deck, "Constructed", GameType.Constructed, null); + FImageComplex cardArt = CardRenderer.getCardArt(dp.getHighestCMCCard()); + if (cardArt != null) { + Image art = new Image(cardArt.getTextureRegion()); + art.setWidth(50); + art.setHeight(40); + art.setPosition(10, 43); + Image image = new Image(FSkin.getDeckbox().get(1)); + image.setWidth(70); + image.setHeight(100); + image.setPosition(0, 15); + TextraLabel label = Controls.newTextraLabel("[%125]"+Controls.colorIdToTypingString(DeckProxy.getColorIdentity(deck))+"\n[%]"+deck.getName()); + label.setAlignment(Align.center); + label.setPosition(34, 20); + Group group = new Group(); + group.addActor(art); + group.addActor(image); + group.addActor(label); + dialog.getContentTable().add(group).height(100).width(65).center(); + dialog.getContentTable().add().row(); + } else { + dialog.getContentTable().add(Controls.newTextraLabel("[%125]"+Controls.colorIdToTypingString(DeckProxy.getColorIdentity(deck)))+"\n[%]"+deck.getName()).align(Align.center); + dialog.getContentTable().add().row(); + } TypingLabel L = Controls.newTypingLabel(message); L.setWrap(true); L.skipToTheEnd(); - dialog.getContentTable().add(L).width(240); + dialog.getContentTable().add(L).width(250); dialog.getButtonTable().add(Controls.newTextButton("OK", this::hideDialog)).width(240); dialog.setKeepWithinStage(true); setDialogStage(GameHUD.getInstance()); diff --git a/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java b/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java index 164e9ef42c5..6863f370c73 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java @@ -258,14 +258,13 @@ public class WorldStage extends GameStage implements SaveFileContent { //spriteGroup.setCullingArea(new Rectangle(player.getX()-getViewport().getWorldHeight()/2,player.getY()-getViewport().getWorldHeight()/2,getViewport().getWorldHeight(),getViewport().getWorldHeight())); super.draw(); if (WorldSave.getCurrentSave().getPlayer().hasAnnounceFantasy()) { - MapStage.getInstance().showDeckAwardDialog("{BLINK=WHITE;RED}Chaos Mode!{ENDBLINK}\n" + WorldSave.getCurrentSave().getPlayer().getName() + "'s Deck: " + - WorldSave.getCurrentSave().getPlayer().getSelectedDeck().getName() + - "\nEnemy will use Preconstructed or Random Generated Decks. Genetic AI Decks will be available to some enemies on Hard difficulty.", WorldSave.getCurrentSave().getPlayer().getSelectedDeck()); + MapStage.getInstance().showDeckAwardDialog("{BLINK=WHITE;RED}Chaos Mode!{ENDBLINK}\n" + + "Enemy will use Preconstructed or Random Generated Decks. Genetic AI Decks will be available to some enemies on Hard difficulty.", + WorldSave.getCurrentSave().getPlayer().getSelectedDeck()); WorldSave.getCurrentSave().getPlayer().clearAnnounceFantasy(); } else if (WorldSave.getCurrentSave().getPlayer().hasAnnounceCustom()) { - MapStage.getInstance().showDeckAwardDialog("{GRADIENT}Custom Deck Mode!{ENDGRADIENT}\n" + WorldSave.getCurrentSave().getPlayer().getName() + "'s Deck: " + - WorldSave.getCurrentSave().getPlayer().getSelectedDeck().getName() + - "\nSome enemies will use Genetic AI Decks randomly.", WorldSave.getCurrentSave().getPlayer().getSelectedDeck()); + MapStage.getInstance().showDeckAwardDialog("{GRADIENT}Custom Deck Mode!{ENDGRADIENT}\n" + + "Some enemies will use Genetic AI Decks randomly.", WorldSave.getCurrentSave().getPlayer().getSelectedDeck()); WorldSave.getCurrentSave().getPlayer().clearAnnounceCustom(); } } diff --git a/forge-gui-mobile/src/forge/adventure/util/MapDialog.java b/forge-gui-mobile/src/forge/adventure/util/MapDialog.java index f2c776273b4..0778b96f85d 100644 --- a/forge-gui-mobile/src/forge/adventure/util/MapDialog.java +++ b/forge-gui-mobile/src/forge/adventure/util/MapDialog.java @@ -28,7 +28,7 @@ public class MapDialog { private final MapStage stage; private Array data; private final int parentID; - private final static float WIDTH = 260f; + private final static float WIDTH = 250f; static private final String defaultJSON = "[\n" + " {\n" + " \"effect\":[],\n" + diff --git a/forge-gui/res/adventure/Shandalar/ui/hud_landscape.json b/forge-gui/res/adventure/Shandalar/ui/hud_landscape.json index 03cb65e7c5b..05262c935c3 100644 --- a/forge-gui/res/adventure/Shandalar/ui/hud_landscape.json +++ b/forge-gui/res/adventure/Shandalar/ui/hud_landscape.json @@ -61,7 +61,7 @@ "font": "default", "width": 64, "height": 16, - "x": 419, + "x": 425, "y": 56 }, { @@ -70,8 +70,8 @@ "font": "default", "width": 64, "height": 16, - "x": 419, - "y": 73 + "x": 425, + "y": 70 }, { "type": "Label", @@ -79,8 +79,8 @@ "font": "default", "width": 64, "height": 16, - "x": 419, - "y": 90 + "x": 425, + "y": 84 }, { "type": "TextButton", diff --git a/forge-gui/res/adventure/Shandalar/ui/hud_portrait.json b/forge-gui/res/adventure/Shandalar/ui/hud_portrait.json index 01cbbea1d40..1d1c430a66f 100644 --- a/forge-gui/res/adventure/Shandalar/ui/hud_portrait.json +++ b/forge-gui/res/adventure/Shandalar/ui/hud_portrait.json @@ -60,7 +60,7 @@ "name": "lifePoints", "width": 48, "height": 3, - "x": 209, + "x": 215, "y": 62 }, { @@ -69,7 +69,7 @@ "font": "default", "width": 48, "height": 3, - "x": 209, + "x": 215, "y": 76 }, { @@ -78,7 +78,7 @@ "font": "default", "width": 48, "height": 3, - "x": 209, + "x": 215, "y": 90 }, { From dbd0cbea273698d2fe5b444ed37181d0f0a22923 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Tue, 14 Feb 2023 06:57:28 +0800 Subject: [PATCH 3/3] update label --- forge-gui-mobile/src/forge/adventure/stage/MapStage.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/stage/MapStage.java b/forge-gui-mobile/src/forge/adventure/stage/MapStage.java index 3c431367506..ea0408e32db 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/MapStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/MapStage.java @@ -29,7 +29,6 @@ import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Scaling; import com.badlogic.gdx.utils.Timer; import com.github.tommyettinger.textra.TextraButton; -import com.github.tommyettinger.textra.TextraLabel; import com.github.tommyettinger.textra.TypingAdapter; import com.github.tommyettinger.textra.TypingLabel; import forge.Forge; @@ -260,7 +259,8 @@ public class MapStage extends GameStage { image.setWidth(70); image.setHeight(100); image.setPosition(0, 15); - TextraLabel label = Controls.newTextraLabel("[%125]"+Controls.colorIdToTypingString(DeckProxy.getColorIdentity(deck))+"\n[%]"+deck.getName()); + TypingLabel label = Controls.newTypingLabel("[%125]"+Controls.colorIdToTypingString(DeckProxy.getColorIdentity(deck))+"\n[%]"+deck.getName()); + label.skipToTheEnd(); label.setAlignment(Align.center); label.setPosition(34, 20); Group group = new Group(); @@ -270,7 +270,10 @@ public class MapStage extends GameStage { dialog.getContentTable().add(group).height(100).width(65).center(); dialog.getContentTable().add().row(); } else { - dialog.getContentTable().add(Controls.newTextraLabel("[%125]"+Controls.colorIdToTypingString(DeckProxy.getColorIdentity(deck)))+"\n[%]"+deck.getName()).align(Align.center); + TypingLabel label = Controls.newTypingLabel("[%125]"+Controls.colorIdToTypingString(DeckProxy.getColorIdentity(deck))+"\n[%]"+deck.getName()); + label.skipToTheEnd(); + label.setAlignment(Align.center); + dialog.getContentTable().add(label).align(Align.center); dialog.getContentTable().add().row(); }