mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 02:08:00 +00:00
Merge pull request #2459 from kevlahnota/newmaster2
update exit to worldmap
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user