mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 10:18:01 +00:00
Quest location on MapViewScene
This commit is contained in:
@@ -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,61 +25,70 @@ 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)
|
||||
object=new MapViewScene();
|
||||
if (object == null)
|
||||
object = new MapViewScene();
|
||||
return object;
|
||||
}
|
||||
|
||||
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);
|
||||
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)
|
||||
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());
|
||||
miniMapTexture = new Texture(WorldSave.getCurrentSave().getWorld().getBiomeImage());
|
||||
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);
|
||||
miniMapPlayer.setSize(Current.player().avatar().getRegionWidth(), Current.player().avatar().getRegionHeight());
|
||||
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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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 |
Reference in New Issue
Block a user