Files
runelite/runescape-client/src/main/java/WorldMapArea.java
Owain van Brakel 5e9375bc8b project: rev 200
2021-10-06 13:56:56 +02:00

526 lines
12 KiB
Java

import java.util.Iterator;
import java.util.LinkedList;
import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("fr")
@Implements("WorldMapArea")
public class WorldMapArea {
@ObfuscatedName("gc")
@ObfuscatedGetter(
intValue = 334389247
)
static int field2053;
@ObfuscatedName("l")
@ObfuscatedGetter(
intValue = 1151523411
)
@Export("id")
int id;
@ObfuscatedName("q")
@Export("internalName")
String internalName;
@ObfuscatedName("f")
@Export("externalName")
String externalName;
@ObfuscatedName("j")
@ObfuscatedGetter(
intValue = 1870281145
)
@Export("backGroundColor")
int backGroundColor;
@ObfuscatedName("m")
@ObfuscatedGetter(
intValue = 1005337785
)
@Export("zoom")
int zoom;
@ObfuscatedName("k")
@ObfuscatedSignature(
descriptor = "Lic;"
)
@Export("origin")
Coord origin;
@ObfuscatedName("t")
@ObfuscatedGetter(
intValue = -2031091247
)
@Export("regionLowX")
int regionLowX;
@ObfuscatedName("a")
@ObfuscatedGetter(
intValue = 237078907
)
@Export("regionHighX")
int regionHighX;
@ObfuscatedName("e")
@ObfuscatedGetter(
intValue = -992415669
)
@Export("regionLowY")
int regionLowY;
@ObfuscatedName("i")
@ObfuscatedGetter(
intValue = -94527557
)
@Export("regionHighY")
int regionHighY;
@ObfuscatedName("y")
@Export("isMain")
boolean isMain;
@ObfuscatedName("w")
@Export("sections")
LinkedList sections;
public WorldMapArea() {
this.id = -1;
this.backGroundColor = -1;
this.zoom = -1;
this.origin = null;
this.regionLowX = Integer.MAX_VALUE;
this.regionHighX = 0;
this.regionLowY = Integer.MAX_VALUE;
this.regionHighY = 0;
this.isMain = false;
}
@ObfuscatedName("l")
@ObfuscatedSignature(
descriptor = "(Lot;IB)V",
garbageValue = "-21"
)
@Export("read")
public void read(Buffer var1, int var2) {
this.id = var2;
this.internalName = var1.readStringCp1252NullTerminated();
this.externalName = var1.readStringCp1252NullTerminated();
this.origin = new Coord(var1.readInt());
this.backGroundColor = var1.readInt();
var1.readUnsignedByte();
this.isMain = var1.readUnsignedByte() == 1;
this.zoom = var1.readUnsignedByte();
int var3 = var1.readUnsignedByte();
this.sections = new LinkedList();
for (int var4 = 0; var4 < var3; ++var4) {
this.sections.add(this.readWorldMapSection(var1));
}
this.setBounds();
}
@ObfuscatedName("q")
@ObfuscatedSignature(
descriptor = "(Lot;B)Lgl;",
garbageValue = "1"
)
@Export("readWorldMapSection")
WorldMapSection readWorldMapSection(Buffer var1) {
int var2 = var1.readUnsignedByte();
WorldMapSectionType[] var3 = new WorldMapSectionType[]{WorldMapSectionType.WORLDMAPSECTIONTYPE2, WorldMapSectionType.WORLDMAPSECTIONTYPE1, WorldMapSectionType.WORLDMAPSECTIONTYPE3, WorldMapSectionType.WORLDMAPSECTIONTYPE0};
WorldMapSectionType var4 = (WorldMapSectionType)class128.findEnumerated(var3, var2);
Object var5 = null;
switch(var4.type) {
case 0:
var5 = new class184();
break;
case 1:
var5 = new WorldMapSection1();
break;
case 2:
var5 = new WorldMapSection0();
break;
case 3:
var5 = new WorldMapSection2();
break;
default:
throw new IllegalStateException("");
}
((WorldMapSection)var5).read(var1);
return (WorldMapSection)var5;
}
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "(IIII)Z",
garbageValue = "668263956"
)
@Export("containsCoord")
public boolean containsCoord(int var1, int var2, int var3) {
Iterator var4 = this.sections.iterator();
WorldMapSection var5;
do {
if (!var4.hasNext()) {
return false;
}
var5 = (WorldMapSection)var4.next();
} while(!var5.containsCoord(var1, var2, var3));
return true;
}
@ObfuscatedName("j")
@ObfuscatedSignature(
descriptor = "(III)Z",
garbageValue = "1626377450"
)
@Export("containsPosition")
public boolean containsPosition(int var1, int var2) {
int var3 = var1 / 64;
int var4 = var2 / 64;
if (var3 >= this.regionLowX && var3 <= this.regionHighX) {
if (var4 >= this.regionLowY && var4 <= this.regionHighY) {
Iterator var5 = this.sections.iterator();
WorldMapSection var6;
do {
if (!var5.hasNext()) {
return false;
}
var6 = (WorldMapSection)var5.next();
} while(!var6.containsPosition(var1, var2));
return true;
} else {
return false;
}
} else {
return false;
}
}
@ObfuscatedName("m")
@ObfuscatedSignature(
descriptor = "(IIII)[I",
garbageValue = "-1387557690"
)
@Export("position")
public int[] position(int var1, int var2, int var3) {
Iterator var4 = this.sections.iterator();
WorldMapSection var5;
do {
if (!var4.hasNext()) {
return null;
}
var5 = (WorldMapSection)var4.next();
} while(!var5.containsCoord(var1, var2, var3));
return var5.getBorderTileLengths(var1, var2, var3);
}
@ObfuscatedName("k")
@ObfuscatedSignature(
descriptor = "(III)Lic;",
garbageValue = "1153813181"
)
@Export("coord")
public Coord coord(int var1, int var2) {
Iterator var3 = this.sections.iterator();
WorldMapSection var4;
do {
if (!var3.hasNext()) {
return null;
}
var4 = (WorldMapSection)var3.next();
} while(!var4.containsPosition(var1, var2));
return var4.coord(var1, var2);
}
@ObfuscatedName("t")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "557053872"
)
@Export("setBounds")
void setBounds() {
Iterator var1 = this.sections.iterator();
while (var1.hasNext()) {
WorldMapSection var2 = (WorldMapSection)var1.next();
var2.expandBounds(this);
}
}
@ObfuscatedName("a")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "-2094198480"
)
@Export("getId")
public int getId() {
return this.id;
}
@ObfuscatedName("e")
@ObfuscatedSignature(
descriptor = "(B)Z",
garbageValue = "13"
)
@Export("getIsMain")
public boolean getIsMain() {
return this.isMain;
}
@ObfuscatedName("i")
@ObfuscatedSignature(
descriptor = "(I)Ljava/lang/String;",
garbageValue = "1549460192"
)
@Export("getInternalName")
public String getInternalName() {
return this.internalName;
}
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "(I)Ljava/lang/String;",
garbageValue = "539428715"
)
@Export("getExternalName")
public String getExternalName() {
return this.externalName;
}
@ObfuscatedName("w")
@ObfuscatedSignature(
descriptor = "(B)I",
garbageValue = "0"
)
@Export("getBackGroundColor")
int getBackGroundColor() {
return this.backGroundColor;
}
@ObfuscatedName("g")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "-468887944"
)
@Export("getZoom")
public int getZoom() {
return this.zoom;
}
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "-1837285801"
)
@Export("getRegionLowX")
public int getRegionLowX() {
return this.regionLowX;
}
@ObfuscatedName("s")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "895947812"
)
@Export("getRegionHighX")
public int getRegionHighX() {
return this.regionHighX;
}
@ObfuscatedName("c")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "1917929622"
)
@Export("getRegionLowY")
public int getRegionLowY() {
return this.regionLowY;
}
@ObfuscatedName("b")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "1966642948"
)
@Export("getRegionHighY")
public int getRegionHighY() {
return this.regionHighY;
}
@ObfuscatedName("x")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "-2055677745"
)
@Export("getOriginX")
public int getOriginX() {
return this.origin.x;
}
@ObfuscatedName("p")
@ObfuscatedSignature(
descriptor = "(B)I",
garbageValue = "-15"
)
@Export("getOriginPlane")
public int getOriginPlane() {
return this.origin.plane;
}
@ObfuscatedName("z")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "-1154509313"
)
@Export("getOriginY")
public int getOriginY() {
return this.origin.y;
}
@ObfuscatedName("h")
@ObfuscatedSignature(
descriptor = "(B)Lic;",
garbageValue = "-12"
)
@Export("getOrigin")
public Coord getOrigin() {
return new Coord(this.origin);
}
@ObfuscatedName("gg")
@ObfuscatedSignature(
descriptor = "(ZLoy;I)V",
garbageValue = "-254909194"
)
@Export("loadRegions")
static final void loadRegions(boolean var0, PacketBuffer var1) {
Client.isInInstance = var0;
int var3;
int var4;
int var5;
int var6;
int var7;
int var8;
if (!Client.isInInstance) {
int var2 = var1.method6933();
var3 = var1.readUnsignedShort();
var4 = var1.readUnsignedShort();
ModeWhere.xteaKeys = new int[var4][4];
for (var5 = 0; var5 < var4; ++var5) {
for (var6 = 0; var6 < 4; ++var6) {
ModeWhere.xteaKeys[var5][var6] = var1.readInt();
}
}
class129.regions = new int[var4];
Canvas.regionMapArchiveIds = new int[var4];
GrandExchangeOfferTotalQuantityComparator.regionLandArchiveIds = new int[var4];
class28.regionLandArchives = new byte[var4][];
Client.regionMapArchives = new byte[var4][];
boolean var16 = false;
if (Client.field540) {
if ((var2 / 8 == 48 || var2 / 8 == 49) && var3 / 8 == 48) {
var16 = true;
}
if (var2 / 8 == 48 && var3 / 8 == 148) {
var16 = true;
}
}
var4 = 0;
for (var6 = (var2 - 6) / 8; var6 <= (var2 + 6) / 8; ++var6) {
for (var7 = (var3 - 6) / 8; var7 <= (var3 + 6) / 8; ++var7) {
var8 = var7 + (var6 << 8);
if (!var16 || var7 != 49 && var7 != 149 && var7 != 147 && var6 != 50 && (var6 != 49 || var7 != 47)) {
class129.regions[var4] = var8;
Canvas.regionMapArchiveIds[var4] = ApproximateRouteStrategy.archive5.getGroupId("m" + var6 + "_" + var7);
GrandExchangeOfferTotalQuantityComparator.regionLandArchiveIds[var4] = ApproximateRouteStrategy.archive5.getGroupId("l" + var6 + "_" + var7);
++var4;
}
}
}
DesktopPlatformInfoProvider.method6380(var2, var3, true);
} else {
boolean var15 = var1.method6926() == 1;
var3 = var1.method6933();
var4 = var1.readUnsignedShort();
var5 = var1.readUnsignedShort();
var1.importIndex();
int var9;
for (var6 = 0; var6 < 4; ++var6) {
for (var7 = 0; var7 < 13; ++var7) {
for (var8 = 0; var8 < 13; ++var8) {
var9 = var1.readBits(1);
if (var9 == 1) {
Client.instanceChunkTemplates[var6][var7][var8] = var1.readBits(26);
} else {
Client.instanceChunkTemplates[var6][var7][var8] = -1;
}
}
}
}
var1.exportIndex();
ModeWhere.xteaKeys = new int[var5][4];
for (var6 = 0; var6 < var5; ++var6) {
for (var7 = 0; var7 < 4; ++var7) {
ModeWhere.xteaKeys[var6][var7] = var1.readInt();
}
}
class129.regions = new int[var5];
Canvas.regionMapArchiveIds = new int[var5];
GrandExchangeOfferTotalQuantityComparator.regionLandArchiveIds = new int[var5];
class28.regionLandArchives = new byte[var5][];
Client.regionMapArchives = new byte[var5][];
var5 = 0;
for (var6 = 0; var6 < 4; ++var6) {
for (var7 = 0; var7 < 13; ++var7) {
for (var8 = 0; var8 < 13; ++var8) {
var9 = Client.instanceChunkTemplates[var6][var7][var8];
if (var9 != -1) {
int var10 = var9 >> 14 & 1023;
int var11 = var9 >> 3 & 2047;
int var12 = (var10 / 8 << 8) + var11 / 8;
int var13;
for (var13 = 0; var13 < var5; ++var13) {
if (class129.regions[var13] == var12) {
var12 = -1;
break;
}
}
if (var12 != -1) {
class129.regions[var5] = var12;
var13 = var12 >> 8 & 255;
int var14 = var12 & 255;
Canvas.regionMapArchiveIds[var5] = ApproximateRouteStrategy.archive5.getGroupId("m" + var13 + "_" + var14);
GrandExchangeOfferTotalQuantityComparator.regionLandArchiveIds[var5] = ApproximateRouteStrategy.archive5.getGroupId("l" + var13 + "_" + var14);
++var5;
}
}
}
}
}
DesktopPlatformInfoProvider.method6380(var4, var3, !var15);
}
}
}