Files
runelite/runescape-client/src/main/java/Scene.java
2020-08-26 21:11:23 +01:00

2592 lines
93 KiB
Java

import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("ec")
@Implements("Scene")
public class Scene {
@ObfuscatedName("z")
@Export("Scene_isLowDetail")
public static boolean Scene_isLowDetail;
@ObfuscatedName("q")
@Export("tileUpdateCount")
static int tileUpdateCount;
@ObfuscatedName("c")
@Export("Scene_plane")
static int Scene_plane;
@ObfuscatedName("f")
@Export("Scene_drawnCount")
static int Scene_drawnCount;
@ObfuscatedName("y")
@Export("Scene_cameraXTileMin")
static int Scene_cameraXTileMin;
@ObfuscatedName("v")
@Export("Scene_cameraXTileMax")
static int Scene_cameraXTileMax;
@ObfuscatedName("j")
@Export("Scene_cameraYTileMin")
static int Scene_cameraYTileMin;
@ObfuscatedName("r")
@Export("Scene_cameraYTileMax")
static int Scene_cameraYTileMax;
@ObfuscatedName("u")
@Export("Scene_cameraXTile")
static int Scene_cameraXTile;
@ObfuscatedName("p")
@Export("Scene_cameraYTile")
static int Scene_cameraYTile;
@ObfuscatedName("b")
@Export("Scene_cameraX")
static int Scene_cameraX;
@ObfuscatedName("l")
@Export("Scene_cameraY")
static int Scene_cameraY;
@ObfuscatedName("e")
@Export("Scene_cameraZ")
static int Scene_cameraZ;
@ObfuscatedName("ab")
@Export("Scene_cameraPitchSine")
static int Scene_cameraPitchSine;
@ObfuscatedName("ag")
@Export("Scene_cameraPitchCosine")
static int Scene_cameraPitchCosine;
@ObfuscatedName("ao")
@Export("Scene_cameraYawSine")
static int Scene_cameraYawSine;
@ObfuscatedName("ae")
@Export("Scene_cameraYawCosine")
static int Scene_cameraYawCosine;
@ObfuscatedName("an")
@ObfuscatedSignature(
descriptor = "[Led;"
)
@Export("gameObjects")
static GameObject[] gameObjects;
@ObfuscatedName("am")
@Export("checkClick")
static boolean checkClick;
@ObfuscatedName("ap")
@Export("Scene_selectedPlane")
static int Scene_selectedPlane;
@ObfuscatedName("au")
@Export("Scene_selectedScreenX")
static int Scene_selectedScreenX;
@ObfuscatedName("aa")
@Export("Scene_selectedScreenY")
static int Scene_selectedScreenY;
@ObfuscatedName("ar")
@Export("Scene_selectedX")
public static int Scene_selectedX;
@ObfuscatedName("at")
@Export("Scene_selectedY")
public static int Scene_selectedY;
@ObfuscatedName("aq")
@Export("viewportWalking")
static boolean viewportWalking;
@ObfuscatedName("av")
@Export("Scene_planesCount")
static int Scene_planesCount;
@ObfuscatedName("ax")
@Export("Scene_planeOccluderCounts")
static int[] Scene_planeOccluderCounts;
@ObfuscatedName("as")
@ObfuscatedSignature(
descriptor = "[[Lew;"
)
@Export("Scene_planeOccluders")
static Occluder[][] Scene_planeOccluders;
@ObfuscatedName("az")
@Export("Scene_currentOccludersCount")
static int Scene_currentOccludersCount;
@ObfuscatedName("ad")
@ObfuscatedSignature(
descriptor = "[Lew;"
)
@Export("Scene_currentOccluders")
static Occluder[] Scene_currentOccluders;
@ObfuscatedName("ai")
@ObfuscatedSignature(
descriptor = "Lji;"
)
@Export("Scene_tilesDeque")
static NodeDeque Scene_tilesDeque;
@ObfuscatedName("ay")
static final int[] field1874;
@ObfuscatedName("aj")
static final int[] field1851;
@ObfuscatedName("aw")
static final int[] field1869;
@ObfuscatedName("af")
static final int[] field1881;
@ObfuscatedName("ak")
static final int[] field1882;
@ObfuscatedName("ac")
static final int[] field1883;
@ObfuscatedName("bl")
static final int[] field1884;
@ObfuscatedName("br")
@Export("visibilityMap")
static boolean[][][][] visibilityMap;
@ObfuscatedName("bp")
@Export("visibleTiles")
static boolean[][] visibleTiles;
@ObfuscatedName("bn")
@Export("Scene_viewportXCenter")
static int Scene_viewportXCenter;
@ObfuscatedName("bw")
@Export("Scene_viewportYCenter")
static int Scene_viewportYCenter;
@ObfuscatedName("be")
@Export("Scene_viewportXMin")
static int Scene_viewportXMin;
@ObfuscatedName("bu")
@Export("Scene_viewportYMin")
static int Scene_viewportYMin;
@ObfuscatedName("ba")
@Export("Scene_viewportXMax")
static int Scene_viewportXMax;
@ObfuscatedName("bm")
@Export("Scene_viewportYMax")
static int Scene_viewportYMax;
@ObfuscatedName("k")
@Export("planes")
int planes;
@ObfuscatedName("s")
@Export("xSize")
int xSize;
@ObfuscatedName("t")
@Export("ySize")
int ySize;
@ObfuscatedName("i")
@Export("tileHeights")
int[][][] tileHeights;
@ObfuscatedName("o")
@ObfuscatedSignature(
descriptor = "[[[Lek;"
)
@Export("tiles")
Tile[][][] tiles;
@ObfuscatedName("x")
@Export("minPlane")
int minPlane;
@ObfuscatedName("w")
@Export("tempGameObjectsCount")
int tempGameObjectsCount;
@ObfuscatedName("g")
@ObfuscatedSignature(
descriptor = "[Led;"
)
@Export("tempGameObjects")
GameObject[] tempGameObjects;
@ObfuscatedName("m")
int[][][] field1841;
@ObfuscatedName("bi")
@Export("tileShape2D")
int[][] tileShape2D;
@ObfuscatedName("bg")
@Export("tileRotation2D")
int[][] tileRotation2D;
static {
Scene_isLowDetail = true; // L: 8
tileUpdateCount = 0; // L: 22
Scene_plane = 0; // L: 23
gameObjects = new GameObject[100]; // L: 38
checkClick = false; // L: 39
Scene_selectedPlane = 0; // L: 40
Scene_selectedScreenX = 0; // L: 41
Scene_selectedScreenY = 0; // L: 42
Scene_selectedX = -1; // L: 43
Scene_selectedY = -1; // L: 44
viewportWalking = false; // L: 45
Scene_planesCount = 4; // L: 48
Scene_planeOccluderCounts = new int[Scene_planesCount]; // L: 49
Scene_planeOccluders = new Occluder[Scene_planesCount][500]; // L: 50
Scene_currentOccludersCount = 0; // L: 51
Scene_currentOccluders = new Occluder[500]; // L: 52
Scene_tilesDeque = new NodeDeque(); // L: 53
field1874 = new int[]{19, 55, 38, 155, 255, 110, 137, 205, 76}; // L: 54
field1851 = new int[]{160, 192, 80, 96, 0, 144, 80, 48, 160}; // L: 55
field1869 = new int[]{76, 8, 137, 4, 0, 1, 38, 2, 19}; // L: 56
field1881 = new int[]{0, 0, 2, 0, 0, 2, 1, 1, 0}; // L: 57
field1882 = new int[]{2, 0, 0, 2, 0, 0, 0, 4, 4}; // L: 58
field1883 = new int[]{0, 4, 4, 8, 0, 0, 8, 0, 0}; // L: 59
field1884 = new int[]{1, 1, 0, 0, 0, 8, 0, 0, 8}; // L: 60
visibilityMap = new boolean[8][32][51][51]; // L: 86
}
public Scene(int var1, int var2, int var3, int[][][] var4) {
this.minPlane = 0; // L: 14
this.tempGameObjectsCount = 0; // L: 15
this.tempGameObjects = new GameObject[5000]; // L: 16
this.tileShape2D = new int[][]{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1}, {1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1}, {0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1}, {1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1}}; // L: 65
this.tileRotation2D = new int[][]{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, {12, 8, 4, 0, 13, 9, 5, 1, 14, 10, 6, 2, 15, 11, 7, 3}, {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, {3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12}}; // L: 80
this.planes = var1; // L: 96
this.xSize = var2; // L: 97
this.ySize = var3; // L: 98
this.tiles = new Tile[var1][var2][var3]; // L: 99
this.field1841 = new int[var1][var2 + 1][var3 + 1]; // L: 100
this.tileHeights = var4; // L: 101
this.clear(); // L: 102
} // L: 103
@ObfuscatedName("z")
@Export("clear")
public void clear() {
int var1;
int var2;
for (var1 = 0; var1 < this.planes; ++var1) { // L: 106
for (var2 = 0; var2 < this.xSize; ++var2) { // L: 107
for (int var3 = 0; var3 < this.ySize; ++var3) { // L: 108
this.tiles[var1][var2][var3] = null;
}
}
}
for (var1 = 0; var1 < Scene_planesCount; ++var1) { // L: 111
for (var2 = 0; var2 < Scene_planeOccluderCounts[var1]; ++var2) { // L: 112
Scene_planeOccluders[var1][var2] = null;
}
Scene_planeOccluderCounts[var1] = 0; // L: 113
}
for (var1 = 0; var1 < this.tempGameObjectsCount; ++var1) { // L: 115
this.tempGameObjects[var1] = null; // L: 116
}
this.tempGameObjectsCount = 0; // L: 118
for (var1 = 0; var1 < gameObjects.length; ++var1) { // L: 119
gameObjects[var1] = null;
}
} // L: 120
@ObfuscatedName("k")
@Export("init")
public void init(int var1) {
this.minPlane = var1; // L: 123
for (int var2 = 0; var2 < this.xSize; ++var2) { // L: 124
for (int var3 = 0; var3 < this.ySize; ++var3) { // L: 125
if (this.tiles[var1][var2][var3] == null) { // L: 126
this.tiles[var1][var2][var3] = new Tile(var1, var2, var3);
}
}
}
} // L: 129
@ObfuscatedName("s")
@Export("setLinkBelow")
public void setLinkBelow(int var1, int var2) {
Tile var3 = this.tiles[0][var1][var2]; // L: 132
for (int var4 = 0; var4 < 3; ++var4) { // L: 133
Tile var5 = this.tiles[var4][var1][var2] = this.tiles[var4 + 1][var1][var2]; // L: 134
if (var5 != null) { // L: 135
--var5.plane; // L: 136
for (int var6 = 0; var6 < var5.gameObjectsCount; ++var6) { // L: 137
GameObject var7 = var5.gameObjects[var6]; // L: 138
if (Tiles.method1191(var7.tag) && var7.startX == var1 && var2 == var7.startY) { // L: 139
--var7.plane;
}
}
}
}
if (this.tiles[0][var1][var2] == null) { // L: 143
this.tiles[0][var1][var2] = new Tile(0, var1, var2);
}
this.tiles[0][var1][var2].linkedBelowTile = var3; // L: 144
this.tiles[3][var1][var2] = null; // L: 145
} // L: 146
@ObfuscatedName("i")
@Export("setTileMinPlane")
public void setTileMinPlane(int var1, int var2, int var3, int var4) {
Tile var5 = this.tiles[var1][var2][var3]; // L: 165
if (var5 != null) { // L: 166
this.tiles[var1][var2][var3].minPlane = var4; // L: 167
}
} // L: 168
@ObfuscatedName("o")
@Export("addTile")
public void addTile(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14, int var15, int var16, int var17, int var18, int var19, int var20) {
TilePaint var21;
int var22;
if (var4 == 0) { // L: 171
var21 = new TilePaint(var11, var12, var13, var14, -1, var19, false); // L: 172
for (var22 = var1; var22 >= 0; --var22) { // L: 173
if (this.tiles[var22][var2][var3] == null) {
this.tiles[var22][var2][var3] = new Tile(var22, var2, var3);
}
}
this.tiles[var1][var2][var3].paint = var21; // L: 174
} else if (var4 != 1) { // L: 177
TileModel var23 = new TileModel(var4, var5, var6, var2, var3, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20); // L: 183
for (var22 = var1; var22 >= 0; --var22) { // L: 184
if (this.tiles[var22][var2][var3] == null) {
this.tiles[var22][var2][var3] = new Tile(var22, var2, var3);
}
}
this.tiles[var1][var2][var3].model = var23; // L: 185
} else {
var21 = new TilePaint(var15, var16, var17, var18, var6, var20, var8 == var7 && var7 == var9 && var10 == var7); // L: 178
for (var22 = var1; var22 >= 0; --var22) { // L: 179
if (this.tiles[var22][var2][var3] == null) {
this.tiles[var22][var2][var3] = new Tile(var22, var2, var3);
}
}
this.tiles[var1][var2][var3].paint = var21; // L: 180
}
} // L: 175 181 186
@ObfuscatedName("x")
@ObfuscatedSignature(
descriptor = "(IIIILez;JI)V"
)
@Export("newFloorDecoration")
public void newFloorDecoration(int var1, int var2, int var3, int var4, Entity var5, long var6, int var8) {
if (var5 != null) { // L: 189
FloorDecoration var9 = new FloorDecoration(); // L: 190
var9.entity = var5; // L: 191
var9.x = var2 * 128 + 64; // L: 192
var9.y = var3 * 128 + 64; // L: 193
var9.tileHeight = var4; // L: 194
var9.tag = var6; // L: 195
var9.flags = var8; // L: 196
if (this.tiles[var1][var2][var3] == null) { // L: 197
this.tiles[var1][var2][var3] = new Tile(var1, var2, var3);
}
this.tiles[var1][var2][var3].floorDecoration = var9; // L: 198
}
} // L: 199
@ObfuscatedName("w")
@ObfuscatedSignature(
descriptor = "(IIIILez;JLez;Lez;)V"
)
@Export("newGroundItemPile")
public void newGroundItemPile(int var1, int var2, int var3, int var4, Entity var5, long var6, Entity var8, Entity var9) {
TileItemPile var10 = new TileItemPile(); // L: 202
var10.first = var5; // L: 203
var10.x = var2 * 128 + 64; // L: 204
var10.y = var3 * 128 + 64; // L: 205
var10.tileHeight = var4; // L: 206
var10.tag = var6; // L: 207
var10.second = var8; // L: 208
var10.third = var9; // L: 209
int var11 = 0; // L: 210
Tile var12 = this.tiles[var1][var2][var3]; // L: 211
if (var12 != null) { // L: 212
for (int var13 = 0; var13 < var12.gameObjectsCount; ++var13) { // L: 213
if ((var12.gameObjects[var13].flags & 256) == 256 && var12.gameObjects[var13].entity instanceof Model) { // L: 214
Model var14 = (Model)var12.gameObjects[var13].entity; // L: 215
var14.calculateBoundsCylinder(); // L: 216
if (var14.height > var11) { // L: 217
var11 = var14.height;
}
}
}
}
var10.height = var11; // L: 221
if (this.tiles[var1][var2][var3] == null) {
this.tiles[var1][var2][var3] = new Tile(var1, var2, var3); // L: 222
}
this.tiles[var1][var2][var3].tileItemPile = var10; // L: 223
} // L: 224
@ObfuscatedName("g")
@ObfuscatedSignature(
descriptor = "(IIIILez;Lez;IIJI)V"
)
@Export("newBoundaryObject")
public void newBoundaryObject(int var1, int var2, int var3, int var4, Entity var5, Entity var6, int var7, int var8, long var9, int var11) {
if (var5 != null || var6 != null) { // L: 227
BoundaryObject var12 = new BoundaryObject(); // L: 228
var12.tag = var9; // L: 229
var12.flags = var11; // L: 230
var12.x = var2 * 128 + 64; // L: 231
var12.y = var3 * 128 + 64; // L: 232
var12.tileHeight = var4; // L: 233
var12.entity1 = var5; // L: 234
var12.entity2 = var6; // L: 235
var12.orientationA = var7; // L: 236
var12.orientationB = var8; // L: 237
for (int var13 = var1; var13 >= 0; --var13) {
if (this.tiles[var13][var2][var3] == null) {
this.tiles[var13][var2][var3] = new Tile(var13, var2, var3); // L: 238
}
}
this.tiles[var1][var2][var3].boundaryObject = var12; // L: 239
}
} // L: 240
@ObfuscatedName("m")
@ObfuscatedSignature(
descriptor = "(IIIILez;Lez;IIIIJI)V"
)
@Export("newWallDecoration")
public void newWallDecoration(int var1, int var2, int var3, int var4, Entity var5, Entity var6, int var7, int var8, int var9, int var10, long var11, int var13) {
if (var5 != null) { // L: 243
WallDecoration var14 = new WallDecoration(); // L: 244
var14.tag = var11; // L: 245
var14.flags = var13; // L: 246
var14.x = var2 * 128 + 64; // L: 247
var14.y = var3 * 128 + 64; // L: 248
var14.tileHeight = var4; // L: 249
var14.entity1 = var5; // L: 250
var14.entity2 = var6; // L: 251
var14.orientation = var7; // L: 252
var14.orientation2 = var8; // L: 253
var14.xOffset = var9; // L: 254
var14.yOffset = var10; // L: 255
for (int var15 = var1; var15 >= 0; --var15) {
if (this.tiles[var15][var2][var3] == null) {
this.tiles[var15][var2][var3] = new Tile(var15, var2, var3); // L: 256
}
}
this.tiles[var1][var2][var3].wallDecoration = var14; // L: 257
}
} // L: 258
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(IIIIIILez;IJI)Z"
)
public boolean method3263(int var1, int var2, int var3, int var4, int var5, int var6, Entity var7, int var8, long var9, int var11) {
if (var7 == null) { // L: 261
return true;
} else {
int var12 = var5 * 64 + var2 * 128; // L: 262
int var13 = var6 * 64 + var3 * 128; // L: 263
return this.newGameObject(var1, var2, var3, var5, var6, var12, var13, var4, var7, var8, false, var9, var11); // L: 264
}
}
@ObfuscatedName("d")
@ObfuscatedSignature(
descriptor = "(IIIIILez;IJZ)Z"
)
@Export("drawEntity")
public boolean drawEntity(int var1, int var2, int var3, int var4, int var5, Entity var6, int var7, long var8, boolean var10) {
if (var6 == null) { // L: 268
return true;
} else {
int var11 = var2 - var5; // L: 269
int var12 = var3 - var5; // L: 270
int var13 = var5 + var2; // L: 271
int var14 = var3 + var5; // L: 272
if (var10) { // L: 273
if (var7 > 640 && var7 < 1408) { // L: 274
var14 += 128;
}
if (var7 > 1152 && var7 < 1920) { // L: 275
var13 += 128;
}
if (var7 > 1664 || var7 < 384) { // L: 276
var12 -= 128;
}
if (var7 > 128 && var7 < 896) { // L: 277
var11 -= 128;
}
}
var11 /= 128; // L: 279
var12 /= 128; // L: 280
var13 /= 128; // L: 281
var14 /= 128; // L: 282
return this.newGameObject(var1, var11, var12, var13 - var11 + 1, var14 - var12 + 1, var2, var3, var4, var6, var7, true, var8, 0); // L: 283
}
}
@ObfuscatedName("h")
@ObfuscatedSignature(
descriptor = "(IIIIILez;IJIIII)Z"
)
@Export("addNullableObject")
public boolean addNullableObject(int var1, int var2, int var3, int var4, int var5, Entity var6, int var7, long var8, int var10, int var11, int var12, int var13) {
return var6 == null ? true : this.newGameObject(var1, var10, var11, var12 - var10 + 1, var13 - var11 + 1, var2, var3, var4, var6, var7, true, var8, 0); // L: 287 288
}
@ObfuscatedName("a")
@ObfuscatedSignature(
descriptor = "(IIIIIIIILez;IZJI)Z"
)
@Export("newGameObject")
boolean newGameObject(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, Entity var9, int var10, boolean var11, long var12, int var14) {
int var16;
for (int var15 = var2; var15 < var2 + var4; ++var15) { // L: 292
for (var16 = var3; var16 < var3 + var5; ++var16) { // L: 293
if (var15 < 0 || var16 < 0 || var15 >= this.xSize || var16 >= this.ySize) { // L: 294
return false;
}
Tile var23 = this.tiles[var1][var15][var16]; // L: 295
if (var23 != null && var23.gameObjectsCount >= 5) { // L: 296
return false;
}
}
}
GameObject var21 = new GameObject(); // L: 299
var21.tag = var12; // L: 300
var21.flags = var14; // L: 301
var21.plane = var1; // L: 302
var21.centerX = var6; // L: 303
var21.centerY = var7; // L: 304
var21.height = var8; // L: 305
var21.entity = var9; // L: 306
var21.orientation = var10; // L: 307
var21.startX = var2; // L: 308
var21.startY = var3; // L: 309
var21.endX = var2 + var4 - 1; // L: 310
var21.endY = var3 + var5 - 1; // L: 311
for (var16 = var2; var16 < var2 + var4; ++var16) { // L: 312
for (int var17 = var3; var17 < var3 + var5; ++var17) { // L: 313
int var18 = 0; // L: 314
if (var16 > var2) { // L: 315
++var18;
}
if (var16 < var2 + var4 - 1) { // L: 316
var18 += 4;
}
if (var17 > var3) { // L: 317
var18 += 8;
}
if (var17 < var3 + var5 - 1) { // L: 318
var18 += 2;
}
for (int var19 = var1; var19 >= 0; --var19) {
if (this.tiles[var19][var16][var17] == null) {
this.tiles[var19][var16][var17] = new Tile(var19, var16, var17); // L: 319
}
}
Tile var22 = this.tiles[var1][var16][var17]; // L: 320
var22.gameObjects[var22.gameObjectsCount] = var21; // L: 321
var22.gameObjectEdgeMasks[var22.gameObjectsCount] = var18; // L: 322
var22.gameObjectsEdgeMask |= var18; // L: 324
++var22.gameObjectsCount; // L: 325
}
}
if (var11) { // L: 328
this.tempGameObjects[this.tempGameObjectsCount++] = var21;
}
return true; // L: 329
}
@ObfuscatedName("q")
@Export("clearTempGameObjects")
public void clearTempGameObjects() {
for (int var1 = 0; var1 < this.tempGameObjectsCount; ++var1) { // L: 333
GameObject var2 = this.tempGameObjects[var1]; // L: 334
this.removeGameObject(var2); // L: 335
this.tempGameObjects[var1] = null; // L: 336
}
this.tempGameObjectsCount = 0; // L: 338
} // L: 339
@ObfuscatedName("c")
@ObfuscatedSignature(
descriptor = "(Led;)V"
)
@Export("removeGameObject")
void removeGameObject(GameObject var1) {
for (int var2 = var1.startX; var2 <= var1.endX; ++var2) { // L: 342
for (int var3 = var1.startY; var3 <= var1.endY; ++var3) { // L: 343
Tile var4 = this.tiles[var1.plane][var2][var3]; // L: 344
if (var4 != null) { // L: 345
int var5;
for (var5 = 0; var5 < var4.gameObjectsCount; ++var5) { // L: 346
if (var4.gameObjects[var5] == var1) { // L: 347
--var4.gameObjectsCount; // L: 348
for (int var6 = var5; var6 < var4.gameObjectsCount; ++var6) { // L: 349
var4.gameObjects[var6] = var4.gameObjects[var6 + 1]; // L: 350
var4.gameObjectEdgeMasks[var6] = var4.gameObjectEdgeMasks[var6 + 1]; // L: 351
}
var4.gameObjects[var4.gameObjectsCount] = null; // L: 353
break;
}
}
var4.gameObjectsEdgeMask = 0; // L: 357
for (var5 = 0; var5 < var4.gameObjectsCount; ++var5) { // L: 358
var4.gameObjectsEdgeMask |= var4.gameObjectEdgeMasks[var5]; // L: 360
}
}
}
}
} // L: 365
@ObfuscatedName("j")
public void method3204(int var1, int var2, int var3, int var4) {
Tile var5 = this.tiles[var1][var2][var3]; // L: 368
if (var5 != null) { // L: 369
WallDecoration var6 = var5.wallDecoration; // L: 370
if (var6 != null) { // L: 371
var6.xOffset = var4 * var6.xOffset / 16; // L: 372
var6.yOffset = var4 * var6.yOffset / 16; // L: 373
}
}
} // L: 374
@ObfuscatedName("r")
@Export("removeBoundaryObject")
public void removeBoundaryObject(int var1, int var2, int var3) {
Tile var4 = this.tiles[var1][var2][var3]; // L: 377
if (var4 != null) {
var4.boundaryObject = null; // L: 379
}
} // L: 378 380
@ObfuscatedName("u")
@Export("removeWallDecoration")
public void removeWallDecoration(int var1, int var2, int var3) {
Tile var4 = this.tiles[var1][var2][var3]; // L: 383
if (var4 != null) {
var4.wallDecoration = null; // L: 385
}
} // L: 384 386
@ObfuscatedName("p")
@Export("removeGameObject")
public void removeGameObject(int var1, int var2, int var3) {
Tile var4 = this.tiles[var1][var2][var3]; // L: 389
if (var4 != null) { // L: 390
for (int var5 = 0; var5 < var4.gameObjectsCount; ++var5) { // L: 391
GameObject var6 = var4.gameObjects[var5]; // L: 392
if (Tiles.method1191(var6.tag) && var2 == var6.startX && var3 == var6.startY) { // L: 393
this.removeGameObject(var6); // L: 394
return; // L: 395
}
}
}
} // L: 398
@ObfuscatedName("b")
@Export("removeFloorDecoration")
public void removeFloorDecoration(int var1, int var2, int var3) {
Tile var4 = this.tiles[var1][var2][var3]; // L: 401
if (var4 != null) {
var4.floorDecoration = null; // L: 403
}
} // L: 402 404
@ObfuscatedName("l")
@Export("removeGroundItemPile")
public void removeGroundItemPile(int var1, int var2, int var3) {
Tile var4 = this.tiles[var1][var2][var3]; // L: 407
if (var4 != null) {
var4.tileItemPile = null; // L: 409
}
} // L: 408 410
@ObfuscatedName("e")
@ObfuscatedSignature(
descriptor = "(III)Leb;"
)
public BoundaryObject method3276(int var1, int var2, int var3) {
Tile var4 = this.tiles[var1][var2][var3]; // L: 413
return var4 == null ? null : var4.boundaryObject; // L: 414 415
}
@ObfuscatedName("ab")
@ObfuscatedSignature(
descriptor = "(III)Lex;"
)
public WallDecoration method3211(int var1, int var2, int var3) {
Tile var4 = this.tiles[var1][var2][var3]; // L: 419
return var4 == null ? null : var4.wallDecoration; // L: 420 421
}
@ObfuscatedName("ag")
@ObfuscatedSignature(
descriptor = "(III)Led;"
)
public GameObject method3197(int var1, int var2, int var3) {
Tile var4 = this.tiles[var1][var2][var3]; // L: 425
if (var4 == null) { // L: 426
return null;
} else {
for (int var5 = 0; var5 < var4.gameObjectsCount; ++var5) { // L: 427
GameObject var6 = var4.gameObjects[var5]; // L: 428
if (Tiles.method1191(var6.tag) && var2 == var6.startX && var3 == var6.startY) { // L: 429
return var6;
}
}
return null; // L: 431
}
}
@ObfuscatedName("ao")
@ObfuscatedSignature(
descriptor = "(III)Leu;"
)
@Export("getFloorDecoration")
public FloorDecoration getFloorDecoration(int var1, int var2, int var3) {
Tile var4 = this.tiles[var1][var2][var3]; // L: 435
return var4 != null && var4.floorDecoration != null ? var4.floorDecoration : null; // L: 436 437
}
@ObfuscatedName("ae")
@Export("getBoundaryObjectTag")
public long getBoundaryObjectTag(int var1, int var2, int var3) {
Tile var4 = this.tiles[var1][var2][var3]; // L: 441
return var4 != null && var4.boundaryObject != null ? var4.boundaryObject.tag : 0L; // L: 442 443
}
@ObfuscatedName("ap")
@Export("getWallDecorationTag")
public long getWallDecorationTag(int var1, int var2, int var3) {
Tile var4 = this.tiles[var1][var2][var3]; // L: 447
return var4 != null && var4.wallDecoration != null ? var4.wallDecoration.tag : 0L; // L: 448 449
}
@ObfuscatedName("au")
@Export("getGameObjectTag")
public long getGameObjectTag(int var1, int var2, int var3) {
Tile var4 = this.tiles[var1][var2][var3]; // L: 453
if (var4 == null) { // L: 454
return 0L;
} else {
for (int var5 = 0; var5 < var4.gameObjectsCount; ++var5) { // L: 455
GameObject var6 = var4.gameObjects[var5]; // L: 456
if (Tiles.method1191(var6.tag) && var2 == var6.startX && var3 == var6.startY) { // L: 457
return var6.tag;
}
}
return 0L; // L: 459
}
}
@ObfuscatedName("aa")
@Export("getFloorDecorationTag")
public long getFloorDecorationTag(int var1, int var2, int var3) {
Tile var4 = this.tiles[var1][var2][var3]; // L: 463
return var4 != null && var4.floorDecoration != null ? var4.floorDecoration.tag : 0L; // L: 464 465
}
@ObfuscatedName("ar")
@Export("getObjectFlags")
public int getObjectFlags(int var1, int var2, int var3, long var4) {
Tile var6 = this.tiles[var1][var2][var3]; // L: 469
if (var6 == null) { // L: 470
return -1;
} else if (var6.boundaryObject != null && var6.boundaryObject.tag == var4) { // L: 471
return var6.boundaryObject.flags & 255;
} else if (var6.wallDecoration != null && var6.wallDecoration.tag == var4) { // L: 472
return var6.wallDecoration.flags & 255;
} else if (var6.floorDecoration != null && var6.floorDecoration.tag == var4) { // L: 473
return var6.floorDecoration.flags & 255;
} else {
for (int var7 = 0; var7 < var6.gameObjectsCount; ++var7) { // L: 474
if (var6.gameObjects[var7].tag == var4) { // L: 475
return var6.gameObjects[var7].flags & 255;
}
}
return -1; // L: 477
}
}
@ObfuscatedName("at")
public void method3219(int var1, int var2, int var3) {
for (int var4 = 0; var4 < this.planes; ++var4) { // L: 481
for (int var5 = 0; var5 < this.xSize; ++var5) { // L: 482
for (int var6 = 0; var6 < this.ySize; ++var6) { // L: 483
Tile var7 = this.tiles[var4][var5][var6]; // L: 484
if (var7 != null) { // L: 485
BoundaryObject var8 = var7.boundaryObject; // L: 486
ModelData var10;
if (var8 != null && var8.entity1 instanceof ModelData) { // L: 487
ModelData var9 = (ModelData)var8.entity1; // L: 488
this.method3221(var9, var4, var5, var6, 1, 1); // L: 489
if (var8.entity2 instanceof ModelData) { // L: 490
var10 = (ModelData)var8.entity2; // L: 491
this.method3221(var10, var4, var5, var6, 1, 1); // L: 492
ModelData.method2935(var9, var10, 0, 0, 0, false); // L: 493
var8.entity2 = var10.toModel(var10.ambient, var10.contrast, var1, var2, var3); // L: 494
}
var8.entity1 = var9.toModel(var9.ambient, var9.contrast, var1, var2, var3); // L: 496
}
for (int var12 = 0; var12 < var7.gameObjectsCount; ++var12) { // L: 498
GameObject var14 = var7.gameObjects[var12]; // L: 499
if (var14 != null && var14.entity instanceof ModelData) { // L: 500
ModelData var11 = (ModelData)var14.entity; // L: 501
this.method3221(var11, var4, var5, var6, var14.endX - var14.startX + 1, var14.endY - var14.startY + 1); // L: 502
var14.entity = var11.toModel(var11.ambient, var11.contrast, var1, var2, var3); // L: 503
}
}
FloorDecoration var13 = var7.floorDecoration; // L: 506
if (var13 != null && var13.entity instanceof ModelData) { // L: 507
var10 = (ModelData)var13.entity; // L: 508
this.method3220(var10, var4, var5, var6); // L: 509
var13.entity = var10.toModel(var10.ambient, var10.contrast, var1, var2, var3); // L: 510
}
}
}
}
}
} // L: 516
@ObfuscatedName("aq")
@ObfuscatedSignature(
descriptor = "(Lee;III)V"
)
void method3220(ModelData var1, int var2, int var3, int var4) {
Tile var5;
ModelData var6;
if (var3 < this.xSize) { // L: 519
var5 = this.tiles[var2][var3 + 1][var4]; // L: 520
if (var5 != null && var5.floorDecoration != null && var5.floorDecoration.entity instanceof ModelData) { // L: 521
var6 = (ModelData)var5.floorDecoration.entity; // L: 522
ModelData.method2935(var1, var6, 128, 0, 0, true); // L: 523
}
}
if (var4 < this.xSize) { // L: 526
var5 = this.tiles[var2][var3][var4 + 1]; // L: 527
if (var5 != null && var5.floorDecoration != null && var5.floorDecoration.entity instanceof ModelData) { // L: 528
var6 = (ModelData)var5.floorDecoration.entity; // L: 529
ModelData.method2935(var1, var6, 0, 0, 128, true); // L: 530
}
}
if (var3 < this.xSize && var4 < this.ySize) { // L: 533
var5 = this.tiles[var2][var3 + 1][var4 + 1]; // L: 534
if (var5 != null && var5.floorDecoration != null && var5.floorDecoration.entity instanceof ModelData) { // L: 535
var6 = (ModelData)var5.floorDecoration.entity; // L: 536
ModelData.method2935(var1, var6, 128, 0, 128, true); // L: 537
}
}
if (var3 < this.xSize && var4 > 0) { // L: 540
var5 = this.tiles[var2][var3 + 1][var4 - 1]; // L: 541
if (var5 != null && var5.floorDecoration != null && var5.floorDecoration.entity instanceof ModelData) { // L: 542
var6 = (ModelData)var5.floorDecoration.entity; // L: 543
ModelData.method2935(var1, var6, 128, 0, -128, true); // L: 544
}
}
} // L: 547
@ObfuscatedName("al")
@ObfuscatedSignature(
descriptor = "(Lee;IIIII)V"
)
void method3221(ModelData var1, int var2, int var3, int var4, int var5, int var6) {
boolean var7 = true; // L: 550
int var8 = var3; // L: 551
int var9 = var3 + var5; // L: 552
int var10 = var4 - 1; // L: 553
int var11 = var4 + var6; // L: 554
for (int var12 = var2; var12 <= var2 + 1; ++var12) { // L: 555
if (var12 != this.planes) { // L: 556
for (int var13 = var8; var13 <= var9; ++var13) { // L: 557
if (var13 >= 0 && var13 < this.xSize) { // L: 558
for (int var14 = var10; var14 <= var11; ++var14) { // L: 559
if (var14 >= 0 && var14 < this.ySize && (!var7 || var13 >= var9 || var14 >= var11 || var14 < var4 && var3 != var13)) { // L: 560 561
Tile var15 = this.tiles[var12][var13][var14]; // L: 562
if (var15 != null) { // L: 563
int var16 = (this.tileHeights[var12][var13 + 1][var14] + this.tileHeights[var12][var13 + 1][var14 + 1] + this.tileHeights[var12][var13][var14] + this.tileHeights[var12][var13][var14 + 1]) / 4 - (this.tileHeights[var2][var3 + 1][var4] + this.tileHeights[var2][var3][var4] + this.tileHeights[var2][var3 + 1][var4 + 1] + this.tileHeights[var2][var3][var4 + 1]) / 4; // L: 564
BoundaryObject var17 = var15.boundaryObject; // L: 565
if (var17 != null) { // L: 566
ModelData var18;
if (var17.entity1 instanceof ModelData) { // L: 567
var18 = (ModelData)var17.entity1; // L: 568
ModelData.method2935(var1, var18, (1 - var5) * 64 + (var13 - var3) * 128, var16, (var14 - var4) * 128 + (1 - var6) * 64, var7); // L: 569
}
if (var17.entity2 instanceof ModelData) { // L: 571
var18 = (ModelData)var17.entity2; // L: 572
ModelData.method2935(var1, var18, (1 - var5) * 64 + (var13 - var3) * 128, var16, (var14 - var4) * 128 + (1 - var6) * 64, var7); // L: 573
}
}
for (int var23 = 0; var23 < var15.gameObjectsCount; ++var23) { // L: 576
GameObject var19 = var15.gameObjects[var23]; // L: 577
if (var19 != null && var19.entity instanceof ModelData) { // L: 578
ModelData var20 = (ModelData)var19.entity; // L: 579
int var21 = var19.endX - var19.startX + 1; // L: 580
int var22 = var19.endY - var19.startY + 1; // L: 581
ModelData.method2935(var1, var20, (var21 - var5) * 64 + (var19.startX - var3) * 128, var16, (var19.startY - var4) * 128 + (var22 - var6) * 64, var7); // L: 582
}
}
}
}
}
}
}
--var8; // L: 587
var7 = false; // L: 588
}
}
} // L: 590
@ObfuscatedName("ah")
@Export("drawTileMinimap")
public void drawTileMinimap(int[] var1, int var2, int var3, int var4, int var5, int var6) {
Tile var7 = this.tiles[var4][var5][var6]; // L: 593
if (var7 != null) { // L: 594
TilePaint var8 = var7.paint; // L: 595
int var10;
if (var8 != null) { // L: 596
int var18 = var8.rgb; // L: 597
if (var18 != 0) { // L: 598
for (var10 = 0; var10 < 4; ++var10) { // L: 599
var1[var2] = var18; // L: 600
var1[var2 + 1] = var18; // L: 601
var1[var2 + 2] = var18; // L: 602
var1[var2 + 3] = var18; // L: 603
var2 += var3; // L: 604
}
}
} else {
TileModel var9 = var7.model; // L: 608
if (var9 != null) { // L: 609
var10 = var9.shape; // L: 610
int var11 = var9.rotation; // L: 611
int var12 = var9.underlayRgb; // L: 612
int var13 = var9.overlayRgb; // L: 613
int[] var14 = this.tileShape2D[var10]; // L: 614
int[] var15 = this.tileRotation2D[var11]; // L: 615
int var16 = 0; // L: 616
int var17;
if (var12 != 0) { // L: 617
for (var17 = 0; var17 < 4; ++var17) { // L: 618
var1[var2] = var14[var15[var16++]] == 0 ? var12 : var13; // L: 619
var1[var2 + 1] = var14[var15[var16++]] == 0 ? var12 : var13; // L: 620
var1[var2 + 2] = var14[var15[var16++]] == 0 ? var12 : var13; // L: 621
var1[var2 + 3] = var14[var15[var16++]] == 0 ? var12 : var13; // L: 622
var2 += var3; // L: 623
}
} else {
for (var17 = 0; var17 < 4; ++var17) { // L: 627
if (var14[var15[var16++]] != 0) { // L: 628
var1[var2] = var13;
}
if (var14[var15[var16++]] != 0) { // L: 629
var1[var2 + 1] = var13;
}
if (var14[var15[var16++]] != 0) { // L: 630
var1[var2 + 2] = var13;
}
if (var14[var15[var16++]] != 0) { // L: 631
var1[var2 + 3] = var13;
}
var2 += var3; // L: 632
}
}
}
}
}
} // L: 606 635
@ObfuscatedName("as")
@Export("menuOpen")
public void menuOpen(int var1, int var2, int var3, boolean var4) {
if (!shouldSendWalk() || var4) { // L: 714
checkClick = true; // L: 715
viewportWalking = var4; // L: 716
Scene_selectedPlane = var1; // L: 717
Scene_selectedScreenX = var2; // L: 718
Scene_selectedScreenY = var3; // L: 719
Scene_selectedX = -1; // L: 720
Scene_selectedY = -1; // L: 721
}
} // L: 722
@ObfuscatedName("az")
@Export("setViewportWalking")
public void setViewportWalking() {
viewportWalking = true; // L: 725
} // L: 726
@ObfuscatedName("ay")
@Export("draw")
public void draw(int var1, int var2, int var3, int var4, int var5, int var6) {
if (var1 < 0) { // L: 738
var1 = 0;
} else if (var1 >= this.xSize * 128) { // L: 739
var1 = this.xSize * 128 - 1;
}
if (var3 < 0) { // L: 740
var3 = 0;
} else if (var3 >= this.ySize * 128) { // L: 741
var3 = this.ySize * 128 - 1;
}
if (var4 < 128) { // L: 742
var4 = 128;
} else if (var4 > 383) { // L: 743
var4 = 383;
}
++Scene_drawnCount; // L: 744
Scene_cameraPitchSine = Rasterizer3D.Rasterizer3D_sine[var4]; // L: 745
Scene_cameraPitchCosine = Rasterizer3D.Rasterizer3D_cosine[var4]; // L: 746
Scene_cameraYawSine = Rasterizer3D.Rasterizer3D_sine[var5]; // L: 747
Scene_cameraYawCosine = Rasterizer3D.Rasterizer3D_cosine[var5]; // L: 748
visibleTiles = visibilityMap[(var4 - 128) / 32][var5 / 64]; // L: 749
Scene_cameraX = var1; // L: 750
Scene_cameraY = var2; // L: 751
Scene_cameraZ = var3; // L: 752
Scene_cameraXTile = var1 / 128; // L: 753
Scene_cameraYTile = var3 / 128; // L: 754
Scene_plane = var6; // L: 755
Scene_cameraXTileMin = Scene_cameraXTile - 25; // L: 756
if (Scene_cameraXTileMin < 0) { // L: 757
Scene_cameraXTileMin = 0;
}
Scene_cameraYTileMin = Scene_cameraYTile - 25; // L: 758
if (Scene_cameraYTileMin < 0) { // L: 759
Scene_cameraYTileMin = 0;
}
Scene_cameraXTileMax = Scene_cameraXTile + 25; // L: 760
if (Scene_cameraXTileMax > this.xSize) { // L: 761
Scene_cameraXTileMax = this.xSize;
}
Scene_cameraYTileMax = Scene_cameraYTile + 25; // L: 762
if (Scene_cameraYTileMax > this.ySize) { // L: 763
Scene_cameraYTileMax = this.ySize;
}
this.occlude(); // L: 764
tileUpdateCount = 0; // L: 765
int var7;
Tile[][] var8;
int var9;
int var10;
for (var7 = this.minPlane; var7 < this.planes; ++var7) { // L: 766
var8 = this.tiles[var7]; // L: 767
for (var9 = Scene_cameraXTileMin; var9 < Scene_cameraXTileMax; ++var9) { // L: 768
for (var10 = Scene_cameraYTileMin; var10 < Scene_cameraYTileMax; ++var10) { // L: 769
Tile var16 = var8[var9][var10]; // L: 770
if (var16 != null) { // L: 771
if (var16.minPlane <= var6 && (visibleTiles[var9 - Scene_cameraXTile + 25][var10 - Scene_cameraYTile + 25] || this.tileHeights[var7][var9][var10] - var2 >= 2000)) { // L: 772
var16.drawPrimary = true; // L: 778
var16.drawSecondary = true; // L: 779
if (var16.gameObjectsCount > 0) { // L: 780
var16.drawGameObjects = true;
} else {
var16.drawGameObjects = false; // L: 781
}
++tileUpdateCount; // L: 782
} else {
var16.drawPrimary = false; // L: 773
var16.drawSecondary = false; // L: 774
var16.drawGameObjectEdges = 0; // L: 775
}
}
}
}
}
int var11;
int var12;
int var13;
int var14;
Tile var15;
for (var7 = this.minPlane; var7 < this.planes; ++var7) { // L: 788
var8 = this.tiles[var7]; // L: 789
for (var9 = -25; var9 <= 0; ++var9) { // L: 790
var10 = var9 + Scene_cameraXTile; // L: 791
var11 = Scene_cameraXTile - var9; // L: 792
if (var10 >= Scene_cameraXTileMin || var11 < Scene_cameraXTileMax) { // L: 793
for (var12 = -25; var12 <= 0; ++var12) { // L: 794
var13 = var12 + Scene_cameraYTile; // L: 795
var14 = Scene_cameraYTile - var12; // L: 796
if (var10 >= Scene_cameraXTileMin) { // L: 797
if (var13 >= Scene_cameraYTileMin) { // L: 798
var15 = var8[var10][var13]; // L: 799
if (var15 != null && var15.drawPrimary) { // L: 800
this.drawTile(var15, true);
}
}
if (var14 < Scene_cameraYTileMax) { // L: 802
var15 = var8[var10][var14]; // L: 803
if (var15 != null && var15.drawPrimary) { // L: 804
this.drawTile(var15, true);
}
}
}
if (var11 < Scene_cameraXTileMax) { // L: 807
if (var13 >= Scene_cameraYTileMin) { // L: 808
var15 = var8[var11][var13]; // L: 809
if (var15 != null && var15.drawPrimary) { // L: 810
this.drawTile(var15, true);
}
}
if (var14 < Scene_cameraYTileMax) { // L: 812
var15 = var8[var11][var14]; // L: 813
if (var15 != null && var15.drawPrimary) { // L: 814
this.drawTile(var15, true);
}
}
}
if (tileUpdateCount == 0) { // L: 817
checkClick = false; // L: 818
return; // L: 819
}
}
}
}
}
for (var7 = this.minPlane; var7 < this.planes; ++var7) { // L: 825
var8 = this.tiles[var7]; // L: 826
for (var9 = -25; var9 <= 0; ++var9) { // L: 827
var10 = var9 + Scene_cameraXTile; // L: 828
var11 = Scene_cameraXTile - var9; // L: 829
if (var10 >= Scene_cameraXTileMin || var11 < Scene_cameraXTileMax) { // L: 830
for (var12 = -25; var12 <= 0; ++var12) { // L: 831
var13 = var12 + Scene_cameraYTile; // L: 832
var14 = Scene_cameraYTile - var12; // L: 833
if (var10 >= Scene_cameraXTileMin) { // L: 834
if (var13 >= Scene_cameraYTileMin) { // L: 835
var15 = var8[var10][var13]; // L: 836
if (var15 != null && var15.drawPrimary) { // L: 837
this.drawTile(var15, false);
}
}
if (var14 < Scene_cameraYTileMax) { // L: 839
var15 = var8[var10][var14]; // L: 840
if (var15 != null && var15.drawPrimary) { // L: 841
this.drawTile(var15, false);
}
}
}
if (var11 < Scene_cameraXTileMax) { // L: 844
if (var13 >= Scene_cameraYTileMin) { // L: 845
var15 = var8[var11][var13]; // L: 846
if (var15 != null && var15.drawPrimary) { // L: 847
this.drawTile(var15, false);
}
}
if (var14 < Scene_cameraYTileMax) { // L: 849
var15 = var8[var11][var14]; // L: 850
if (var15 != null && var15.drawPrimary) { // L: 851
this.drawTile(var15, false);
}
}
}
if (tileUpdateCount == 0) { // L: 854
checkClick = false; // L: 855
return; // L: 856
}
}
}
}
}
checkClick = false; // L: 862
} // L: 863
@ObfuscatedName("aj")
@ObfuscatedSignature(
descriptor = "(Lek;Z)V"
)
@Export("drawTile")
void drawTile(Tile var1, boolean var2) {
Scene_tilesDeque.addFirst(var1); // L: 866
while (true) {
Tile var3;
int var4;
int var5;
int var6;
int var7;
Tile[][] var8;
Tile var9;
int var11;
int var14;
int var15;
int var16;
int var24;
int var25;
do {
do {
do {
do {
do {
do {
while (true) {
BoundaryObject var10;
GameObject var12;
int var17;
int var18;
boolean var20;
int var21;
Tile var36;
while (true) {
do {
var3 = (Tile)Scene_tilesDeque.removeLast(); // L: 868
if (var3 == null) { // L: 869
return;
}
} while(!var3.drawSecondary); // L: 870
var4 = var3.x; // L: 871
var5 = var3.y; // L: 872
var6 = var3.plane; // L: 873
var7 = var3.originalPlane; // L: 874
var8 = this.tiles[var6]; // L: 875
if (!var3.drawPrimary) { // L: 876
break;
}
if (var2) { // L: 877
if (var6 > 0) { // L: 878
var9 = this.tiles[var6 - 1][var4][var5]; // L: 879
if (var9 != null && var9.drawSecondary) { // L: 880
continue;
}
}
if (var4 <= Scene_cameraXTile && var4 > Scene_cameraXTileMin) { // L: 882
var9 = var8[var4 - 1][var5]; // L: 883
if (var9 != null && var9.drawSecondary && (var9.drawPrimary || (var3.gameObjectsEdgeMask & 1) == 0)) { // L: 884
continue;
}
}
if (var4 >= Scene_cameraXTile && var4 < Scene_cameraXTileMax - 1) { // L: 886
var9 = var8[var4 + 1][var5]; // L: 887
if (var9 != null && var9.drawSecondary && (var9.drawPrimary || (var3.gameObjectsEdgeMask & 4) == 0)) { // L: 888
continue;
}
}
if (var5 <= Scene_cameraYTile && var5 > Scene_cameraYTileMin) { // L: 890
var9 = var8[var4][var5 - 1]; // L: 891
if (var9 != null && var9.drawSecondary && (var9.drawPrimary || (var3.gameObjectsEdgeMask & 8) == 0)) { // L: 892
continue;
}
}
if (var5 >= Scene_cameraYTile && var5 < Scene_cameraYTileMax - 1) { // L: 894
var9 = var8[var4][var5 + 1]; // L: 895
if (var9 != null && var9.drawSecondary && (var9.drawPrimary || (var3.gameObjectsEdgeMask & 2) == 0)) { // L: 896
continue;
}
}
} else {
var2 = true; // L: 899
}
var3.drawPrimary = false; // L: 900
if (var3.linkedBelowTile != null) { // L: 901
var9 = var3.linkedBelowTile; // L: 902
if (var9.paint != null) { // L: 903
if (!this.method3236(0, var4, var5)) { // L: 904
this.drawTileUnderlay(var9.paint, 0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var4, var5);
}
} else if (var9.model != null && !this.method3236(0, var4, var5)) { // L: 906 907
this.drawTileOverlay(var9.model, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var4, var5);
}
var10 = var9.boundaryObject; // L: 909
if (var10 != null) { // L: 910
var10.entity1.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var10.x - Scene_cameraX, var10.tileHeight - Scene_cameraY, var10.y - Scene_cameraZ, var10.tag);
}
for (var11 = 0; var11 < var9.gameObjectsCount; ++var11) { // L: 911
var12 = var9.gameObjects[var11]; // L: 912
if (var12 != null) { // L: 913
var12.entity.draw(var12.orientation, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var12.centerX - Scene_cameraX, var12.height - Scene_cameraY, var12.centerY - Scene_cameraZ, var12.tag);
}
}
}
var20 = false; // L: 916
if (var3.paint != null) { // L: 917
if (!this.method3236(var7, var4, var5)) { // L: 918
var20 = true; // L: 919
if (var3.paint.neColor != 12345678 || checkClick && var6 <= Scene_selectedPlane) { // L: 920
this.drawTileUnderlay(var3.paint, var7, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var4, var5);
}
}
} else if (var3.model != null && !this.method3236(var7, var4, var5)) { // L: 923 924
var20 = true; // L: 925
this.drawTileOverlay(var3.model, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var4, var5); // L: 926
}
var21 = 0; // L: 929
var11 = 0; // L: 930
BoundaryObject var31 = var3.boundaryObject; // L: 931
WallDecoration var13 = var3.wallDecoration; // L: 932
if (var31 != null || var13 != null) { // L: 933
if (var4 == Scene_cameraXTile) { // L: 934
++var21;
} else if (Scene_cameraXTile < var4) { // L: 935
var21 += 2;
}
if (var5 == Scene_cameraYTile) { // L: 936
var21 += 3;
} else if (Scene_cameraYTile > var5) { // L: 937
var21 += 6;
}
var11 = field1874[var21]; // L: 938
var3.field1689 = field1869[var21]; // L: 939
}
if (var31 != null) { // L: 941
if ((var31.orientationA & field1851[var21]) != 0) { // L: 942
if (var31.orientationA == 16) { // L: 943
var3.drawGameObjectEdges = 3; // L: 944
var3.field1678 = field1881[var21]; // L: 945
var3.field1687 = 3 - var3.field1678; // L: 946
} else if (var31.orientationA == 32) { // L: 948
var3.drawGameObjectEdges = 6; // L: 949
var3.field1678 = field1882[var21]; // L: 950
var3.field1687 = 6 - var3.field1678; // L: 951
} else if (var31.orientationA == 64) { // L: 953
var3.drawGameObjectEdges = 12; // L: 954
var3.field1678 = field1883[var21]; // L: 955
var3.field1687 = 12 - var3.field1678; // L: 956
} else {
var3.drawGameObjectEdges = 9; // L: 959
var3.field1678 = field1884[var21]; // L: 960
var3.field1687 = 9 - var3.field1678; // L: 961
}
} else {
var3.drawGameObjectEdges = 0; // L: 964
}
if ((var31.orientationA & var11) != 0 && !this.method3208(var7, var4, var5, var31.orientationA)) { // L: 965
var31.entity1.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var31.x - Scene_cameraX, var31.tileHeight - Scene_cameraY, var31.y - Scene_cameraZ, var31.tag);
}
if ((var31.orientationB & var11) != 0 && !this.method3208(var7, var4, var5, var31.orientationB)) { // L: 966
var31.entity2.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var31.x - Scene_cameraX, var31.tileHeight - Scene_cameraY, var31.y - Scene_cameraZ, var31.tag);
}
}
if (var13 != null && !this.method3238(var7, var4, var5, var13.entity1.height)) { // L: 968
if ((var13.orientation & var11) != 0) { // L: 969
var13.entity1.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var13.x - Scene_cameraX + var13.xOffset, var13.tileHeight - Scene_cameraY, var13.y - Scene_cameraZ + var13.yOffset, var13.tag); // L: 970
} else if (var13.orientation == 256) { // L: 972
var14 = var13.x - Scene_cameraX; // L: 973
var15 = var13.tileHeight - Scene_cameraY; // L: 974
var16 = var13.y - Scene_cameraZ; // L: 975
var17 = var13.orientation2; // L: 976
if (var17 != 1 && var17 != 2) { // L: 978
var18 = var14; // L: 979
} else {
var18 = -var14;
}
int var19;
if (var17 != 2 && var17 != 3) { // L: 981
var19 = var16; // L: 982
} else {
var19 = -var16;
}
if (var19 < var18) { // L: 983
var13.entity1.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var14 + var13.xOffset, var15, var16 + var13.yOffset, var13.tag); // L: 984
} else if (var13.entity2 != null) { // L: 986
var13.entity2.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var14, var15, var16, var13.tag); // L: 987
}
}
}
if (var20) { // L: 991
FloorDecoration var22 = var3.floorDecoration; // L: 992
if (var22 != null) { // L: 993
var22.entity.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var22.x - Scene_cameraX, var22.tileHeight - Scene_cameraY, var22.y - Scene_cameraZ, var22.tag);
}
TileItemPile var23 = var3.tileItemPile; // L: 994
if (var23 != null && var23.height == 0) { // L: 995
if (var23.second != null) { // L: 996
var23.second.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var23.x - Scene_cameraX, var23.tileHeight - Scene_cameraY, var23.y - Scene_cameraZ, var23.tag);
}
if (var23.third != null) { // L: 997
var23.third.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var23.x - Scene_cameraX, var23.tileHeight - Scene_cameraY, var23.y - Scene_cameraZ, var23.tag);
}
if (var23.first != null) { // L: 998
var23.first.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var23.x - Scene_cameraX, var23.tileHeight - Scene_cameraY, var23.y - Scene_cameraZ, var23.tag);
}
}
}
var14 = var3.gameObjectsEdgeMask; // L: 1001
if (var14 != 0) { // L: 1002
if (var4 < Scene_cameraXTile && (var14 & 4) != 0) { // L: 1003
var36 = var8[var4 + 1][var5]; // L: 1004
if (var36 != null && var36.drawSecondary) { // L: 1005
Scene_tilesDeque.addFirst(var36);
}
}
if (var5 < Scene_cameraYTile && (var14 & 2) != 0) { // L: 1007
var36 = var8[var4][var5 + 1]; // L: 1008
if (var36 != null && var36.drawSecondary) { // L: 1009
Scene_tilesDeque.addFirst(var36);
}
}
if (var4 > Scene_cameraXTile && (var14 & 1) != 0) { // L: 1011
var36 = var8[var4 - 1][var5]; // L: 1012
if (var36 != null && var36.drawSecondary) { // L: 1013
Scene_tilesDeque.addFirst(var36);
}
}
if (var5 > Scene_cameraYTile && (var14 & 8) != 0) { // L: 1015
var36 = var8[var4][var5 - 1]; // L: 1016
if (var36 != null && var36.drawSecondary) { // L: 1017
Scene_tilesDeque.addFirst(var36);
}
}
}
break;
}
if (var3.drawGameObjectEdges != 0) { // L: 1021
var20 = true; // L: 1022
for (var21 = 0; var21 < var3.gameObjectsCount; ++var21) { // L: 1023
if (var3.gameObjects[var21].lastDrawn != Scene_drawnCount && (var3.gameObjectEdgeMasks[var21] & var3.drawGameObjectEdges) == var3.field1678) { // L: 1024
var20 = false; // L: 1025
break; // L: 1026
}
}
if (var20) { // L: 1029
var10 = var3.boundaryObject; // L: 1030
if (!this.method3208(var7, var4, var5, var10.orientationA)) { // L: 1031
var10.entity1.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var10.x - Scene_cameraX, var10.tileHeight - Scene_cameraY, var10.y - Scene_cameraZ, var10.tag);
}
var3.drawGameObjectEdges = 0; // L: 1032
}
}
if (!var3.drawGameObjects) { // L: 1035
break;
}
try {
int var34 = var3.gameObjectsCount; // L: 1037
var3.drawGameObjects = false; // L: 1038
var21 = 0; // L: 1039
label563:
for (var11 = 0; var11 < var34; ++var11) { // L: 1040
var12 = var3.gameObjects[var11]; // L: 1041
if (var12.lastDrawn != Scene_drawnCount) { // L: 1042
for (var24 = var12.startX; var24 <= var12.endX; ++var24) { // L: 1043
for (var14 = var12.startY; var14 <= var12.endY; ++var14) { // L: 1044
var36 = var8[var24][var14]; // L: 1045
if (var36.drawPrimary) { // L: 1046
var3.drawGameObjects = true; // L: 1047
continue label563; // L: 1048
}
if (var36.drawGameObjectEdges != 0) { // L: 1050
var16 = 0; // L: 1051
if (var24 > var12.startX) { // L: 1052
++var16;
}
if (var24 < var12.endX) { // L: 1053
var16 += 4;
}
if (var14 > var12.startY) { // L: 1054
var16 += 8;
}
if (var14 < var12.endY) { // L: 1055
var16 += 2;
}
if ((var16 & var36.drawGameObjectEdges) == var3.field1687) { // L: 1056
var3.drawGameObjects = true; // L: 1057
continue label563; // L: 1058
}
}
}
}
gameObjects[var21++] = var12; // L: 1063
var24 = Scene_cameraXTile - var12.startX; // L: 1064
var14 = var12.endX - Scene_cameraXTile; // L: 1065
if (var14 > var24) { // L: 1066
var24 = var14;
}
var15 = Scene_cameraYTile - var12.startY; // L: 1067
var16 = var12.endY - Scene_cameraYTile; // L: 1068
if (var16 > var15) { // L: 1069
var12.field1974 = var24 + var16;
} else {
var12.field1974 = var24 + var15; // L: 1070
}
}
}
while (var21 > 0) { // L: 1073
var11 = -50; // L: 1074
var25 = -1; // L: 1075
for (var24 = 0; var24 < var21; ++var24) { // L: 1076
GameObject var35 = gameObjects[var24]; // L: 1077
if (var35.lastDrawn != Scene_drawnCount) { // L: 1078
if (var35.field1974 > var11) { // L: 1079
var11 = var35.field1974; // L: 1080
var25 = var24; // L: 1081
} else if (var11 == var35.field1974) { // L: 1083
var15 = var35.centerX - Scene_cameraX; // L: 1084
var16 = var35.centerY - Scene_cameraZ; // L: 1085
var17 = gameObjects[var25].centerX - Scene_cameraX; // L: 1086
var18 = gameObjects[var25].centerY - Scene_cameraZ; // L: 1087
if (var15 * var15 + var16 * var16 > var17 * var17 + var18 * var18) { // L: 1088
var25 = var24;
}
}
}
}
if (var25 == -1) { // L: 1092
break;
}
GameObject var33 = gameObjects[var25]; // L: 1093
var33.lastDrawn = Scene_drawnCount; // L: 1094
if (!this.method3297(var7, var33.startX, var33.endX, var33.startY, var33.endY, var33.entity.height)) { // L: 1095
var33.entity.draw(var33.orientation, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var33.centerX - Scene_cameraX, var33.height - Scene_cameraY, var33.centerY - Scene_cameraZ, var33.tag); // L: 1096
}
for (var14 = var33.startX; var14 <= var33.endX; ++var14) { // L: 1098
for (var15 = var33.startY; var15 <= var33.endY; ++var15) { // L: 1099
Tile var26 = var8[var14][var15]; // L: 1100
if (var26.drawGameObjectEdges != 0) { // L: 1101
Scene_tilesDeque.addFirst(var26);
} else if ((var14 != var4 || var15 != var5) && var26.drawSecondary) { // L: 1102
Scene_tilesDeque.addFirst(var26);
}
}
}
}
if (!var3.drawGameObjects) { // L: 1106
break;
}
} catch (Exception var28) { // L: 1108
var3.drawGameObjects = false; // L: 1109
break;
}
}
} while(!var3.drawSecondary); // L: 1112
} while(var3.drawGameObjectEdges != 0); // L: 1113
if (var4 > Scene_cameraXTile || var4 <= Scene_cameraXTileMin) { // L: 1114
break;
}
var9 = var8[var4 - 1][var5]; // L: 1115
} while(var9 != null && var9.drawSecondary); // L: 1116
if (var4 < Scene_cameraXTile || var4 >= Scene_cameraXTileMax - 1) { // L: 1118
break;
}
var9 = var8[var4 + 1][var5]; // L: 1119
} while(var9 != null && var9.drawSecondary); // L: 1120
if (var5 > Scene_cameraYTile || var5 <= Scene_cameraYTileMin) { // L: 1122
break;
}
var9 = var8[var4][var5 - 1]; // L: 1123
} while(var9 != null && var9.drawSecondary); // L: 1124
if (var5 < Scene_cameraYTile || var5 >= Scene_cameraYTileMax - 1) { // L: 1126
break;
}
var9 = var8[var4][var5 + 1]; // L: 1127
} while(var9 != null && var9.drawSecondary); // L: 1128
var3.drawSecondary = false; // L: 1130
--tileUpdateCount; // L: 1131
TileItemPile var32 = var3.tileItemPile; // L: 1132
if (var32 != null && var32.height != 0) { // L: 1133
if (var32.second != null) { // L: 1134
var32.second.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var32.x - Scene_cameraX, var32.tileHeight - Scene_cameraY - var32.height, var32.y - Scene_cameraZ, var32.tag);
}
if (var32.third != null) { // L: 1135
var32.third.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var32.x - Scene_cameraX, var32.tileHeight - Scene_cameraY - var32.height, var32.y - Scene_cameraZ, var32.tag);
}
if (var32.first != null) { // L: 1136
var32.first.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var32.x - Scene_cameraX, var32.tileHeight - Scene_cameraY - var32.height, var32.y - Scene_cameraZ, var32.tag);
}
}
if (var3.field1689 != 0) { // L: 1138
WallDecoration var29 = var3.wallDecoration; // L: 1139
if (var29 != null && !this.method3238(var7, var4, var5, var29.entity1.height)) { // L: 1140
if ((var29.orientation & var3.field1689) != 0) { // L: 1141
var29.entity1.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var29.x - Scene_cameraX + var29.xOffset, var29.tileHeight - Scene_cameraY, var29.y - Scene_cameraZ + var29.yOffset, var29.tag); // L: 1142
} else if (var29.orientation == 256) { // L: 1144
var11 = var29.x - Scene_cameraX; // L: 1145
var25 = var29.tileHeight - Scene_cameraY; // L: 1146
var24 = var29.y - Scene_cameraZ; // L: 1147
var14 = var29.orientation2; // L: 1148
if (var14 != 1 && var14 != 2) { // L: 1150
var15 = var11; // L: 1151
} else {
var15 = -var11;
}
if (var14 != 2 && var14 != 3) { // L: 1153
var16 = var24; // L: 1154
} else {
var16 = -var24;
}
if (var16 >= var15) { // L: 1155
var29.entity1.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var11 + var29.xOffset, var25, var24 + var29.yOffset, var29.tag); // L: 1156
} else if (var29.entity2 != null) { // L: 1158
var29.entity2.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var11, var25, var24, var29.tag); // L: 1159
}
}
}
BoundaryObject var27 = var3.boundaryObject; // L: 1163
if (var27 != null) { // L: 1164
if ((var27.orientationB & var3.field1689) != 0 && !this.method3208(var7, var4, var5, var27.orientationB)) { // L: 1165
var27.entity2.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var27.x - Scene_cameraX, var27.tileHeight - Scene_cameraY, var27.y - Scene_cameraZ, var27.tag);
}
if ((var27.orientationA & var3.field1689) != 0 && !this.method3208(var7, var4, var5, var27.orientationA)) { // L: 1166
var27.entity1.draw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var27.x - Scene_cameraX, var27.tileHeight - Scene_cameraY, var27.y - Scene_cameraZ, var27.tag);
}
}
}
Tile var30;
if (var6 < this.planes - 1) { // L: 1169
var30 = this.tiles[var6 + 1][var4][var5]; // L: 1170
if (var30 != null && var30.drawSecondary) { // L: 1171
Scene_tilesDeque.addFirst(var30);
}
}
if (var4 < Scene_cameraXTile) { // L: 1173
var30 = var8[var4 + 1][var5]; // L: 1174
if (var30 != null && var30.drawSecondary) { // L: 1175
Scene_tilesDeque.addFirst(var30);
}
}
if (var5 < Scene_cameraYTile) { // L: 1177
var30 = var8[var4][var5 + 1]; // L: 1178
if (var30 != null && var30.drawSecondary) { // L: 1179
Scene_tilesDeque.addFirst(var30);
}
}
if (var4 > Scene_cameraXTile) { // L: 1181
var30 = var8[var4 - 1][var5]; // L: 1182
if (var30 != null && var30.drawSecondary) { // L: 1183
Scene_tilesDeque.addFirst(var30);
}
}
if (var5 > Scene_cameraYTile) { // L: 1185
var30 = var8[var4][var5 - 1]; // L: 1186
if (var30 != null && var30.drawSecondary) { // L: 1187
Scene_tilesDeque.addFirst(var30);
}
}
}
}
@ObfuscatedName("aw")
@ObfuscatedSignature(
descriptor = "(Lem;IIIIIII)V"
)
@Export("drawTileUnderlay")
void drawTileUnderlay(TilePaint var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) {
int var9;
int var10 = var9 = (var7 << 7) - Scene_cameraX; // L: 1195
int var11;
int var12 = var11 = (var8 << 7) - Scene_cameraZ; // L: 1197
int var13;
int var14 = var13 = var10 + 128; // L: 1199
int var15;
int var16 = var15 = var12 + 128; // L: 1201
int var17 = this.tileHeights[var2][var7][var8] - Scene_cameraY; // L: 1202
int var18 = this.tileHeights[var2][var7 + 1][var8] - Scene_cameraY; // L: 1203
int var19 = this.tileHeights[var2][var7 + 1][var8 + 1] - Scene_cameraY; // L: 1204
int var20 = this.tileHeights[var2][var7][var8 + 1] - Scene_cameraY; // L: 1205
int var21 = var10 * var6 + var5 * var12 >> 16; // L: 1206
var12 = var12 * var6 - var5 * var10 >> 16; // L: 1207
var10 = var21; // L: 1208
var21 = var17 * var4 - var3 * var12 >> 16; // L: 1209
var12 = var3 * var17 + var12 * var4 >> 16; // L: 1210
var17 = var21; // L: 1211
if (var12 >= 50) { // L: 1212
var21 = var14 * var6 + var5 * var11 >> 16; // L: 1213
var11 = var11 * var6 - var5 * var14 >> 16; // L: 1214
var14 = var21; // L: 1215
var21 = var18 * var4 - var3 * var11 >> 16; // L: 1216
var11 = var3 * var18 + var11 * var4 >> 16; // L: 1217
var18 = var21; // L: 1218
if (var11 >= 50) { // L: 1219
var21 = var13 * var6 + var5 * var16 >> 16; // L: 1220
var16 = var16 * var6 - var5 * var13 >> 16; // L: 1221
var13 = var21; // L: 1222
var21 = var19 * var4 - var3 * var16 >> 16; // L: 1223
var16 = var3 * var19 + var16 * var4 >> 16; // L: 1224
var19 = var21; // L: 1225
if (var16 >= 50) { // L: 1226
var21 = var9 * var6 + var5 * var15 >> 16; // L: 1227
var15 = var15 * var6 - var5 * var9 >> 16; // L: 1228
var9 = var21; // L: 1229
var21 = var20 * var4 - var3 * var15 >> 16; // L: 1230
var15 = var3 * var20 + var15 * var4 >> 16; // L: 1231
if (var15 >= 50) { // L: 1233
int var22 = var10 * Rasterizer3D.Rasterizer3D_zoom / var12 + Rasterizer3D.Rasterizer3D_clipMidX; // L: 1234
int var23 = var17 * Rasterizer3D.Rasterizer3D_zoom / var12 + Rasterizer3D.Rasterizer3D_clipMidY; // L: 1235
int var24 = var14 * Rasterizer3D.Rasterizer3D_zoom / var11 + Rasterizer3D.Rasterizer3D_clipMidX; // L: 1236
int var25 = var18 * Rasterizer3D.Rasterizer3D_zoom / var11 + Rasterizer3D.Rasterizer3D_clipMidY; // L: 1237
int var26 = var13 * Rasterizer3D.Rasterizer3D_zoom / var16 + Rasterizer3D.Rasterizer3D_clipMidX; // L: 1238
int var27 = var19 * Rasterizer3D.Rasterizer3D_zoom / var16 + Rasterizer3D.Rasterizer3D_clipMidY; // L: 1239
int var28 = var9 * Rasterizer3D.Rasterizer3D_zoom / var15 + Rasterizer3D.Rasterizer3D_clipMidX; // L: 1240
int var29 = var21 * Rasterizer3D.Rasterizer3D_zoom / var15 + Rasterizer3D.Rasterizer3D_clipMidY; // L: 1241
Rasterizer3D.Rasterizer3D_alpha = 0; // L: 1242
int var30;
if ((var26 - var28) * (var25 - var29) - (var27 - var29) * (var24 - var28) > 0) { // L: 1243
Rasterizer3D.field1791 = false; // L: 1244
if (var26 < 0 || var28 < 0 || var24 < 0 || var26 > Rasterizer3D.Rasterizer3D_clipWidth || var28 > Rasterizer3D.Rasterizer3D_clipWidth || var24 > Rasterizer3D.Rasterizer3D_clipWidth) { // L: 1245
Rasterizer3D.field1791 = true;
}
if (checkClick && containsBounds(Scene_selectedScreenX, Scene_selectedScreenY, var27, var29, var25, var26, var28, var24)) { // L: 1246
Scene_selectedX = var7; // L: 1247
Scene_selectedY = var8; // L: 1248
}
if (var1.texture == -1) { // L: 1250
if (var1.neColor != 12345678) { // L: 1251
Rasterizer3D.method3117(var27, var29, var25, var26, var28, var24, var1.neColor, var1.nwColor, var1.seColor);
}
} else if (!Scene_isLowDetail) { // L: 1253
if (var1.isFlat) { // L: 1254
Rasterizer3D.drawTexturedTile(var27, var29, var25, var26, var28, var24, var1.neColor, var1.nwColor, var1.seColor, var10, var14, var9, var17, var18, var21, var12, var11, var15, var1.texture);
} else {
Rasterizer3D.drawTexturedTile(var27, var29, var25, var26, var28, var24, var1.neColor, var1.nwColor, var1.seColor, var13, var9, var14, var19, var21, var18, var16, var15, var11, var1.texture); // L: 1255
}
} else {
var30 = Rasterizer3D.Rasterizer3D_textureLoader.getAverageTextureRGB(var1.texture); // L: 1258
Rasterizer3D.method3117(var27, var29, var25, var26, var28, var24, method3355(var30, var1.neColor), method3355(var30, var1.nwColor), method3355(var30, var1.seColor)); // L: 1259
}
}
if ((var22 - var24) * (var29 - var25) - (var23 - var25) * (var28 - var24) > 0) { // L: 1262
Rasterizer3D.field1791 = false; // L: 1263
if (var22 < 0 || var24 < 0 || var28 < 0 || var22 > Rasterizer3D.Rasterizer3D_clipWidth || var24 > Rasterizer3D.Rasterizer3D_clipWidth || var28 > Rasterizer3D.Rasterizer3D_clipWidth) { // L: 1264
Rasterizer3D.field1791 = true;
}
if (checkClick && containsBounds(Scene_selectedScreenX, Scene_selectedScreenY, var23, var25, var29, var22, var24, var28)) { // L: 1265
Scene_selectedX = var7; // L: 1266
Scene_selectedY = var8; // L: 1267
}
if (var1.texture == -1) { // L: 1269
if (var1.swColor != 12345678) { // L: 1270
Rasterizer3D.method3117(var23, var25, var29, var22, var24, var28, var1.swColor, var1.seColor, var1.nwColor);
}
} else if (!Scene_isLowDetail) { // L: 1272
Rasterizer3D.drawTexturedTile(var23, var25, var29, var22, var24, var28, var1.swColor, var1.seColor, var1.nwColor, var10, var14, var9, var17, var18, var21, var12, var11, var15, var1.texture); // L: 1273
} else {
var30 = Rasterizer3D.Rasterizer3D_textureLoader.getAverageTextureRGB(var1.texture); // L: 1276
Rasterizer3D.method3117(var23, var25, var29, var22, var24, var28, method3355(var30, var1.swColor), method3355(var30, var1.seColor), method3355(var30, var1.nwColor)); // L: 1277
}
}
}
}
}
}
} // L: 1280
@ObfuscatedName("af")
@ObfuscatedSignature(
descriptor = "(Len;IIIIII)V"
)
@Export("drawTileOverlay")
void drawTileOverlay(TileModel var1, int var2, int var3, int var4, int var5, int var6, int var7) {
int var8 = var1.vertexX.length; // L: 1283
int var9;
int var10;
int var11;
int var12;
int var13;
for (var9 = 0; var9 < var8; ++var9) { // L: 1284
var10 = var1.vertexX[var9] - Scene_cameraX; // L: 1285
var11 = var1.vertexY[var9] - Scene_cameraY; // L: 1286
var12 = var1.vertexZ[var9] - Scene_cameraZ; // L: 1287
var13 = var12 * var4 + var5 * var10 >> 16; // L: 1288
var12 = var5 * var12 - var10 * var4 >> 16; // L: 1289
var10 = var13; // L: 1290
var13 = var3 * var11 - var12 * var2 >> 16; // L: 1291
var12 = var11 * var2 + var3 * var12 >> 16; // L: 1292
if (var12 < 50) { // L: 1294
return;
}
if (var1.triangleTextureId != null) { // L: 1295
TileModel.field1628[var9] = var10; // L: 1296
TileModel.field1624[var9] = var13; // L: 1297
TileModel.field1630[var9] = var12; // L: 1298
}
TileModel.field1626[var9] = var10 * Rasterizer3D.Rasterizer3D_zoom / var12 + Rasterizer3D.Rasterizer3D_clipMidX; // L: 1300
TileModel.field1627[var9] = var13 * Rasterizer3D.Rasterizer3D_zoom / var12 + Rasterizer3D.Rasterizer3D_clipMidY; // L: 1301
}
Rasterizer3D.Rasterizer3D_alpha = 0; // L: 1303
var8 = var1.faceX.length; // L: 1304
for (var9 = 0; var9 < var8; ++var9) { // L: 1305
var10 = var1.faceX[var9]; // L: 1306
var11 = var1.faceY[var9]; // L: 1307
var12 = var1.faceZ[var9]; // L: 1308
var13 = TileModel.field1626[var10]; // L: 1309
int var14 = TileModel.field1626[var11]; // L: 1310
int var15 = TileModel.field1626[var12]; // L: 1311
int var16 = TileModel.field1627[var10]; // L: 1312
int var17 = TileModel.field1627[var11]; // L: 1313
int var18 = TileModel.field1627[var12]; // L: 1314
if ((var13 - var14) * (var18 - var17) - (var16 - var17) * (var15 - var14) > 0) { // L: 1315
Rasterizer3D.field1791 = false; // L: 1316
if (var13 < 0 || var14 < 0 || var15 < 0 || var13 > Rasterizer3D.Rasterizer3D_clipWidth || var14 > Rasterizer3D.Rasterizer3D_clipWidth || var15 > Rasterizer3D.Rasterizer3D_clipWidth) { // L: 1317
Rasterizer3D.field1791 = true;
}
if (checkClick && containsBounds(Scene_selectedScreenX, Scene_selectedScreenY, var16, var17, var18, var13, var14, var15)) { // L: 1318
Scene_selectedX = var6; // L: 1319
Scene_selectedY = var7; // L: 1320
}
if (var1.triangleTextureId != null && var1.triangleTextureId[var9] != -1) { // L: 1322
if (!Scene_isLowDetail) { // L: 1326
if (var1.isFlat) { // L: 1327
Rasterizer3D.drawTexturedTile(var16, var17, var18, var13, var14, var15, var1.triangleColorA[var9], var1.triangleColorB[var9], var1.triangleColorC[var9], TileModel.field1628[0], TileModel.field1628[1], TileModel.field1628[3], TileModel.field1624[0], TileModel.field1624[1], TileModel.field1624[3], TileModel.field1630[0], TileModel.field1630[1], TileModel.field1630[3], var1.triangleTextureId[var9]);
} else {
Rasterizer3D.drawTexturedTile(var16, var17, var18, var13, var14, var15, var1.triangleColorA[var9], var1.triangleColorB[var9], var1.triangleColorC[var9], TileModel.field1628[var10], TileModel.field1628[var11], TileModel.field1628[var12], TileModel.field1624[var10], TileModel.field1624[var11], TileModel.field1624[var12], TileModel.field1630[var10], TileModel.field1630[var11], TileModel.field1630[var12], var1.triangleTextureId[var9]); // L: 1328
}
} else {
int var19 = Rasterizer3D.Rasterizer3D_textureLoader.getAverageTextureRGB(var1.triangleTextureId[var9]); // L: 1331
Rasterizer3D.method3117(var16, var17, var18, var13, var14, var15, method3355(var19, var1.triangleColorA[var9]), method3355(var19, var1.triangleColorB[var9]), method3355(var19, var1.triangleColorC[var9])); // L: 1332
}
} else if (var1.triangleColorA[var9] != 12345678) { // L: 1323
Rasterizer3D.method3117(var16, var17, var18, var13, var14, var15, var1.triangleColorA[var9], var1.triangleColorB[var9], var1.triangleColorC[var9]);
}
}
}
} // L: 1337
@ObfuscatedName("bl")
@Export("occlude")
void occlude() {
int var1 = Scene_planeOccluderCounts[Scene_plane]; // L: 1364
Occluder[] var2 = Scene_planeOccluders[Scene_plane]; // L: 1365
Scene_currentOccludersCount = 0; // L: 1366
for (int var3 = 0; var3 < var1; ++var3) { // L: 1367
Occluder var4 = var2[var3]; // L: 1368
int var5;
int var6;
int var7;
int var9;
boolean var13;
if (var4.type == 1) { // L: 1369
var5 = var4.minTileX - Scene_cameraXTile + 25; // L: 1370
if (var5 >= 0 && var5 <= 50) { // L: 1371
var6 = var4.minTileY - Scene_cameraYTile + 25; // L: 1372
if (var6 < 0) { // L: 1373
var6 = 0;
}
var7 = var4.maxTileY - Scene_cameraYTile + 25; // L: 1374
if (var7 > 50) { // L: 1375
var7 = 50;
}
var13 = false; // L: 1376
while (var6 <= var7) { // L: 1377
if (visibleTiles[var5][var6++]) { // L: 1378
var13 = true; // L: 1379
break;
}
}
if (var13) { // L: 1383
var9 = Scene_cameraX - var4.minX; // L: 1384
if (var9 > 32) { // L: 1385
var4.field1941 = 1;
} else {
if (var9 >= -32) { // L: 1386
continue;
}
var4.field1941 = 2; // L: 1387
var9 = -var9; // L: 1388
}
var4.field1944 = (var4.minZ - Scene_cameraZ << 8) / var9; // L: 1391
var4.field1945 = (var4.maxZ - Scene_cameraZ << 8) / var9; // L: 1392
var4.field1930 = (var4.minY - Scene_cameraY << 8) / var9; // L: 1393
var4.field1947 = (var4.maxY - Scene_cameraY << 8) / var9; // L: 1394
Scene_currentOccluders[Scene_currentOccludersCount++] = var4; // L: 1395
}
}
} else if (var4.type == 2) { // L: 1398
var5 = var4.minTileY - Scene_cameraYTile + 25; // L: 1399
if (var5 >= 0 && var5 <= 50) { // L: 1400
var6 = var4.minTileX - Scene_cameraXTile + 25; // L: 1401
if (var6 < 0) { // L: 1402
var6 = 0;
}
var7 = var4.maxTileX - Scene_cameraXTile + 25; // L: 1403
if (var7 > 50) { // L: 1404
var7 = 50;
}
var13 = false; // L: 1405
while (var6 <= var7) { // L: 1406
if (visibleTiles[var6++][var5]) { // L: 1407
var13 = true; // L: 1408
break;
}
}
if (var13) { // L: 1412
var9 = Scene_cameraZ - var4.minZ; // L: 1413
if (var9 > 32) { // L: 1414
var4.field1941 = 3;
} else {
if (var9 >= -32) { // L: 1415
continue;
}
var4.field1941 = 4; // L: 1416
var9 = -var9; // L: 1417
}
var4.field1946 = (var4.minX - Scene_cameraX << 8) / var9; // L: 1420
var4.field1943 = (var4.maxX - Scene_cameraX << 8) / var9; // L: 1421
var4.field1930 = (var4.minY - Scene_cameraY << 8) / var9; // L: 1422
var4.field1947 = (var4.maxY - Scene_cameraY << 8) / var9; // L: 1423
Scene_currentOccluders[Scene_currentOccludersCount++] = var4; // L: 1424
}
}
} else if (var4.type == 4) { // L: 1427
var5 = var4.minY - Scene_cameraY; // L: 1428
if (var5 > 128) { // L: 1429
var6 = var4.minTileY - Scene_cameraYTile + 25; // L: 1430
if (var6 < 0) { // L: 1431
var6 = 0;
}
var7 = var4.maxTileY - Scene_cameraYTile + 25; // L: 1432
if (var7 > 50) { // L: 1433
var7 = 50;
}
if (var6 <= var7) { // L: 1434
int var8 = var4.minTileX - Scene_cameraXTile + 25; // L: 1435
if (var8 < 0) { // L: 1436
var8 = 0;
}
var9 = var4.maxTileX - Scene_cameraXTile + 25; // L: 1437
if (var9 > 50) { // L: 1438
var9 = 50;
}
boolean var10 = false; // L: 1439
label148:
for (int var11 = var8; var11 <= var9; ++var11) { // L: 1440
for (int var12 = var6; var12 <= var7; ++var12) { // L: 1441
if (visibleTiles[var11][var12]) { // L: 1442
var10 = true; // L: 1443
break label148;
}
}
}
if (var10) { // L: 1448
var4.field1941 = 5; // L: 1449
var4.field1946 = (var4.minX - Scene_cameraX << 8) / var5; // L: 1450
var4.field1943 = (var4.maxX - Scene_cameraX << 8) / var5; // L: 1451
var4.field1944 = (var4.minZ - Scene_cameraZ << 8) / var5; // L: 1452
var4.field1945 = (var4.maxZ - Scene_cameraZ << 8) / var5; // L: 1453
Scene_currentOccluders[Scene_currentOccludersCount++] = var4; // L: 1454
}
}
}
}
}
} // L: 1458
@ObfuscatedName("bc")
boolean method3236(int var1, int var2, int var3) {
int var4 = this.field1841[var1][var2][var3]; // L: 1461
if (var4 == -Scene_drawnCount) { // L: 1462
return false;
} else if (var4 == Scene_drawnCount) { // L: 1463
return true;
} else {
int var5 = var2 << 7; // L: 1464
int var6 = var3 << 7; // L: 1465
if (this.method3188(var5 + 1, this.tileHeights[var1][var2][var3], var6 + 1) && this.method3188(var5 + 128 - 1, this.tileHeights[var1][var2 + 1][var3], var6 + 1) && this.method3188(var5 + 128 - 1, this.tileHeights[var1][var2 + 1][var3 + 1], var6 + 128 - 1) && this.method3188(var5 + 1, this.tileHeights[var1][var2][var3 + 1], var6 + 128 - 1)) { // L: 1466
this.field1841[var1][var2][var3] = Scene_drawnCount; // L: 1467
return true; // L: 1468
} else {
this.field1841[var1][var2][var3] = -Scene_drawnCount; // L: 1471
return false; // L: 1472
}
}
}
@ObfuscatedName("bz")
boolean method3208(int var1, int var2, int var3, int var4) {
if (!this.method3236(var1, var2, var3)) { // L: 1477
return false;
} else {
int var5 = var2 << 7; // L: 1478
int var6 = var3 << 7; // L: 1479
int var7 = this.tileHeights[var1][var2][var3] - 1; // L: 1480
int var8 = var7 - 120; // L: 1481
int var9 = var7 - 230; // L: 1482
int var10 = var7 - 238; // L: 1483
if (var4 < 16) { // L: 1484
if (var4 == 1) { // L: 1485
if (var5 > Scene_cameraX) { // L: 1486
if (!this.method3188(var5, var7, var6)) { // L: 1487
return false;
}
if (!this.method3188(var5, var7, var6 + 128)) { // L: 1488
return false;
}
}
if (var1 > 0) { // L: 1490
if (!this.method3188(var5, var8, var6)) { // L: 1491
return false;
}
if (!this.method3188(var5, var8, var6 + 128)) { // L: 1492
return false;
}
}
if (!this.method3188(var5, var9, var6)) { // L: 1494
return false;
}
if (!this.method3188(var5, var9, var6 + 128)) { // L: 1495
return false;
}
return true; // L: 1496
}
if (var4 == 2) { // L: 1498
if (var6 < Scene_cameraZ) { // L: 1499
if (!this.method3188(var5, var7, var6 + 128)) { // L: 1500
return false;
}
if (!this.method3188(var5 + 128, var7, var6 + 128)) { // L: 1501
return false;
}
}
if (var1 > 0) { // L: 1503
if (!this.method3188(var5, var8, var6 + 128)) { // L: 1504
return false;
}
if (!this.method3188(var5 + 128, var8, var6 + 128)) { // L: 1505
return false;
}
}
if (!this.method3188(var5, var9, var6 + 128)) { // L: 1507
return false;
}
if (!this.method3188(var5 + 128, var9, var6 + 128)) { // L: 1508
return false;
}
return true; // L: 1509
}
if (var4 == 4) { // L: 1511
if (var5 < Scene_cameraX) { // L: 1512
if (!this.method3188(var5 + 128, var7, var6)) { // L: 1513
return false;
}
if (!this.method3188(var5 + 128, var7, var6 + 128)) { // L: 1514
return false;
}
}
if (var1 > 0) { // L: 1516
if (!this.method3188(var5 + 128, var8, var6)) { // L: 1517
return false;
}
if (!this.method3188(var5 + 128, var8, var6 + 128)) { // L: 1518
return false;
}
}
if (!this.method3188(var5 + 128, var9, var6)) { // L: 1520
return false;
}
if (!this.method3188(var5 + 128, var9, var6 + 128)) { // L: 1521
return false;
}
return true; // L: 1522
}
if (var4 == 8) { // L: 1524
if (var6 > Scene_cameraZ) { // L: 1525
if (!this.method3188(var5, var7, var6)) { // L: 1526
return false;
}
if (!this.method3188(var5 + 128, var7, var6)) { // L: 1527
return false;
}
}
if (var1 > 0) { // L: 1529
if (!this.method3188(var5, var8, var6)) { // L: 1530
return false;
}
if (!this.method3188(var5 + 128, var8, var6)) { // L: 1531
return false;
}
}
if (!this.method3188(var5, var9, var6)) { // L: 1533
return false;
}
if (!this.method3188(var5 + 128, var9, var6)) { // L: 1534
return false;
}
return true; // L: 1535
}
}
if (!this.method3188(var5 + 64, var10, var6 + 64)) { // L: 1538
return false;
} else if (var4 == 16) { // L: 1539
return this.method3188(var5, var9, var6 + 128); // L: 1540
} else if (var4 == 32) { // L: 1543
return this.method3188(var5 + 128, var9, var6 + 128); // L: 1544
} else if (var4 == 64) { // L: 1547
return this.method3188(var5 + 128, var9, var6); // L: 1548
} else if (var4 == 128) { // L: 1551
return this.method3188(var5, var9, var6); // L: 1552
} else {
return true; // L: 1555
}
}
}
@ObfuscatedName("bj")
boolean method3238(int var1, int var2, int var3, int var4) {
if (!this.method3236(var1, var2, var3)) { // L: 1559
return false;
} else {
int var5 = var2 << 7; // L: 1560
int var6 = var3 << 7; // L: 1561
return this.method3188(var5 + 1, this.tileHeights[var1][var2][var3] - var4, var6 + 1) && this.method3188(var5 + 128 - 1, this.tileHeights[var1][var2 + 1][var3] - var4, var6 + 1) && this.method3188(var5 + 128 - 1, this.tileHeights[var1][var2 + 1][var3 + 1] - var4, var6 + 128 - 1) && this.method3188(var5 + 1, this.tileHeights[var1][var2][var3 + 1] - var4, var6 + 128 - 1); // L: 1562
}
}
@ObfuscatedName("bh")
boolean method3297(int var1, int var2, int var3, int var4, int var5, int var6) {
int var7;
int var8;
if (var3 == var2 && var5 == var4) { // L: 1567
if (!this.method3236(var1, var2, var4)) { // L: 1568
return false;
} else {
var7 = var2 << 7; // L: 1569
var8 = var4 << 7; // L: 1570
return this.method3188(var7 + 1, this.tileHeights[var1][var2][var4] - var6, var8 + 1) && this.method3188(var7 + 128 - 1, this.tileHeights[var1][var2 + 1][var4] - var6, var8 + 1) && this.method3188(var7 + 128 - 1, this.tileHeights[var1][var2 + 1][var4 + 1] - var6, var8 + 128 - 1) && this.method3188(var7 + 1, this.tileHeights[var1][var2][var4 + 1] - var6, var8 + 128 - 1); // L: 1571
}
} else {
for (var7 = var2; var7 <= var3; ++var7) { // L: 1574
for (var8 = var4; var8 <= var5; ++var8) { // L: 1575
if (this.field1841[var1][var7][var8] == -Scene_drawnCount) { // L: 1576
return false;
}
}
}
var7 = (var2 << 7) + 1; // L: 1579
var8 = (var4 << 7) + 2; // L: 1580
int var9 = this.tileHeights[var1][var2][var4] - var6; // L: 1581
if (!this.method3188(var7, var9, var8)) { // L: 1582
return false;
} else {
int var10 = (var3 << 7) - 1; // L: 1583
if (!this.method3188(var10, var9, var8)) { // L: 1584
return false;
} else {
int var11 = (var5 << 7) - 1; // L: 1585
if (!this.method3188(var7, var9, var11)) { // L: 1586
return false;
} else if (!this.method3188(var10, var9, var11)) { // L: 1587
return false;
} else {
return true; // L: 1588
}
}
}
}
}
@ObfuscatedName("bi")
boolean method3188(int var1, int var2, int var3) {
for (int var4 = 0; var4 < Scene_currentOccludersCount; ++var4) { // L: 1592
Occluder var5 = Scene_currentOccluders[var4]; // L: 1593
int var6;
int var7;
int var8;
int var9;
int var10;
if (var5.field1941 == 1) { // L: 1594
var6 = var5.minX - var1; // L: 1595
if (var6 > 0) { // L: 1596
var7 = (var6 * var5.field1944 >> 8) + var5.minZ; // L: 1597
var8 = (var6 * var5.field1945 >> 8) + var5.maxZ; // L: 1598
var9 = (var6 * var5.field1930 >> 8) + var5.minY; // L: 1599
var10 = (var6 * var5.field1947 >> 8) + var5.maxY; // L: 1600
if (var3 >= var7 && var3 <= var8 && var2 >= var9 && var2 <= var10) { // L: 1601
return true;
}
}
} else if (var5.field1941 == 2) { // L: 1605
var6 = var1 - var5.minX; // L: 1606
if (var6 > 0) { // L: 1607
var7 = (var6 * var5.field1944 >> 8) + var5.minZ; // L: 1608
var8 = (var6 * var5.field1945 >> 8) + var5.maxZ; // L: 1609
var9 = (var6 * var5.field1930 >> 8) + var5.minY; // L: 1610
var10 = (var6 * var5.field1947 >> 8) + var5.maxY; // L: 1611
if (var3 >= var7 && var3 <= var8 && var2 >= var9 && var2 <= var10) { // L: 1612
return true;
}
}
} else if (var5.field1941 == 3) { // L: 1616
var6 = var5.minZ - var3; // L: 1617
if (var6 > 0) { // L: 1618
var7 = (var6 * var5.field1946 >> 8) + var5.minX; // L: 1619
var8 = (var6 * var5.field1943 >> 8) + var5.maxX; // L: 1620
var9 = (var6 * var5.field1930 >> 8) + var5.minY; // L: 1621
var10 = (var6 * var5.field1947 >> 8) + var5.maxY; // L: 1622
if (var1 >= var7 && var1 <= var8 && var2 >= var9 && var2 <= var10) { // L: 1623
return true;
}
}
} else if (var5.field1941 == 4) { // L: 1627
var6 = var3 - var5.minZ; // L: 1628
if (var6 > 0) { // L: 1629
var7 = (var6 * var5.field1946 >> 8) + var5.minX; // L: 1630
var8 = (var6 * var5.field1943 >> 8) + var5.maxX; // L: 1631
var9 = (var6 * var5.field1930 >> 8) + var5.minY; // L: 1632
var10 = (var6 * var5.field1947 >> 8) + var5.maxY; // L: 1633
if (var1 >= var7 && var1 <= var8 && var2 >= var9 && var2 <= var10) { // L: 1634
return true;
}
}
} else if (var5.field1941 == 5) { // L: 1638
var6 = var2 - var5.minY; // L: 1639
if (var6 > 0) { // L: 1640
var7 = (var6 * var5.field1946 >> 8) + var5.minX; // L: 1641
var8 = (var6 * var5.field1943 >> 8) + var5.maxX; // L: 1642
var9 = (var6 * var5.field1944 >> 8) + var5.minZ; // L: 1643
var10 = (var6 * var5.field1945 >> 8) + var5.maxZ; // L: 1644
if (var1 >= var7 && var1 <= var8 && var3 >= var9 && var3 <= var10) { // L: 1645
return true;
}
}
}
}
return false; // L: 1650
}
@ObfuscatedName("t")
@Export("Scene_addOccluder")
public static void Scene_addOccluder(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) {
Occluder var8 = new Occluder(); // L: 149
var8.minTileX = var2 / 128; // L: 150
var8.maxTileX = var3 / 128; // L: 151
var8.minTileY = var4 / 128; // L: 152
var8.maxTileY = var5 / 128; // L: 153
var8.type = var1; // L: 154
var8.minX = var2; // L: 155
var8.maxX = var3; // L: 156
var8.minZ = var4; // L: 157
var8.maxZ = var5; // L: 158
var8.minY = var6; // L: 159
var8.maxY = var7; // L: 160
Scene_planeOccluders[var0][Scene_planeOccluderCounts[var0]++] = var8; // L: 161
} // L: 162
@ObfuscatedName("av")
@Export("Scene_buildVisiblityMap")
public static void Scene_buildVisiblityMap(int[] var0, int var1, int var2, int var3, int var4) {
Scene_viewportXMin = 0; // L: 638
Scene_viewportYMin = 0; // L: 639
Scene_viewportXMax = var3; // L: 640
Scene_viewportYMax = var4; // L: 641
Scene_viewportXCenter = var3 / 2; // L: 642
Scene_viewportYCenter = var4 / 2; // L: 643
boolean[][][][] var5 = new boolean[var0.length][32][53][53]; // L: 644
int var6;
int var7;
int var8;
int var9;
int var11;
int var12;
for (var6 = 128; var6 <= 383; var6 += 32) { // L: 645
for (var7 = 0; var7 < 2048; var7 += 64) { // L: 646
Scene_cameraPitchSine = Rasterizer3D.Rasterizer3D_sine[var6]; // L: 647
Scene_cameraPitchCosine = Rasterizer3D.Rasterizer3D_cosine[var6]; // L: 648
Scene_cameraYawSine = Rasterizer3D.Rasterizer3D_sine[var7]; // L: 649
Scene_cameraYawCosine = Rasterizer3D.Rasterizer3D_cosine[var7]; // L: 650
var8 = (var6 - 128) / 32; // L: 651
var9 = var7 / 64; // L: 652
for (int var10 = -26; var10 < 26; ++var10) { // L: 653
for (var11 = -26; var11 < 26; ++var11) { // L: 654
var12 = var10 * 128; // L: 655
int var13 = var11 * 128; // L: 656
boolean var14 = false; // L: 657
for (int var15 = -var1; var15 <= var2; var15 += 128) { // L: 658
if (method3229(var12, var0[var8] + var15, var13)) { // L: 659
var14 = true; // L: 660
break;
}
}
var5[var8][var9][var10 + 1 + 25][var11 + 1 + 25] = var14; // L: 664
}
}
}
}
for (var6 = 0; var6 < 8; ++var6) { // L: 669
for (var7 = 0; var7 < 32; ++var7) { // L: 670
for (var8 = -25; var8 < 25; ++var8) { // L: 671
for (var9 = -25; var9 < 25; ++var9) { // L: 672
boolean var16 = false; // L: 673
label85:
for (var11 = -1; var11 <= 1; ++var11) { // L: 674
for (var12 = -1; var12 <= 1; ++var12) { // L: 675
if (var5[var6][var7][var8 + var11 + 1 + 25][var9 + var12 + 1 + 25]) { // L: 676
var16 = true; // L: 677
break label85;
}
if (var5[var6][(var7 + 1) % 31][var8 + var11 + 1 + 25][var9 + var12 + 1 + 25]) { // L: 680
var16 = true; // L: 681
break label85; // L: 682
}
if (var5[var6 + 1][var7][var8 + var11 + 1 + 25][var9 + var12 + 1 + 25]) { // L: 684
var16 = true; // L: 685
break label85; // L: 686
}
if (var5[var6 + 1][(var7 + 1) % 31][var8 + var11 + 1 + 25][var9 + var12 + 1 + 25]) { // L: 688
var16 = true; // L: 689
break label85; // L: 690
}
}
}
visibilityMap[var6][var7][var8 + 25][var9 + 25] = var16; // L: 694
}
}
}
}
} // L: 699
@ObfuscatedName("ax")
static boolean method3229(int var0, int var1, int var2) {
int var3 = var0 * Scene_cameraYawCosine + var2 * Scene_cameraYawSine >> 16; // L: 702
int var4 = var2 * Scene_cameraYawCosine - var0 * Scene_cameraYawSine >> 16; // L: 703
int var5 = var4 * Scene_cameraPitchCosine + Scene_cameraPitchSine * var1 >> 16; // L: 704
int var6 = Scene_cameraPitchCosine * var1 - var4 * Scene_cameraPitchSine >> 16; // L: 705
if (var5 >= 50 && var5 <= 3500) { // L: 706
int var7 = var3 * 128 / var5 + Scene_viewportXCenter; // L: 707
int var8 = var6 * 128 / var5 + Scene_viewportYCenter; // L: 708
return var7 >= Scene_viewportXMin && var7 <= Scene_viewportXMax && var8 >= Scene_viewportYMin && var8 <= Scene_viewportYMax; // L: 709
} else {
return false; // L: 710
}
}
@ObfuscatedName("ad")
@Export("shouldSendWalk")
public static boolean shouldSendWalk() {
return viewportWalking && Scene_selectedX != -1; // L: 729
}
@ObfuscatedName("ai")
public static void method3360() {
Scene_selectedX = -1; // L: 733
viewportWalking = false; // L: 734
} // L: 735
@ObfuscatedName("ak")
static final int method3355(int var0, int var1) {
var1 = (var0 & 127) * var1 >> 7; // L: 1340
if (var1 < 2) { // L: 1341
var1 = 2;
} else if (var1 > 126) { // L: 1342
var1 = 126;
}
return (var0 & 65408) + var1; // L: 1343
}
@ObfuscatedName("ac")
@Export("containsBounds")
static boolean containsBounds(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) {
if (var1 < var2 && var1 < var3 && var1 < var4) { // L: 1347
return false;
} else if (var1 > var2 && var1 > var3 && var1 > var4) { // L: 1348
return false;
} else if (var0 < var5 && var0 < var6 && var0 < var7) { // L: 1349
return false;
} else if (var0 > var5 && var0 > var6 && var0 > var7) { // L: 1350
return false;
} else {
int var8 = (var1 - var2) * (var6 - var5) - (var0 - var5) * (var3 - var2); // L: 1351
int var9 = (var7 - var6) * (var1 - var3) - (var0 - var6) * (var4 - var3); // L: 1352
int var10 = (var5 - var7) * (var1 - var4) - (var2 - var4) * (var0 - var7); // L: 1353
if (var8 == 0) { // L: 1354
if (var9 != 0) { // L: 1357
return var9 < 0 ? var10 <= 0 : var10 >= 0; // L: 1358
} else {
return true; // L: 1360
}
} else {
return var8 < 0 ? var9 <= 0 && var10 <= 0 : var9 >= 0 && var10 >= 0; // L: 1355
}
}
}
}