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;
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.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.github.tommyettinger.textra.TypingLabel;
import forge.Forge;
import forge.adventure.data.AdventureQuestData;
import forge.adventure.pointofintrest.PointOfInterest;
import forge.adventure.stage.GameHUD;
import forge.adventure.stage.WorldStage;
import forge.adventure.util.Controls;
import forge.adventure.util.Current;
import forge.adventure.world.WorldSave;
@@ -20,6 +25,7 @@ public class MapViewScene extends UIScene {
private final Image img;
private Texture miniMapTexture;
private final Image miniMapPlayer;
private final Group table;
public static MapViewScene instance() {
if (object == null)
@@ -29,52 +35,60 @@ public class MapViewScene extends UIScene {
private MapViewScene() {
super(Forge.isLandscapeMode() ? "ui/map.json" : "ui/map_portrait.json");
ui.onButtonPress("done", this::done);
scroll = ui.findActor("map");
Group table=new Group();
table = new Group();
scroll.setActor(table);
img = new Image();
miniMapPlayer = new Image();
img.setPosition(0, 0);
table.addActor(img);
table.addActor(miniMapPlayer);
//img.setFillParent(true);
}
public boolean done() {
GameHUD.getInstance().getTouchpad().setVisible(false);
for (Actor a : table.getChildren()) {
if (a instanceof TypingLabel)
a.remove();
}
Forge.switchToLast();
return true;
}
@Override
public void enter() {
if (miniMapTexture != null)
miniMapTexture.dispose();
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.getParent().setSize(WorldSave.getCurrentSave().getWorld().getBiomeImage().getWidth(), WorldSave.getCurrentSave().getWorld().getBiomeImage().getHeight());
img.setDrawable(new TextureRegionDrawable(miniMapTexture));
miniMapPlayer.setDrawable(new TextureRegionDrawable(Current.player().avatar()));
int yPos = (int) WorldStage.getInstance().getPlayerSprite().getY();
int xPos = (int) WorldStage.getInstance().getPlayerSprite().getX();
int xPosMini = (int) (((float) xPos / (float) WorldSave.getCurrentSave().getWorld().getTileSize() / (float) WorldSave.getCurrentSave().getWorld().getWidthInTiles()) * img.getWidth());
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);
float avatarX = getMapX(WorldStage.getInstance().getPlayerSprite().getX()) - miniMapPlayer.getWidth() / 2;
float avatarY = getMapY(WorldStage.getInstance().getPlayerSprite().getY()) - miniMapPlayer.getHeight() / 2;
miniMapPlayer.setPosition(avatarX, avatarY);
miniMapPlayer.layout();
scroll.scrollTo(xPosMini - miniMapPlayer.getWidth()/2, yPosMini - miniMapPlayer.getHeight()/2,miniMapPlayer.getWidth(),
miniMapPlayer.getHeight(),true,true);
//img.setAlign(Align.center);
scroll.scrollTo(avatarX, avatarY, miniMapPlayer.getWidth(), miniMapPlayer.getHeight(), true, true);
for (AdventureQuestData adq : Current.player().getQuests()) {
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();
}
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
xy: 240, 912
size: 16, 16
GPS
xy: 464, 0
size: 16, 16
UnderworldCookbook
xy: 304, 960
size: 16, 16

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 273 KiB