Quest location on MapViewScene

This commit is contained in:
Anthony Calosa
2023-06-29 16:34:57 +08:00
parent c6f6e09d98
commit 60c79a32c3
3 changed files with 47 additions and 30 deletions

View File

@@ -1,13 +1,18 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.github.tommyettinger.textra.TypingLabel;
import forge.Forge; import forge.Forge;
import forge.adventure.data.AdventureQuestData;
import forge.adventure.pointofintrest.PointOfInterest;
import forge.adventure.stage.GameHUD; import forge.adventure.stage.GameHUD;
import forge.adventure.stage.WorldStage; import forge.adventure.stage.WorldStage;
import forge.adventure.util.Controls;
import forge.adventure.util.Current; import forge.adventure.util.Current;
import forge.adventure.world.WorldSave; import forge.adventure.world.WorldSave;
@@ -20,61 +25,70 @@ public class MapViewScene extends UIScene {
private final Image img; private final Image img;
private Texture miniMapTexture; private Texture miniMapTexture;
private final Image miniMapPlayer; private final Image miniMapPlayer;
private final Group table;
public static MapViewScene instance() { public static MapViewScene instance() {
if(object==null) if (object == null)
object=new MapViewScene(); object = new MapViewScene();
return object; return object;
} }
private MapViewScene() { private MapViewScene() {
super(Forge.isLandscapeMode() ? "ui/map.json" : "ui/map_portrait.json"); super(Forge.isLandscapeMode() ? "ui/map.json" : "ui/map_portrait.json");
ui.onButtonPress("done", this::done); ui.onButtonPress("done", this::done);
scroll = ui.findActor("map"); scroll = ui.findActor("map");
Group table=new Group(); table = new Group();
scroll.setActor(table); scroll.setActor(table);
img=new Image(); img = new Image();
miniMapPlayer=new Image(); miniMapPlayer = new Image();
img.setPosition(0,0); img.setPosition(0, 0);
table.addActor(img); table.addActor(img);
table.addActor(miniMapPlayer); table.addActor(miniMapPlayer);
//img.setFillParent(true);
} }
public boolean done() { public boolean done() {
GameHUD.getInstance().getTouchpad().setVisible(false); GameHUD.getInstance().getTouchpad().setVisible(false);
for (Actor a : table.getChildren()) {
if (a instanceof TypingLabel)
a.remove();
}
Forge.switchToLast(); Forge.switchToLast();
return true; return true;
} }
@Override @Override
public void enter() { public void enter() {
if(miniMapTexture!=null) if (miniMapTexture != null)
miniMapTexture.dispose(); miniMapTexture.dispose();
miniMapTexture=new Texture(WorldSave.getCurrentSave().getWorld().getBiomeImage()); miniMapTexture = new Texture(WorldSave.getCurrentSave().getWorld().getBiomeImage());
//img.setSize(miniMapTexture.getWidth(),miniMapTexture.getHeight()); img.setSize(WorldSave.getCurrentSave().getWorld().getBiomeImage().getWidth(), WorldSave.getCurrentSave().getWorld().getBiomeImage().getHeight());
img.setSize(WorldSave.getCurrentSave().getWorld().getBiomeImage().getWidth(),WorldSave.getCurrentSave().getWorld().getBiomeImage().getHeight()); img.getParent().setSize(WorldSave.getCurrentSave().getWorld().getBiomeImage().getWidth(), WorldSave.getCurrentSave().getWorld().getBiomeImage().getHeight());
img.getParent().setSize(WorldSave.getCurrentSave().getWorld().getBiomeImage().getWidth(),WorldSave.getCurrentSave().getWorld().getBiomeImage().getHeight());
img.setDrawable(new TextureRegionDrawable(miniMapTexture)); img.setDrawable(new TextureRegionDrawable(miniMapTexture));
miniMapPlayer.setDrawable(new TextureRegionDrawable(Current.player().avatar())); miniMapPlayer.setDrawable(new TextureRegionDrawable(Current.player().avatar()));
miniMapPlayer.setSize(Current.player().avatar().getRegionWidth(), Current.player().avatar().getRegionHeight());
int yPos = (int) WorldStage.getInstance().getPlayerSprite().getY(); float avatarX = getMapX(WorldStage.getInstance().getPlayerSprite().getX()) - miniMapPlayer.getWidth() / 2;
int xPos = (int) WorldStage.getInstance().getPlayerSprite().getX(); float avatarY = getMapY(WorldStage.getInstance().getPlayerSprite().getY()) - miniMapPlayer.getHeight() / 2;
int xPosMini = (int) (((float) xPos / (float) WorldSave.getCurrentSave().getWorld().getTileSize() / (float) WorldSave.getCurrentSave().getWorld().getWidthInTiles()) * img.getWidth()); miniMapPlayer.setPosition(avatarX, avatarY);
int yPosMini = (int) (((float) yPos / (float) WorldSave.getCurrentSave().getWorld().getTileSize() / (float) WorldSave.getCurrentSave().getWorld().getHeightInTiles()) * img.getHeight());
miniMapPlayer.setSize(Current.player().avatar().getRegionWidth(),Current.player().avatar().getRegionHeight());
miniMapPlayer.setPosition( xPosMini - miniMapPlayer.getWidth()/2, yPosMini - miniMapPlayer.getHeight()/2);
miniMapPlayer.layout(); miniMapPlayer.layout();
scroll.scrollTo(xPosMini - miniMapPlayer.getWidth()/2, yPosMini - miniMapPlayer.getHeight()/2,miniMapPlayer.getWidth(), scroll.scrollTo(avatarX, avatarY, miniMapPlayer.getWidth(), miniMapPlayer.getHeight(), true, true);
miniMapPlayer.getHeight(),true,true); for (AdventureQuestData adq : Current.player().getQuests()) {
//img.setAlign(Align.center); if (adq.isTracked) {
PointOfInterest poi = adq.getTargetPOI();
if (poi != null) {
TypingLabel label = Controls.newTypingLabel("[%80][+GPS]{GRADIENT=RED;WHITE;1;1}-" + poi.getData().name + "{ENDGRADIENT}");
table.addActor(label);
label.setPosition(getMapX(poi.getPosition().x) - label.getWidth() / 2, getMapY(poi.getPosition().y) - label.getHeight() / 2);
label.skipToTheEnd();
}
}
}
super.enter(); super.enter();
} }
float getMapX(float posX) {
return (posX / (float) WorldSave.getCurrentSave().getWorld().getTileSize() / (float) WorldSave.getCurrentSave().getWorld().getWidthInTiles()) * img.getWidth();
}
float getMapY(float posY) {
return (posY / (float) WorldSave.getCurrentSave().getWorld().getTileSize() / (float) WorldSave.getCurrentSave().getWorld().getHeightInTiles()) * img.getHeight();
}
} }

View File

@@ -441,6 +441,9 @@ Flip
LogBook LogBook
xy: 240, 912 xy: 240, 912
size: 16, 16 size: 16, 16
GPS
xy: 464, 0
size: 16, 16
UnderworldCookbook UnderworldCookbook
xy: 304, 960 xy: 304, 960
size: 16, 16 size: 16, 16

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 273 KiB