From c07697bdae65433a2e1fbeaaf1f97b2b020ef510 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Mon, 13 Feb 2023 00:51:58 +0800 Subject: [PATCH 1/3] update exit to worldmap --- .../src/forge/adventure/scene/GameScene.java | 10 +++++----- .../src/forge/adventure/stage/GameHUD.java | 20 +++++++------------ 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/scene/GameScene.java b/forge-gui-mobile/src/forge/adventure/scene/GameScene.java index 95fe089690c..07058ef66a4 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/GameScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/GameScene.java @@ -2,6 +2,7 @@ package forge.adventure.scene; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL20; +import com.google.common.collect.Sets; import forge.Forge; import forge.adventure.data.BiomeData; import forge.adventure.stage.MapStage; @@ -11,6 +12,7 @@ import forge.adventure.world.World; import forge.util.TextUtil; import java.util.List; +import java.util.Set; /** * Game scene main over world scene @@ -19,10 +21,8 @@ import java.util.List; public class GameScene extends HudScene { public GameScene() { super(WorldStage.getInstance()); - } - private static GameScene object; public static GameScene instance() { @@ -48,7 +48,6 @@ public class GameScene extends HudScene { hud.draw(); } - @Override public void enter() { MapStage.getInstance().clearIsInMap(); @@ -77,9 +76,10 @@ public class GameScene extends HudScene { return location; } - public boolean isInDungeonOrCave() { + public boolean isNotInWorldMap() { String location = getAdventurePlayerLocation(false); - return location.equalsIgnoreCase("dungeon") || location.equalsIgnoreCase("cave"); + Set locationTypes = Sets.newHashSet("capital", "castle", "cave", "dungeon", "town"); + return locationTypes.contains(location); } } diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java index c035916fa66..b0875740f66 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java @@ -302,22 +302,16 @@ public class GameHUD extends Stage { } private void exitToWorldMap(){ + if (!GameScene.instance().isNotInWorldMap()) //prevent showing this dialog to WorldMap + return; dialog.getButtonTable().clear(); dialog.getContentTable().clear(); + dialog.clearListeners(); TextraButton YES = Controls.newTextButton(Forge.getLocalizer().getMessage("lblYes"), this::exitDungeonCallback); - YES.setVisible(false); TextraButton NO = Controls.newTextButton(Forge.getLocalizer().getMessage("lblNo"), this::hideDialog); - NO.setVisible(false); TypingLabel L = Controls.newTypingLabel(Forge.getLocalizer().getMessageorUseDefault("lblExitToWoldMap", "Exit to the World Map?")); L.setWrap(true); - L.setTypingListener(new TypingAdapter() { - @Override - public void end() { - YES.setVisible(true); - NO.setVisible(true); - } - }); - + L.skipToTheEnd(); dialog.getButtonTable().add(YES).width(60f); dialog.getButtonTable().add(NO).width(60f); dialog.getContentTable().add(L).width(120f); @@ -363,7 +357,7 @@ public class GameHUD extends Stage { setVisibility(shards, visible); setVisibility(money, visible); setVisibility(blank, visible); - setVisibility(exitToWorldMapActor, GameScene.instance().isInDungeonOrCave()); + setVisibility(exitToWorldMapActor, GameScene.instance().isNotInWorldMap()); setAlpha(avatarborder, visible); setAlpha(avatar, visible); setAlpha(deckActor, visible); @@ -446,7 +440,7 @@ public class GameHUD extends Stage { inventoryActor.addAction(Actions.sequence(Actions.fadeOut(0.15f), Actions.hide(), Actions.moveTo(inventoryActor.getX() + inventoryActor.getWidth(), inventoryActor.getY()))); statsActor.addAction(Actions.sequence(Actions.fadeOut(0.20f), Actions.hide(), Actions.moveTo(statsActor.getX() + statsActor.getWidth(), statsActor.getY()))); menuActor.addAction(Actions.sequence(Actions.fadeOut(0.25f), Actions.hide(), Actions.moveTo(menuActor.getX() + menuActor.getWidth(), menuActor.getY()))); - if (GameScene.instance().isInDungeonOrCave()) + if (GameScene.instance().isNotInWorldMap()) exitToWorldMapActor.addAction(Actions.sequence(Actions.fadeOut(0.2f), Actions.hide(), Actions.moveTo(exitToWorldMapActor.getX() + exitToWorldMapActor.getWidth(), exitToWorldMapActor.getY()))); FThreads.delayInEDT(300, () -> isHiding = false); } @@ -463,7 +457,7 @@ public class GameHUD extends Stage { 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)))); - if (GameScene.instance().isInDungeonOrCave()) + if (GameScene.instance().isNotInWorldMap()) exitToWorldMapActor.addAction(Actions.sequence(Actions.delay(0.25f), Actions.parallel(Actions.show(), Actions.alpha(opacity, 0.1f), Actions.moveTo(referenceX, exitToWorldMapActor.getY(), 0.25f)))); FThreads.delayInEDT(300, () -> isShowing = false); } From 30aeac257cb50b0c0d8ad6c5d35f8b175e16cb7e Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Mon, 13 Feb 2023 01:04:52 +0800 Subject: [PATCH 2/3] unused import --- forge-gui-mobile/src/forge/adventure/stage/GameHUD.java | 1 - 1 file changed, 1 deletion(-) diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java index b0875740f66..5c6df1995a1 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java @@ -23,7 +23,6 @@ import com.badlogic.gdx.utils.Timer; import com.badlogic.gdx.utils.viewport.ScalingViewport; 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; import forge.adventure.player.AdventurePlayer; From 8e0de8f4bab59dc14fe616e05cf430c262c393d3 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Mon, 13 Feb 2023 01:35:50 +0800 Subject: [PATCH 3/3] update Item tooltips --- .../src/forge/adventure/util/RewardActor.java | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/util/RewardActor.java b/forge-gui-mobile/src/forge/adventure/util/RewardActor.java index dd6a4d9f885..5013eac8080 100644 --- a/forge-gui-mobile/src/forge/adventure/util/RewardActor.java +++ b/forge-gui-mobile/src/forge/adventure/util/RewardActor.java @@ -250,7 +250,7 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb DrawOnPixmap.draw(drawingMap, (int) ((backSprite.getWidth() / 2f) - item.getWidth() / 2f), (int) ((backSprite.getHeight() / 4f) * 1.7f), item); //DrawOnPixmap.drawText(drawingMap, String.valueOf(reward.getItem().name), 0, (int) ((backSprite.getHeight() / 8f) * 1f), backSprite.getWidth(), false); - setItemTooltips(item, backSprite); + setItemTooltips(item, backSprite, atlas); image = new Texture(drawingMap); drawingMap.dispose(); needsToBeDisposed = true; @@ -268,7 +268,7 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb DrawOnPixmap.draw(drawingMap, (int) ((backSprite.getWidth() / 2f) - item.getWidth() / 2f), (int) ((backSprite.getHeight() / 4f) * 1f), item); DrawOnPixmap.drawText(drawingMap, String.valueOf(reward.getCount()), 0, (int) ((backSprite.getHeight() / 4f) * 2f) - 1, backSprite.getWidth(), true, Color.WHITE); - setItemTooltips(item, backSprite); + setItemTooltips(item, backSprite, atlas); image = new Texture(drawingMap); drawingMap.dispose(); needsToBeDisposed = true; @@ -476,7 +476,7 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb return result; } - private void setItemTooltips(Sprite icon, Sprite backSprite) { + private void setItemTooltips(Sprite icon, Sprite backSprite, TextureAtlas atlas) { if (generatedTooltip == null) { Matrix4 m = new Matrix4(); GlyphLayout layout = new GlyphLayout(); @@ -494,8 +494,28 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb layout.setText(font, item != null ? item.name : getReward().type.name(), Color.WHITE, preview_w - 64, Align.center, true); getGraphics().drawText(font, layout, 32, preview_h - 70); font = Controls.getBitmapFont("default", 3.5f / (preview_h / preview_w)); - layout.setText(font, item != null ? item.getDescription() : "Adds " + - String.valueOf(getReward().getCount()) + " " + getReward().type, Color.WHITE, preview_w - 128, item != null ? Align.left : Align.center, true); + if (item != null) { + String text = item.getDescription(); + if (text.contains("[+Shards]")) { + Sprite iconSprite = atlas.createSprite("Shards"); + if (iconSprite == null) { + layout.setText(font, text, Color.WHITE, preview_w - 128, Align.left, true); + } else { + int index = text.lastIndexOf("\n");//currently [+Shards] is the last line in the description + GlyphLayout c = new GlyphLayout(); + c.setText(font, text.substring(index < 0 ? 0 : index, text.indexOf("[+")));//get the glyphcount + float xmod = c.glyphCount * font.getLineHeight()/4; + String newText = text.replace("[+Shards]", ""); + layout.setText(font, newText, Color.WHITE, preview_w - 128, Align.left, true); + getGraphics().drawImage(iconSprite, xmod+64, (preview_h / 2.5f) + c.height + layout.height + font.getLineHeight()/1.5f, font.getLineHeight(), font.getLineHeight()); + } + } else { + layout.setText(font, text, Color.WHITE, preview_w - 128, item != null ? Align.left : Align.center, true); + } + } else { + layout.setText(font, "Adds " + String.valueOf(getReward().getCount()) + " " + getReward().type, Color.WHITE, preview_w - 128, item != null ? Align.left : Align.center, true); + } + getGraphics().drawText(font, layout, 64, preview_h / 2.5f); getGraphics().end(); getGraphics().endClip();