Merge pull request #2459 from kevlahnota/newmaster2

update exit to worldmap
This commit is contained in:
Anthony Calosa
2023-02-13 01:40:32 +08:00
committed by GitHub
3 changed files with 37 additions and 24 deletions

View File

@@ -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<String> locationTypes = Sets.newHashSet("capital", "castle", "cave", "dungeon", "town");
return locationTypes.contains(location);
}
}

View File

@@ -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;
@@ -302,22 +301,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 +356,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 +439,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 +456,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);
}

View File

@@ -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();