devtools: show instance location information
This commit is contained in:
@@ -34,4 +34,6 @@ public class Constants
|
|||||||
public static final Dimension GAME_FIXED_SIZE = new Dimension(GAME_FIXED_WIDTH, GAME_FIXED_HEIGHT);
|
public static final Dimension GAME_FIXED_SIZE = new Dimension(GAME_FIXED_WIDTH, GAME_FIXED_HEIGHT);
|
||||||
public static final double GAME_FIXED_ASPECT_RATIO = (double) GAME_FIXED_WIDTH / (double) GAME_FIXED_HEIGHT;
|
public static final double GAME_FIXED_ASPECT_RATIO = (double) GAME_FIXED_WIDTH / (double) GAME_FIXED_HEIGHT;
|
||||||
public static final int CLIENT_DEFAULT_ZOOM = 512;
|
public static final int CLIENT_DEFAULT_ZOOM = 512;
|
||||||
|
public static final int CHUNK_SIZE = 8;
|
||||||
|
public static final int REGION_SIZE = 104;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ import java.awt.Dimension;
|
|||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
|
import static net.runelite.api.Constants.CHUNK_SIZE;
|
||||||
|
import net.runelite.api.coords.LocalPoint;
|
||||||
import net.runelite.api.coords.WorldPoint;
|
import net.runelite.api.coords.WorldPoint;
|
||||||
import net.runelite.client.ui.overlay.Overlay;
|
import net.runelite.client.ui.overlay.Overlay;
|
||||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||||
@@ -39,8 +41,6 @@ public class LocationOverlay extends Overlay
|
|||||||
private final Client client;
|
private final Client client;
|
||||||
private final DevToolsPlugin plugin;
|
private final DevToolsPlugin plugin;
|
||||||
|
|
||||||
private PanelComponent panelComponent;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
LocationOverlay(Client client, DevToolsPlugin plugin)
|
LocationOverlay(Client client, DevToolsPlugin plugin)
|
||||||
{
|
{
|
||||||
@@ -57,14 +57,34 @@ public class LocationOverlay extends Overlay
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
panelComponent = new PanelComponent();
|
PanelComponent panelComponent = new PanelComponent();
|
||||||
|
|
||||||
WorldPoint localWorld = client.getLocalPlayer().getWorldLocation();
|
WorldPoint localWorld = client.getLocalPlayer().getWorldLocation();
|
||||||
|
LocalPoint localPoint = client.getLocalPlayer().getLocalLocation();
|
||||||
|
|
||||||
int regionX = localWorld.getX() >> 6;
|
int regionX = localWorld.getX() >> 6;
|
||||||
int regionY = localWorld.getY() >> 6;
|
int regionY = localWorld.getY() >> 6;
|
||||||
int regionID = regionX << 8 | regionY;
|
int regionID = regionX << 8 | regionY;
|
||||||
|
|
||||||
|
if (client.isInInstancedRegion())
|
||||||
|
{
|
||||||
|
panelComponent.setWidth(150);
|
||||||
|
panelComponent.getLines().add(new PanelComponent.Line("Instance"));
|
||||||
|
|
||||||
|
int[][][] instanceTemplateChunks = client.getInstanceTemplateChunks();
|
||||||
|
int z = client.getPlane();
|
||||||
|
int chunkData = instanceTemplateChunks[z][localPoint.getRegionX() / CHUNK_SIZE][localPoint.getRegionY() / CHUNK_SIZE];
|
||||||
|
|
||||||
|
int rotation = chunkData >> 1 & 0x3;
|
||||||
|
int chunkY = (chunkData >> 3 & 0x7FF) * CHUNK_SIZE;
|
||||||
|
int chunkX = (chunkData >> 14 & 0x3FF) * CHUNK_SIZE;
|
||||||
|
|
||||||
|
panelComponent.getLines().add(new PanelComponent.Line(
|
||||||
|
"Chunk " + localPoint.getRegionX() / CHUNK_SIZE + "," + localPoint.getRegionY() / CHUNK_SIZE,
|
||||||
|
rotation + " " + chunkX + " " + chunkY
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
panelComponent.getLines().add(new PanelComponent.Line(
|
panelComponent.getLines().add(new PanelComponent.Line(
|
||||||
"Tile",
|
"Tile",
|
||||||
localWorld.getX() + ", " + localWorld.getY() + ", " + client.getPlane()
|
localWorld.getX() + ", " + localWorld.getY() + ", " + client.getPlane()
|
||||||
|
|||||||
Reference in New Issue
Block a user