devtools: show instance location information

This commit is contained in:
Adam
2018-04-22 17:38:41 -04:00
parent f11cb369b6
commit 77c7532177
2 changed files with 25 additions and 3 deletions

View File

@@ -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 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 CHUNK_SIZE = 8;
public static final int REGION_SIZE = 104;
}

View File

@@ -29,6 +29,8 @@ import java.awt.Dimension;
import java.awt.Graphics2D;
import javax.inject.Inject;
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.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
@@ -39,8 +41,6 @@ public class LocationOverlay extends Overlay
private final Client client;
private final DevToolsPlugin plugin;
private PanelComponent panelComponent;
@Inject
LocationOverlay(Client client, DevToolsPlugin plugin)
{
@@ -57,14 +57,34 @@ public class LocationOverlay extends Overlay
return null;
}
panelComponent = new PanelComponent();
PanelComponent panelComponent = new PanelComponent();
WorldPoint localWorld = client.getLocalPlayer().getWorldLocation();
LocalPoint localPoint = client.getLocalPlayer().getLocalLocation();
int regionX = localWorld.getX() >> 6;
int regionY = localWorld.getY() >> 6;
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(
"Tile",
localWorld.getX() + ", " + localWorld.getY() + ", " + client.getPlane()