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; diff --git a/forge-gui-mobile/src/forge/adventure/stage/MapStage.java b/forge-gui-mobile/src/forge/adventure/stage/MapStage.java index db2d5816142..ea0408e32db 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/MapStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/MapStage.java @@ -38,8 +38,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 +216,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 +238,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 +248,40 @@ 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); + 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(); + group.addActor(art); + group.addActor(image); + group.addActor(label); + dialog.getContentTable().add(group).height(100).width(65).center(); + dialog.getContentTable().add().row(); + } else { + 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(); + } 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 }, {