mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 10:18:01 +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.Gdx;
|
||||||
import com.badlogic.gdx.graphics.GL20;
|
import com.badlogic.gdx.graphics.GL20;
|
||||||
|
import com.google.common.collect.Sets;
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
import forge.adventure.data.BiomeData;
|
import forge.adventure.data.BiomeData;
|
||||||
import forge.adventure.stage.MapStage;
|
import forge.adventure.stage.MapStage;
|
||||||
@@ -11,6 +12,7 @@ import forge.adventure.world.World;
|
|||||||
import forge.util.TextUtil;
|
import forge.util.TextUtil;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Game scene main over world scene
|
* Game scene main over world scene
|
||||||
@@ -19,10 +21,8 @@ import java.util.List;
|
|||||||
public class GameScene extends HudScene {
|
public class GameScene extends HudScene {
|
||||||
public GameScene() {
|
public GameScene() {
|
||||||
super(WorldStage.getInstance());
|
super(WorldStage.getInstance());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static GameScene object;
|
private static GameScene object;
|
||||||
|
|
||||||
public static GameScene instance() {
|
public static GameScene instance() {
|
||||||
@@ -48,7 +48,6 @@ public class GameScene extends HudScene {
|
|||||||
hud.draw();
|
hud.draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enter() {
|
public void enter() {
|
||||||
MapStage.getInstance().clearIsInMap();
|
MapStage.getInstance().clearIsInMap();
|
||||||
@@ -77,9 +76,10 @@ public class GameScene extends HudScene {
|
|||||||
return location;
|
return location;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isInDungeonOrCave() {
|
public boolean isNotInWorldMap() {
|
||||||
String location = getAdventurePlayerLocation(false);
|
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.badlogic.gdx.utils.viewport.ScalingViewport;
|
||||||
import com.github.tommyettinger.textra.TextraButton;
|
import com.github.tommyettinger.textra.TextraButton;
|
||||||
import com.github.tommyettinger.textra.TextraLabel;
|
import com.github.tommyettinger.textra.TextraLabel;
|
||||||
import com.github.tommyettinger.textra.TypingAdapter;
|
|
||||||
import com.github.tommyettinger.textra.TypingLabel;
|
import com.github.tommyettinger.textra.TypingLabel;
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
import forge.adventure.player.AdventurePlayer;
|
import forge.adventure.player.AdventurePlayer;
|
||||||
@@ -302,22 +301,16 @@ public class GameHUD extends Stage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void exitToWorldMap(){
|
private void exitToWorldMap(){
|
||||||
|
if (!GameScene.instance().isNotInWorldMap()) //prevent showing this dialog to WorldMap
|
||||||
|
return;
|
||||||
dialog.getButtonTable().clear();
|
dialog.getButtonTable().clear();
|
||||||
dialog.getContentTable().clear();
|
dialog.getContentTable().clear();
|
||||||
|
dialog.clearListeners();
|
||||||
TextraButton YES = Controls.newTextButton(Forge.getLocalizer().getMessage("lblYes"), this::exitDungeonCallback);
|
TextraButton YES = Controls.newTextButton(Forge.getLocalizer().getMessage("lblYes"), this::exitDungeonCallback);
|
||||||
YES.setVisible(false);
|
|
||||||
TextraButton NO = Controls.newTextButton(Forge.getLocalizer().getMessage("lblNo"), this::hideDialog);
|
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?"));
|
TypingLabel L = Controls.newTypingLabel(Forge.getLocalizer().getMessageorUseDefault("lblExitToWoldMap", "Exit to the World Map?"));
|
||||||
L.setWrap(true);
|
L.setWrap(true);
|
||||||
L.setTypingListener(new TypingAdapter() {
|
L.skipToTheEnd();
|
||||||
@Override
|
|
||||||
public void end() {
|
|
||||||
YES.setVisible(true);
|
|
||||||
NO.setVisible(true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
dialog.getButtonTable().add(YES).width(60f);
|
dialog.getButtonTable().add(YES).width(60f);
|
||||||
dialog.getButtonTable().add(NO).width(60f);
|
dialog.getButtonTable().add(NO).width(60f);
|
||||||
dialog.getContentTable().add(L).width(120f);
|
dialog.getContentTable().add(L).width(120f);
|
||||||
@@ -363,7 +356,7 @@ public class GameHUD extends Stage {
|
|||||||
setVisibility(shards, visible);
|
setVisibility(shards, visible);
|
||||||
setVisibility(money, visible);
|
setVisibility(money, visible);
|
||||||
setVisibility(blank, visible);
|
setVisibility(blank, visible);
|
||||||
setVisibility(exitToWorldMapActor, GameScene.instance().isInDungeonOrCave());
|
setVisibility(exitToWorldMapActor, GameScene.instance().isNotInWorldMap());
|
||||||
setAlpha(avatarborder, visible);
|
setAlpha(avatarborder, visible);
|
||||||
setAlpha(avatar, visible);
|
setAlpha(avatar, visible);
|
||||||
setAlpha(deckActor, 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())));
|
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())));
|
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())));
|
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())));
|
exitToWorldMapActor.addAction(Actions.sequence(Actions.fadeOut(0.2f), Actions.hide(), Actions.moveTo(exitToWorldMapActor.getX() + exitToWorldMapActor.getWidth(), exitToWorldMapActor.getY())));
|
||||||
FThreads.delayInEDT(300, () -> isHiding = false);
|
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))));
|
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))));
|
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))));
|
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))));
|
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);
|
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.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);
|
//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);
|
image = new Texture(drawingMap);
|
||||||
drawingMap.dispose();
|
drawingMap.dispose();
|
||||||
needsToBeDisposed = true;
|
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.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);
|
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);
|
image = new Texture(drawingMap);
|
||||||
drawingMap.dispose();
|
drawingMap.dispose();
|
||||||
needsToBeDisposed = true;
|
needsToBeDisposed = true;
|
||||||
@@ -476,7 +476,7 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setItemTooltips(Sprite icon, Sprite backSprite) {
|
private void setItemTooltips(Sprite icon, Sprite backSprite, TextureAtlas atlas) {
|
||||||
if (generatedTooltip == null) {
|
if (generatedTooltip == null) {
|
||||||
Matrix4 m = new Matrix4();
|
Matrix4 m = new Matrix4();
|
||||||
GlyphLayout layout = new GlyphLayout();
|
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);
|
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);
|
getGraphics().drawText(font, layout, 32, preview_h - 70);
|
||||||
font = Controls.getBitmapFont("default", 3.5f / (preview_h / preview_w));
|
font = Controls.getBitmapFont("default", 3.5f / (preview_h / preview_w));
|
||||||
layout.setText(font, item != null ? item.getDescription() : "Adds " +
|
if (item != null) {
|
||||||
String.valueOf(getReward().getCount()) + " " + getReward().type, Color.WHITE, preview_w - 128, item != null ? Align.left : Align.center, true);
|
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().drawText(font, layout, 64, preview_h / 2.5f);
|
||||||
getGraphics().end();
|
getGraphics().end();
|
||||||
getGraphics().endClip();
|
getGraphics().endClip();
|
||||||
|
|||||||
Reference in New Issue
Block a user