mirror of
https://gitlab.com/2009scape/rt4-client.git
synced 2025-12-17 20:10:21 -07:00
3177 lines
135 KiB
Java
3177 lines
135 KiB
Java
package rt4;
|
|
|
|
import com.jogamp.opengl.GL2;
|
|
import org.openrs2.deob.annotation.OriginalArg;
|
|
import org.openrs2.deob.annotation.OriginalMember;
|
|
import org.openrs2.deob.annotation.Pc;
|
|
|
|
public class SceneGraph {
|
|
@OriginalMember(owner = "client!bb", name = "g", descriptor = "[[[B")
|
|
public static final byte[][][] tileFlags = new byte[4][104][104];
|
|
@OriginalMember(owner = "client!mi", name = "Y", descriptor = "[[[Lclient!ih;")
|
|
public static final LinkedList[][][] objStacks = new LinkedList[4][104][104];
|
|
@OriginalMember(owner = "client!te", name = "B", descriptor = "[I")
|
|
public static final int[] anIntArray469 = new int[]{0, -1, 0, 1};
|
|
@OriginalMember(owner = "client!fb", name = "q", descriptor = "[I")
|
|
public static final int[] anIntArray154 = new int[]{-1, -1, 1, 1};
|
|
@OriginalMember(owner = "client!kc", name = "o", descriptor = "[[[Lclient!bj;")
|
|
public static Tile[][][] tiles;
|
|
|
|
@OriginalMember(owner = "client!gj", name = "m", descriptor = "[[[I")
|
|
public static int[][][] tileHeights;
|
|
@OriginalMember(owner = "client!id", name = "i", descriptor = "[[[I")
|
|
public static int[][][] surfaceTileHeights;
|
|
@OriginalMember(owner = "client!tg", name = "g", descriptor = "[[[B")
|
|
public static byte[][][] tileOverlays;
|
|
@OriginalMember(owner = "client!n", name = "h", descriptor = "[[[B")
|
|
public static byte[][][] tileShapes;
|
|
@OriginalMember(owner = "client!ac", name = "e", descriptor = "[[[B")
|
|
public static byte[][][] tileAngles;
|
|
@OriginalMember(owner = "client!ui", name = "eb", descriptor = "[[[B")
|
|
public static byte[][][] tileUnderlays;
|
|
@OriginalMember(owner = "client!em", name = "t", descriptor = "[[[I")
|
|
public static int[][][] anIntArrayArrayArray6;
|
|
@OriginalMember(owner = "client!ka", name = "r", descriptor = "[I")
|
|
public static int[] rowCount;
|
|
@OriginalMember(owner = "client!lg", name = "k", descriptor = "I")
|
|
public static int firstVisibleLevel = 99;
|
|
@OriginalMember(owner = "client!ug", name = "d", descriptor = "[I")
|
|
public static int[] rowChroma;
|
|
@OriginalMember(owner = "client!l", name = "l", descriptor = "[I")
|
|
public static int[] rowSaturation;
|
|
@OriginalMember(owner = "client!s", name = "i", descriptor = "[I")
|
|
public static int[] rowWeightedHue;
|
|
@OriginalMember(owner = "client!jd", name = "d", descriptor = "[[[B")
|
|
public static byte[][][] aByteArrayArrayArray9;
|
|
@OriginalMember(owner = "client!wk", name = "v", descriptor = "[I")
|
|
public static int[] rowLightness;
|
|
@OriginalMember(owner = "client!ub", name = "h", descriptor = "[Lclient!pe;")
|
|
public static SceneGraph_Class120[] aClass120Array2;
|
|
@OriginalMember(owner = "client!rh", name = "k", descriptor = "I")
|
|
public static int anInt4870 = 0;
|
|
@OriginalMember(owner = "client!bl", name = "T", descriptor = "I")
|
|
public static int sceneryLen = 0;
|
|
@OriginalMember(owner = "client!pm", name = "cb", descriptor = "[[[Lclient!bj;")
|
|
public static Tile[][][] surfaceGroundTiles;
|
|
@OriginalMember(owner = "client!client", name = "kb", descriptor = "[[Lclient!hg;")
|
|
public static GlTile[][] surfaceHdTiles;
|
|
@OriginalMember(owner = "client!wh", name = "c", descriptor = "[[[Lclient!bj;")
|
|
public static Tile[][][] underWaterGroundTiles;
|
|
@OriginalMember(owner = "client!pk", name = "R", descriptor = "[[Lclient!hg;")
|
|
public static GlTile[][] underWaterHdTiles;
|
|
@OriginalMember(owner = "client!hc", name = "O", descriptor = "[Lclient!pe;")
|
|
public static SceneGraph_Class120[] aClass120Array1;
|
|
@OriginalMember(owner = "client!ma", name = "i", descriptor = "I")
|
|
public static int width;
|
|
@OriginalMember(owner = "client!hk", name = "Y", descriptor = "I")
|
|
public static int length;
|
|
@OriginalMember(owner = "client!cd", name = "s", descriptor = "I")
|
|
public static int anInt917;
|
|
@OriginalMember(owner = "client!tk", name = "D", descriptor = "[Lclient!ec;")
|
|
public static Scenery[] scenery;
|
|
@OriginalMember(owner = "client!c", name = "bb", descriptor = "[Lclient!ec;")
|
|
public static Scenery[] aClass31Array2;
|
|
@OriginalMember(owner = "client!gf", name = "O", descriptor = "[[[I")
|
|
public static int[][][] underwaterTileHeights;
|
|
@OriginalMember(owner = "client!oj", name = "E", descriptor = "[[Lclient!hg;")
|
|
public static GlTile[][] underwaterHdTiles;
|
|
@OriginalMember(owner = "client!jm", name = "r", descriptor = "I")
|
|
public static int levels;
|
|
@OriginalMember(owner = "client!sm", name = "e", descriptor = "[[[B")
|
|
public static byte[][][] aByteArrayArrayArray13;
|
|
@OriginalMember(owner = "client!wi", name = "db", descriptor = "I")
|
|
public static int visibility;
|
|
@OriginalMember(owner = "client!f", name = "ab", descriptor = "[[I")
|
|
public static int[][] anIntArrayArray11;
|
|
@OriginalMember(owner = "client!la", name = "i", descriptor = "[[[I")
|
|
public static int[][][] anIntArrayArrayArray12;
|
|
@OriginalMember(owner = "client!dl", name = "h", descriptor = "[[Z")
|
|
public static boolean[][] aBooleanArrayArray1;
|
|
@OriginalMember(owner = "client!ha", name = "k", descriptor = "[[Z")
|
|
public static boolean[][] aBooleanArrayArray3;
|
|
@OriginalMember(owner = "client!og", name = "b", descriptor = "I")
|
|
public static int currentChunkZ;
|
|
@OriginalMember(owner = "client!ja", name = "q", descriptor = "I")
|
|
public static int currentChunkX;
|
|
@OriginalMember(owner = "client!gm", name = "R", descriptor = "I")
|
|
public static int anInt2293 = (int) (Math.random() * 17.0D) - 8;
|
|
@OriginalMember(owner = "client!ok", name = "c", descriptor = "I")
|
|
public static int anInt4272 = (int) (Math.random() * 33.0D) - 16;
|
|
|
|
@OriginalMember(owner = "client!km", name = "f", descriptor = "(I)Z")
|
|
public static boolean allLevelsAreVisible() {
|
|
return GlRenderer.enabled || Preferences.allLevelsVisible;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!ql", name = "a", descriptor = "(IIII)I")
|
|
public static int getTileHeight(@OriginalArg(0) int level, @OriginalArg(2) int xFine, @OriginalArg(3) int zFine) {
|
|
if (tileHeights == null) {
|
|
return 0;
|
|
}
|
|
@Pc(12) int x = xFine >> 7;
|
|
@Pc(16) int z = zFine >> 7;
|
|
if (x < 0 || z < 0 || x > 103 || z > 103) {
|
|
return 0;
|
|
}
|
|
@Pc(36) int xFine2 = xFine & 0x7F;
|
|
@Pc(40) int zFine2 = zFine & 0x7F;
|
|
@Pc(42) int virtualLevel = level;
|
|
if (level < 3 && (tileFlags[1][x][z] & 0x2) == 2) {
|
|
virtualLevel = level + 1;
|
|
}
|
|
@Pc(91) int heightZ0 = xFine2 * tileHeights[virtualLevel][x + 1][z + 1] + tileHeights[virtualLevel][x][z + 1] * (128 - xFine2) >> 7;
|
|
@Pc(118) int heightZ1 = xFine2 * tileHeights[virtualLevel][x + 1][z] + (128 - xFine2) * tileHeights[virtualLevel][x][z] >> 7;
|
|
return zFine2 * heightZ0 + (128 - zFine2) * heightZ1 >> 7;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!ih", name = "a", descriptor = "(III)Lclient!jh;")
|
|
public static Wall removeWall(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2) {
|
|
@Pc(7) Tile local7 = tiles[arg0][arg1][arg2];
|
|
if (local7 == null) {
|
|
return null;
|
|
} else {
|
|
@Pc(14) Wall local14 = local7.wall;
|
|
local7.wall = null;
|
|
return local14;
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!fc", name = "a", descriptor = "()V")
|
|
public static void clear() {
|
|
@Pc(3) int local3;
|
|
@Pc(9) int local9;
|
|
@Pc(14) int local14;
|
|
if (surfaceGroundTiles != null) {
|
|
for (local3 = 0; local3 < surfaceGroundTiles.length; local3++) {
|
|
for (local9 = 0; local9 < width; local9++) {
|
|
for (local14 = 0; local14 < length; local14++) {
|
|
surfaceGroundTiles[local3][local9][local14] = null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
surfaceHdTiles = null;
|
|
if (underWaterGroundTiles != null) {
|
|
for (local3 = 0; local3 < underWaterGroundTiles.length; local3++) {
|
|
for (local9 = 0; local9 < width; local9++) {
|
|
for (local14 = 0; local14 < length; local14++) {
|
|
underWaterGroundTiles[local3][local9][local14] = null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
underWaterHdTiles = null;
|
|
anInt917 = 0;
|
|
if (aClass120Array1 != null) {
|
|
for (local3 = 0; local3 < anInt917; local3++) {
|
|
aClass120Array1[local3] = null;
|
|
}
|
|
}
|
|
if (scenery != null) {
|
|
for (local3 = 0; local3 < sceneryLen; local3++) {
|
|
scenery[local3] = null;
|
|
}
|
|
sceneryLen = 0;
|
|
}
|
|
if (aClass31Array2 != null) {
|
|
for (local3 = 0; local3 < aClass31Array2.length; local3++) {
|
|
aClass31Array2[local3] = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!vf", name = "a", descriptor = "(III)Lclient!jh;")
|
|
public static Wall getWall(@OriginalArg(0) int level, @OriginalArg(1) int x, @OriginalArg(2) int z) {
|
|
@Pc(7) Tile tile = tiles[level][x][z];
|
|
return tile == null ? null : tile.wall;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!gj", name = "a", descriptor = "(III)Lclient!df;")
|
|
public static WallDecor getWallDecor(@OriginalArg(0) int level, @OriginalArg(1) int x, @OriginalArg(2) int z) {
|
|
@Pc(7) Tile tile = tiles[level][x][z];
|
|
return tile == null ? null : tile.wallDecor;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!kf", name = "b", descriptor = "(III)Lclient!ec;")
|
|
public static Scenery getScenery(@OriginalArg(0) int level, @OriginalArg(1) int x, @OriginalArg(2) int z) {
|
|
@Pc(7) Tile tile = tiles[level][x][z];
|
|
if (tile == null) {
|
|
return null;
|
|
}
|
|
for (@Pc(13) int i = 0; i < tile.sceneryLen; i++) {
|
|
@Pc(22) Scenery scenery = tile.scenery[i];
|
|
if ((scenery.key >> 29 & 0x3L) == 2L && scenery.xMin == x && scenery.zMin == z) {
|
|
return scenery;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!wa", name = "a", descriptor = "(III)Lclient!bm;")
|
|
public static GroundDecor getGroundDecor(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2) {
|
|
@Pc(7) Tile local7 = tiles[arg0][arg1][arg2];
|
|
return local7 == null || local7.groundDecor == null ? null : local7.groundDecor;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!v", name = "a", descriptor = "(IIIJ)Z")
|
|
public static boolean isLocValid(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) long arg3) {
|
|
@Pc(7) Tile tile = tiles[arg0][arg1][arg2];
|
|
if (tile == null) {
|
|
return false;
|
|
} else if (tile.wall != null && tile.wall.key == arg3) {
|
|
return true;
|
|
} else if (tile.wallDecor != null && tile.wallDecor.key == arg3) {
|
|
return true;
|
|
} else if (tile.groundDecor != null && tile.groundDecor.key == arg3) {
|
|
return true;
|
|
} else {
|
|
for (@Pc(46) int local46 = 0; local46 < tile.sceneryLen; local46++) {
|
|
if (tile.scenery[local46].key == arg3) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!pl", name = "a", descriptor = "(ZI)V")
|
|
public static void load(@OriginalArg(0) boolean underwater) {
|
|
rowWeightedHue = new int[104];
|
|
rowSaturation = new int[104];
|
|
firstVisibleLevel = 99;
|
|
rowChroma = new int[104];
|
|
@Pc(14) byte plane;
|
|
if (underwater) {
|
|
plane = 1;
|
|
} else {
|
|
plane = 4;
|
|
}
|
|
tileShapes = new byte[plane][104][104];
|
|
rowCount = new int[104];
|
|
anIntArrayArrayArray6 = new int[plane][105][105];
|
|
aByteArrayArrayArray9 = new byte[plane][105][105];
|
|
tileOverlays = new byte[plane][104][104];
|
|
rowLightness = new int[104];
|
|
tileAngles = new byte[plane][104][104];
|
|
tileUnderlays = new byte[plane][104][104];
|
|
}
|
|
|
|
@OriginalMember(owner = "client!ib", name = "b", descriptor = "(I)V")
|
|
public static void unload() {
|
|
rowChroma = null;
|
|
anIntArrayArrayArray6 = null;
|
|
rowCount = null;
|
|
tileShapes = null;
|
|
tileAngles = null;
|
|
aByteArrayArrayArray9 = null;
|
|
tileOverlays = null;
|
|
tileUnderlays = null;
|
|
rowSaturation = null;
|
|
rowWeightedHue = null;
|
|
rowLightness = null;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!um", name = "c", descriptor = "(III)Z")
|
|
public static boolean method4394(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2) {
|
|
for (@Pc(1) int local1 = 0; local1 < anInt4870; local1++) {
|
|
@Pc(8) SceneGraph_Class120 local8 = aClass120Array2[local1];
|
|
@Pc(17) int local17;
|
|
@Pc(29) int local29;
|
|
@Pc(39) int local39;
|
|
@Pc(49) int local49;
|
|
@Pc(59) int local59;
|
|
if (local8.anInt4462 == 1) {
|
|
local17 = local8.anInt4460 - arg0;
|
|
if (local17 > 0) {
|
|
local29 = local8.anInt4458 + (local8.anInt4454 * local17 >> 8);
|
|
local39 = local8.anInt4449 + (local8.anInt4450 * local17 >> 8);
|
|
local49 = local8.anInt4444 + (local8.anInt4459 * local17 >> 8);
|
|
local59 = local8.anInt4447 + (local8.anInt4463 * local17 >> 8);
|
|
if (arg2 >= local29 && arg2 <= local39 && arg1 >= local49 && arg1 <= local59) {
|
|
return true;
|
|
}
|
|
}
|
|
} else if (local8.anInt4462 == 2) {
|
|
local17 = arg0 - local8.anInt4460;
|
|
if (local17 > 0) {
|
|
local29 = local8.anInt4458 + (local8.anInt4454 * local17 >> 8);
|
|
local39 = local8.anInt4449 + (local8.anInt4450 * local17 >> 8);
|
|
local49 = local8.anInt4444 + (local8.anInt4459 * local17 >> 8);
|
|
local59 = local8.anInt4447 + (local8.anInt4463 * local17 >> 8);
|
|
if (arg2 >= local29 && arg2 <= local39 && arg1 >= local49 && arg1 <= local59) {
|
|
return true;
|
|
}
|
|
}
|
|
} else if (local8.anInt4462 == 3) {
|
|
local17 = local8.anInt4458 - arg2;
|
|
if (local17 > 0) {
|
|
local29 = local8.anInt4460 + (local8.anInt4448 * local17 >> 8);
|
|
local39 = local8.anInt4445 + (local8.anInt4456 * local17 >> 8);
|
|
local49 = local8.anInt4444 + (local8.anInt4459 * local17 >> 8);
|
|
local59 = local8.anInt4447 + (local8.anInt4463 * local17 >> 8);
|
|
if (arg0 >= local29 && arg0 <= local39 && arg1 >= local49 && arg1 <= local59) {
|
|
return true;
|
|
}
|
|
}
|
|
} else if (local8.anInt4462 == 4) {
|
|
local17 = arg2 - local8.anInt4458;
|
|
if (local17 > 0) {
|
|
local29 = local8.anInt4460 + (local8.anInt4448 * local17 >> 8);
|
|
local39 = local8.anInt4445 + (local8.anInt4456 * local17 >> 8);
|
|
local49 = local8.anInt4444 + (local8.anInt4459 * local17 >> 8);
|
|
local59 = local8.anInt4447 + (local8.anInt4463 * local17 >> 8);
|
|
if (arg0 >= local29 && arg0 <= local39 && arg1 >= local49 && arg1 <= local59) {
|
|
return true;
|
|
}
|
|
}
|
|
} else if (local8.anInt4462 == 5) {
|
|
local17 = arg1 - local8.anInt4444;
|
|
if (local17 > 0) {
|
|
local29 = local8.anInt4460 + (local8.anInt4448 * local17 >> 8);
|
|
local39 = local8.anInt4445 + (local8.anInt4456 * local17 >> 8);
|
|
local49 = local8.anInt4458 + (local8.anInt4454 * local17 >> 8);
|
|
local59 = local8.anInt4449 + (local8.anInt4450 * local17 >> 8);
|
|
if (arg0 >= local29 && arg0 <= local39 && arg2 >= local49 && arg2 <= local59) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!bj", name = "a", descriptor = "(III)J")
|
|
public static long getGroundDecorKey(@OriginalArg(0) int level, @OriginalArg(1) int x, @OriginalArg(2) int z) {
|
|
@Pc(7) Tile tile = tiles[level][x][z];
|
|
return tile == null || tile.groundDecor == null ? 0L : tile.groundDecor.key;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!wj", name = "a", descriptor = "(Z)V")
|
|
public static void setUnderwater(@OriginalArg(0) boolean underwater) {
|
|
if (underwater) {
|
|
tiles = underWaterGroundTiles;
|
|
tileHeights = underwaterTileHeights;
|
|
underwaterHdTiles = underWaterHdTiles;
|
|
} else {
|
|
tiles = surfaceGroundTiles;
|
|
tileHeights = surfaceTileHeights;
|
|
underwaterHdTiles = surfaceHdTiles;
|
|
}
|
|
levels = tiles.length;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!wj", name = "a", descriptor = "(IIZLclient!wa;IIBII)V")
|
|
public static void readTile(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) boolean arg2, @OriginalArg(3) Buffer buffer, @OriginalArg(4) int z, @OriginalArg(5) int x, @OriginalArg(7) int angle, @OriginalArg(8) int level) {
|
|
@Pc(32) int opcode;
|
|
if (x < 0 || x >= 104 || z < 0 || z >= 104) {
|
|
while (true) {
|
|
opcode = buffer.g1();
|
|
if (opcode == 0) {
|
|
break;
|
|
}
|
|
if (opcode == 1) {
|
|
buffer.g1();
|
|
break;
|
|
}
|
|
if (opcode <= 49) {
|
|
buffer.g1();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
if (!arg2) {
|
|
tileFlags[level][x][z] = 0;
|
|
}
|
|
while (true) {
|
|
opcode = buffer.g1();
|
|
if (opcode == 0) {
|
|
if (arg2) {
|
|
tileHeights[0][x][z] = surfaceTileHeights[0][x][z];
|
|
} else if (level == 0) {
|
|
tileHeights[0][x][z] = -PerlinNoise.getTileHeight(z + arg1 + 556238, arg0 + x + 932731) * 8;
|
|
} else {
|
|
tileHeights[level][x][z] = tileHeights[level - 1][x][z] - 240;
|
|
}
|
|
break;
|
|
}
|
|
if (opcode == 1) {
|
|
@Pc(111) int height = buffer.g1();
|
|
if (arg2) {
|
|
tileHeights[0][x][z] = surfaceTileHeights[0][x][z] + height * 8;
|
|
} else {
|
|
if (height == 1) {
|
|
height = 0;
|
|
}
|
|
if (level == 0) {
|
|
tileHeights[0][x][z] = -height * 8;
|
|
} else {
|
|
tileHeights[level][x][z] = tileHeights[level - 1][x][z] - height * 8;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
if (opcode <= 49) {
|
|
tileOverlays[level][x][z] = buffer.g1b();
|
|
tileShapes[level][x][z] = (byte) ((opcode - 2) / 4);
|
|
tileAngles[level][x][z] = (byte) (opcode + angle - 2 & 0x3);
|
|
} else if (opcode > 81) {
|
|
tileUnderlays[level][x][z] = (byte) (opcode - 81);
|
|
} else if (!arg2) {
|
|
tileFlags[level][x][z] = (byte) (opcode - 49);
|
|
}
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!hd", name = "a", descriptor = "(IIIIIIII)V")
|
|
public static void method1881(@OriginalArg(0) int level, @OriginalArg(2) int arg1, @OriginalArg(3) int shape, @OriginalArg(4) int z, @OriginalArg(5) int layer, @OriginalArg(6) int x, @OriginalArg(7) int arg6) {
|
|
if (x < 0 || z < 0 || x >= 103 || z >= 103) {
|
|
return;
|
|
}
|
|
@Pc(38) int locId;
|
|
if (layer == 0) {
|
|
@Pc(28) Wall wall = getWall(level, x, z);
|
|
if (wall != null) {
|
|
locId = Integer.MAX_VALUE & (int) (wall.key >>> 32);
|
|
if (shape == 2) {
|
|
wall.primary = new Loc(locId, 2, arg1 + 4, level, x, z, arg6, false, wall.primary);
|
|
wall.secondary = new Loc(locId, 2, arg1 + 1 & 0x3, level, x, z, arg6, false, wall.secondary);
|
|
} else {
|
|
wall.primary = new Loc(locId, shape, arg1, level, x, z, arg6, false, wall.primary);
|
|
}
|
|
}
|
|
}
|
|
if (layer == 1) {
|
|
@Pc(106) WallDecor wallDecor = getWallDecor(level, x, z);
|
|
if (wallDecor != null) {
|
|
locId = (int) (wallDecor.key >>> 32) & Integer.MAX_VALUE;
|
|
if (shape == 4 || shape == 5) {
|
|
wallDecor.primary = new Loc(locId, 4, arg1, level, x, z, arg6, false, wallDecor.primary);
|
|
} else if (shape == 6) {
|
|
wallDecor.primary = new Loc(locId, 4, arg1 + 4, level, x, z, arg6, false, wallDecor.primary);
|
|
} else if (shape == 7) {
|
|
wallDecor.primary = new Loc(locId, 4, (arg1 + 2 & 0x3) + 4, level, x, z, arg6, false, wallDecor.primary);
|
|
} else if (shape == 8) {
|
|
wallDecor.primary = new Loc(locId, 4, arg1 + 4, level, x, z, arg6, false, wallDecor.primary);
|
|
wallDecor.secondary = new Loc(locId, 4, (arg1 + 2 & 0x3) + 4, level, x, z, arg6, false, wallDecor.secondary);
|
|
}
|
|
}
|
|
}
|
|
if (layer == 2) {
|
|
if (shape == 11) {
|
|
shape = 10;
|
|
}
|
|
@Pc(255) Scenery scenery = getScenery(level, x, z);
|
|
if (scenery != null) {
|
|
scenery.entity = new Loc((int) (scenery.key >>> 32) & Integer.MAX_VALUE, shape, arg1, level, x, z, arg6, false, scenery.entity);
|
|
}
|
|
}
|
|
if (layer == 3) {
|
|
@Pc(290) GroundDecor groundDecor = getGroundDecor(level, x, z);
|
|
if (groundDecor != null) {
|
|
groundDecor.entity = new Loc(Integer.MAX_VALUE & (int) (groundDecor.key >>> 32), 22, arg1, level, x, z, arg6, false, groundDecor.entity);
|
|
}
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!nh", name = "a", descriptor = "(IIIILclient!th;JZ)V")
|
|
public static void setGroundDecor(@OriginalArg(0) int level, @OriginalArg(1) int x, @OriginalArg(2) int z, @OriginalArg(3) int arg3, @OriginalArg(4) Entity entity, @OriginalArg(5) long key, @OriginalArg(6) boolean arg6) {
|
|
if (entity == null) {
|
|
return;
|
|
}
|
|
@Pc(6) GroundDecor groundDecor = new GroundDecor();
|
|
groundDecor.entity = entity;
|
|
groundDecor.xFine = x * 128 + 64;
|
|
groundDecor.zFine = z * 128 + 64;
|
|
groundDecor.anInt733 = arg3;
|
|
groundDecor.key = key;
|
|
groundDecor.aBoolean49 = arg6;
|
|
if (tiles[level][x][z] == null) {
|
|
tiles[level][x][z] = new Tile(level, x, z);
|
|
}
|
|
tiles[level][x][z].groundDecor = groundDecor;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!ia", name = "a", descriptor = "(IB)I")
|
|
public static int method2251(@OriginalArg(0) int arg0) {
|
|
@Pc(11) int local11 = arg0 & 0x3F;
|
|
@Pc(17) int local17 = arg0 >> 6 & 0x3;
|
|
if (local11 == 18) {
|
|
if (local17 == 0) {
|
|
return 1;
|
|
}
|
|
if (local17 == 1) {
|
|
return 2;
|
|
}
|
|
if (local17 == 2) {
|
|
return 4;
|
|
}
|
|
if (local17 == 3) {
|
|
return 8;
|
|
}
|
|
} else if (local11 == 19 || local11 == 21) {
|
|
if (local17 == 0) {
|
|
return 16;
|
|
}
|
|
if (local17 == 1) {
|
|
return 32;
|
|
}
|
|
if (local17 == 2) {
|
|
return 64;
|
|
}
|
|
if (local17 == 3) {
|
|
return 128;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!vf", name = "a", descriptor = "(IIIILclient!th;Lclient!th;IIJ)V")
|
|
public static void setWall(@OriginalArg(0) int level, @OriginalArg(1) int x, @OriginalArg(2) int z, @OriginalArg(3) int arg3, @OriginalArg(4) Entity primary, @OriginalArg(5) Entity secondary, @OriginalArg(6) int arg6, @OriginalArg(7) int arg7, @OriginalArg(8) long key) {
|
|
if (primary == null && secondary == null) {
|
|
return;
|
|
}
|
|
@Pc(8) Wall wall = new Wall();
|
|
wall.key = key;
|
|
wall.xFine = x * 128 + 64;
|
|
wall.zFine = z * 128 + 64;
|
|
wall.anInt3051 = arg3;
|
|
wall.primary = primary;
|
|
wall.secondary = secondary;
|
|
wall.anInt3049 = arg6;
|
|
wall.anInt3052 = arg7;
|
|
for (@Pc(42) int level0 = level; level0 >= 0; level0--) {
|
|
if (tiles[level0][x][z] == null) {
|
|
tiles[level0][x][z] = new Tile(level0, x, z);
|
|
}
|
|
}
|
|
tiles[level][x][z].wall = wall;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!cd", name = "a", descriptor = "(IIIIZ)V")
|
|
public static void init(@OriginalArg(3) int tileVisibility, @OriginalArg(4) boolean hasUnderWaterMap) {
|
|
width = 104;
|
|
length = 104;
|
|
visibility = tileVisibility;
|
|
surfaceGroundTiles = new Tile[4][width][length];
|
|
surfaceTileHeights = new int[4][width + 1][length + 1];
|
|
if (GlRenderer.enabled) {
|
|
surfaceHdTiles = new GlTile[4][];
|
|
}
|
|
if (hasUnderWaterMap) {
|
|
underWaterGroundTiles = new Tile[1][width][length];
|
|
anIntArrayArray11 = new int[width][length];
|
|
underwaterTileHeights = new int[1][width + 1][length + 1];
|
|
if (GlRenderer.enabled) {
|
|
underWaterHdTiles = new GlTile[1][];
|
|
}
|
|
} else {
|
|
underWaterGroundTiles = null;
|
|
anIntArrayArray11 = null;
|
|
underwaterTileHeights = null;
|
|
underWaterHdTiles = null;
|
|
}
|
|
setUnderwater(false);
|
|
aClass120Array1 = new SceneGraph_Class120[500];
|
|
anInt917 = 0;
|
|
aClass120Array2 = new SceneGraph_Class120[500];
|
|
anInt4870 = 0;
|
|
anIntArrayArrayArray12 = new int[4][width + 1][length + 1];
|
|
scenery = new Scenery[5000];
|
|
sceneryLen = 0;
|
|
aClass31Array2 = new Scenery[100];
|
|
aBooleanArrayArray1 = new boolean[visibility + visibility + 1][visibility + visibility + 1];
|
|
aBooleanArrayArray3 = new boolean[visibility + visibility + 2][visibility + visibility + 2];
|
|
aByteArrayArrayArray13 = new byte[4][width][length];
|
|
}
|
|
|
|
@OriginalMember(owner = "client!vj", name = "a", descriptor = "(III)J")
|
|
public static long getWallKey(@OriginalArg(0) int level, @OriginalArg(1) int x, @OriginalArg(2) int z) {
|
|
@Pc(7) Tile tile = tiles[level][x][z];
|
|
return tile == null || tile.wall == null ? 0L : tile.wall.key;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!l", name = "a", descriptor = "(III)J")
|
|
public static long getWallDecorKey(@OriginalArg(0) int level, @OriginalArg(1) int x, @OriginalArg(2) int z) {
|
|
@Pc(7) Tile tile = tiles[level][x][z];
|
|
return tile == null || tile.wallDecor == null ? 0L : tile.wallDecor.key;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!cl", name = "a", descriptor = "(III)J")
|
|
public static long getSceneryKey(@OriginalArg(0) int level, @OriginalArg(1) int x, @OriginalArg(2) int z) {
|
|
@Pc(7) Tile tile = tiles[level][x][z];
|
|
if (tile == null) {
|
|
return 0L;
|
|
}
|
|
for (@Pc(13) int i = 0; i < tile.sceneryLen; i++) {
|
|
@Pc(22) Scenery scenery = tile.scenery[i];
|
|
if ((scenery.key >> 29 & 0x3L) == 2L && scenery.xMin == x && scenery.zMin == z) {
|
|
return scenery.key;
|
|
}
|
|
}
|
|
return 0L;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!g", name = "a", descriptor = "(III)Lclient!df;")
|
|
public static WallDecor removeWallDecor(@OriginalArg(0) int level, @OriginalArg(1) int x, @OriginalArg(2) int z) {
|
|
@Pc(7) Tile tile = tiles[level][x][z];
|
|
if (tile == null) {
|
|
return null;
|
|
} else {
|
|
@Pc(14) WallDecor wallDecor = tile.wallDecor;
|
|
tile.wallDecor = null;
|
|
return wallDecor;
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!dk", name = "a", descriptor = "(III)Lclient!ec;")
|
|
public static Scenery removeScenery(@OriginalArg(0) int level, @OriginalArg(1) int x, @OriginalArg(2) int z) {
|
|
@Pc(7) Tile tile = tiles[level][x][z];
|
|
if (tile == null) {
|
|
return null;
|
|
}
|
|
for (@Pc(13) int i = 0; i < tile.sceneryLen; i++) {
|
|
@Pc(22) Scenery scenery = tile.scenery[i];
|
|
if ((scenery.key >> 29 & 0x3L) == 2L && scenery.xMin == x && scenery.zMin == z) {
|
|
removeScenery(scenery);
|
|
return scenery;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!vl", name = "a", descriptor = "(III)Lclient!bm;")
|
|
public static GroundDecor removeGroundDecor(@OriginalArg(0) int level, @OriginalArg(1) int x, @OriginalArg(2) int z) {
|
|
@Pc(7) Tile tile = tiles[level][x][z];
|
|
if (tile == null) {
|
|
return null;
|
|
} else {
|
|
@Pc(14) GroundDecor groundDecor = tile.groundDecor;
|
|
tile.groundDecor = null;
|
|
return groundDecor;
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!vk", name = "a", descriptor = "(Lclient!ec;)V")
|
|
public static void removeScenery(@OriginalArg(0) Scenery scenery) {
|
|
for (@Pc(2) int x = scenery.xMin; x <= scenery.xMax; x++) {
|
|
for (@Pc(9) int z = scenery.zMin; z <= scenery.zMax; z++) {
|
|
@Pc(22) Tile tile = tiles[scenery.level][x][z];
|
|
if (tile != null) {
|
|
@Pc(26) int i;
|
|
for (i = 0; i < tile.sceneryLen; i++) {
|
|
if (tile.scenery[i] == scenery) {
|
|
tile.sceneryLen--;
|
|
for (@Pc(44) int j = i; j < tile.sceneryLen; j++) {
|
|
tile.scenery[j] = tile.scenery[j + 1];
|
|
tile.interiorFlags[j] = tile.interiorFlags[j + 1];
|
|
}
|
|
tile.scenery[tile.sceneryLen] = null;
|
|
break;
|
|
}
|
|
}
|
|
tile.allInteriorFlags = 0;
|
|
for (i = 0; i < tile.sceneryLen; i++) {
|
|
tile.allInteriorFlags |= tile.interiorFlags[i];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!di", name = "a", descriptor = "([Lclient!mj;ZI)V")
|
|
public static void method1169(@OriginalArg(0) CollisionMap[] collisionMaps, @OriginalArg(1) boolean underwater) {
|
|
@Pc(10) int level;
|
|
@Pc(15) int x;
|
|
if (!underwater) {
|
|
for (level = 0; level < 4; level++) {
|
|
for (x = 0; x < 104; x++) {
|
|
for (@Pc(22) int z = 0; z < 104; z++) {
|
|
if ((tileFlags[level][x][z] & 0x1) == 1) {
|
|
@Pc(43) int transformedLevel = level;
|
|
if ((tileFlags[1][x][z] & 0x2) == 2) {
|
|
transformedLevel = level - 1;
|
|
}
|
|
if (transformedLevel >= 0) {
|
|
collisionMaps[transformedLevel].flagTile(z, x);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
anInt4272 += (int) (Math.random() * 5.0D) - 2;
|
|
if (anInt4272 < -16) {
|
|
anInt4272 = -16;
|
|
}
|
|
if (anInt4272 > 16) {
|
|
anInt4272 = 16;
|
|
}
|
|
anInt2293 += (int) (Math.random() * 5.0D) - 2;
|
|
if (anInt2293 < -8) {
|
|
anInt2293 = -8;
|
|
}
|
|
if (anInt2293 > 8) {
|
|
anInt2293 = 8;
|
|
}
|
|
}
|
|
@Pc(128) byte levels;
|
|
if (underwater) {
|
|
levels = 1;
|
|
} else {
|
|
levels = 4;
|
|
}
|
|
level = anInt2293 >> 2 << 10;
|
|
@Pc(142) int[][] local142 = new int[104][104];
|
|
@Pc(146) int[][] local146 = new int[104][104];
|
|
x = anInt4272 >> 1;
|
|
@Pc(152) int local152;
|
|
@Pc(168) int local168;
|
|
@Pc(173) int local173;
|
|
@Pc(178) int local178;
|
|
@Pc(194) int overlay;
|
|
@Pc(200) int local200;
|
|
@Pc(202) int local202;
|
|
@Pc(209) int local209;
|
|
@Pc(349) int local349;
|
|
@Pc(234) int local234;
|
|
@Pc(254) int local254;
|
|
@Pc(267) int local267;
|
|
for (local152 = 0; local152 < levels; local152++) {
|
|
@Pc(159) byte[][] local159 = aByteArrayArrayArray9[local152];
|
|
@Pc(273) int local273;
|
|
@Pc(326) int local326;
|
|
@Pc(332) int local332;
|
|
@Pc(322) int local322;
|
|
if (!GlRenderer.enabled) {
|
|
local168 = (int) Math.sqrt(5100.0D);
|
|
local173 = local168 * 768 >> 8;
|
|
for (local178 = 1; local178 < 103; local178++) {
|
|
for (overlay = 1; overlay < 103; overlay++) {
|
|
local209 = tileHeights[local152][overlay][local178 + 1] - tileHeights[local152][overlay][local178 - 1];
|
|
local202 = tileHeights[local152][overlay + 1][local178] - tileHeights[local152][overlay - 1][local178];
|
|
local349 = (int) Math.sqrt(local202 * local202 + local209 * local209 + 65536);
|
|
local267 = (local209 << 8) / local349;
|
|
local254 = -65536 / local349;
|
|
local234 = (local202 << 8) / local349;
|
|
local273 = (local159[overlay][local178] >> 1) + (local159[overlay][local178 - 1] >> 2) + (local159[overlay - -1][local178] >> 3) + (local159[overlay - 1][local178] >> 2) + (local159[overlay][local178 + 1] >> 3);
|
|
local200 = (local267 * -50 + local234 * -50 + local254 * -10) / local173 + 74;
|
|
local146[overlay][local178] = local200 - local273;
|
|
}
|
|
}
|
|
} else if (Preferences.highDetailLighting) {
|
|
for (local168 = 1; local168 < 103; local168++) {
|
|
for (local173 = 1; local173 < 103; local173++) {
|
|
overlay = (local159[local173 + 1][local168] >> 3) + (local159[local173 - 1][local168] >> 2) + (local159[local173][local168 + -1] >> 2) + (local159[local173][local168 + 1] >> 3) + (local159[local173][local168] >> 1);
|
|
local146[local173][local168] = 74 - overlay;
|
|
}
|
|
}
|
|
} else {
|
|
local168 = (int) FogManager.light0Position[0];
|
|
local173 = (int) FogManager.light0Position[1];
|
|
local178 = (int) FogManager.light0Position[2];
|
|
overlay = (int) Math.sqrt(local173 * local173 + local168 * local168 + local178 * local178);
|
|
local200 = overlay * 1024 >> 8;
|
|
for (local202 = 1; local202 < 103; local202++) {
|
|
for (local209 = 1; local209 < 103; local209++) {
|
|
local234 = tileHeights[local152][local209 + 1][local202] - tileHeights[local152][local209 - 1][local202];
|
|
local254 = tileHeights[local152][local209][local202 + 1] - tileHeights[local152][local209][local202 - 1];
|
|
local267 = (int) Math.sqrt(local234 * local234 + local254 * local254 + 65536);
|
|
local273 = (local234 << 8) / local267;
|
|
local322 = (local159[local209][local202 + 1] >> 3) + (local159[local209][local202 - 1] >> 2) + (local159[local209 - 1][local202] >> 2) + (local159[local209 + 1][local202] >> 3) + (local159[local209][local202] >> 1);
|
|
local326 = -65536 / local267;
|
|
local332 = (local254 << 8) / local267;
|
|
local349 = (local178 * local332 + local168 * local273 + local326 * local173) / local200 + 96;
|
|
local146[local209][local202] = local349 - (int) ((float) local322 * 1.7F);
|
|
}
|
|
}
|
|
}
|
|
for (local168 = 0; local168 < 104; local168++) {
|
|
rowWeightedHue[local168] = 0;
|
|
rowSaturation[local168] = 0;
|
|
rowLightness[local168] = 0;
|
|
rowChroma[local168] = 0;
|
|
rowCount[local168] = 0;
|
|
}
|
|
for (local168 = -5; local168 < 104; local168++) {
|
|
for (local173 = 0; local173 < 104; local173++) {
|
|
local178 = local168 + 5;
|
|
@Pc(729) int local729;
|
|
if (local178 < 104) {
|
|
overlay = tileUnderlays[local152][local178][local173] & 0xFF;
|
|
if (overlay > 0) {
|
|
@Pc(693) FluType type = FluTypeList.get(overlay - 1);
|
|
rowWeightedHue[local173] += type.weightedHue;
|
|
rowSaturation[local173] += type.saturation;
|
|
rowLightness[local173] += type.lightness;
|
|
rowChroma[local173] += type.chroma;
|
|
local729 = rowCount[local173]++;
|
|
}
|
|
}
|
|
overlay = local168 - 5;
|
|
if (overlay >= 0) {
|
|
local200 = tileUnderlays[local152][overlay][local173] & 0xFF;
|
|
if (local200 > 0) {
|
|
@Pc(758) FluType local758 = FluTypeList.get(local200 - 1);
|
|
rowWeightedHue[local173] -= local758.weightedHue;
|
|
rowSaturation[local173] -= local758.saturation;
|
|
rowLightness[local173] -= local758.lightness;
|
|
rowChroma[local173] -= local758.chroma;
|
|
local729 = rowCount[local173]--;
|
|
}
|
|
}
|
|
}
|
|
if (local168 >= 0) {
|
|
local173 = 0;
|
|
overlay = 0;
|
|
local178 = 0;
|
|
local200 = 0;
|
|
local202 = 0;
|
|
for (local209 = -5; local209 < 104; local209++) {
|
|
local349 = local209 + 5;
|
|
if (local349 < 104) {
|
|
local178 += rowSaturation[local349];
|
|
local202 += rowCount[local349];
|
|
local173 += rowWeightedHue[local349];
|
|
local200 += rowChroma[local349];
|
|
overlay += rowLightness[local349];
|
|
}
|
|
local234 = local209 - 5;
|
|
if (local234 >= 0) {
|
|
local178 -= rowSaturation[local234];
|
|
local200 -= rowChroma[local234];
|
|
local173 -= rowWeightedHue[local234];
|
|
local202 -= rowCount[local234];
|
|
overlay -= rowLightness[local234];
|
|
}
|
|
if (local209 >= 0 && local202 > 0) {
|
|
local142[local168][local209] = method1309(overlay / local202, local178 / local202, local173 * 256 / local200);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (local168 = 1; local168 < 103; local168++) {
|
|
label771:
|
|
for (local173 = 1; local173 < 103; local173++) {
|
|
if (underwater || allLevelsAreVisible() || (tileFlags[0][local168][local173] & 0x2) != 0 || (tileFlags[local152][local168][local173] & 0x10) == 0 && Static4.method22(local173, local168, local152) == LoginManager.centralPlane) {
|
|
if (firstVisibleLevel > local152) {
|
|
firstVisibleLevel = local152;
|
|
}
|
|
local178 = tileUnderlays[local152][local168][local173] & 0xFF;
|
|
overlay = tileOverlays[local152][local168][local173] & 0xFF;
|
|
if (local178 > 0 || overlay > 0) {
|
|
local202 = tileHeights[local152][local168 + 1][local173];
|
|
local200 = tileHeights[local152][local168][local173];
|
|
local349 = tileHeights[local152][local168][local173 + 1];
|
|
local209 = tileHeights[local152][local168 + 1][local173 + 1];
|
|
if (local152 > 0) {
|
|
@Pc(1067) boolean local1067 = local178 != 0 || tileShapes[local152][local168][local173] == 0;
|
|
if (overlay > 0 && !FloTypeList.method4395(overlay - 1).aBoolean312) {
|
|
local1067 = false;
|
|
}
|
|
if (local1067 && local200 == local202 && local200 == local209 && local349 == local200) {
|
|
anIntArrayArrayArray6[local152][local168][local173] |= 0x4;
|
|
}
|
|
}
|
|
if (local178 <= 0) {
|
|
local234 = -1;
|
|
local254 = 0;
|
|
} else {
|
|
local234 = local142[local168][local173];
|
|
local267 = (local234 & 0x7F) + x;
|
|
if (local267 < 0) {
|
|
local267 = 0;
|
|
} else if (local267 > 127) {
|
|
local267 = 127;
|
|
}
|
|
local273 = (local234 & 0x380) + (local234 + level & 0xFC00) + local267;
|
|
local254 = Rasteriser.palette[ColorUtils.multiplyLightnessSafe(96, local273)];
|
|
}
|
|
local267 = local146[local168][local173];
|
|
local332 = local146[local168][local173 + 1];
|
|
local273 = local146[local168 + 1][local173];
|
|
local326 = local146[local168 + 1][local173 + 1];
|
|
if (overlay == 0) {
|
|
setTile(local152, local168, local173, 0, 0, -1, local200, local202, local209, local349, ColorUtils.multiplyLightnessSafe(local267, local234), ColorUtils.multiplyLightnessSafe(local273, local234), ColorUtils.multiplyLightnessSafe(local326, local234), ColorUtils.multiplyLightnessSafe(local332, local234), 0, 0, 0, 0, local254, 0);
|
|
if (GlRenderer.enabled && local152 > 0 && local234 != -1 && FluTypeList.get(local178 - 1).aBoolean198) {
|
|
ShadowManager.method4197(0, 0, true, false, local168, local173, local200 - tileHeights[0][local168][local173], -tileHeights[0][local168 + 1][local173] + local202, local209 - tileHeights[0][local168 + 1][local173 + 1], local349 - tileHeights[0][local168][local173 + 1]);
|
|
}
|
|
if (GlRenderer.enabled && !underwater && anIntArrayArray11 != null && local152 == 0) {
|
|
for (local322 = local168 - 1; local322 <= local168 + 1; local322++) {
|
|
for (@Pc(1794) int local1794 = local173 - 1; local1794 <= local173 + 1; local1794++) {
|
|
if ((local322 != local168 || local173 != local1794) && local322 >= 0 && local322 < 104 && local1794 >= 0 && local1794 < 104) {
|
|
@Pc(1834) int local1834 = tileOverlays[local152][local322][local1794] & 0xFF;
|
|
if (local1834 != 0) {
|
|
@Pc(1842) FloType local1842 = FloTypeList.method4395(local1834 - 1);
|
|
if (local1842.texture != -1 && Rasteriser.textureProvider.getMaterialType(local1842.texture) == MaterialManager.WATER) {
|
|
anIntArrayArray11[local168][local173] = local1842.anInt5889 + (local1842.anInt5898 << 24);
|
|
continue label771;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
local322 = tileShapes[local152][local168][local173] + 1;
|
|
@Pc(1242) byte local1242 = tileAngles[local152][local168][local173];
|
|
@Pc(1248) FloType local1248 = FloTypeList.method4395(overlay - 1);
|
|
@Pc(1301) int local1301;
|
|
@Pc(1353) int local1353;
|
|
@Pc(1288) int texture;
|
|
if (GlRenderer.enabled && !underwater && anIntArrayArray11 != null && local152 == 0) {
|
|
if (local1248.texture != -1 && Rasteriser.textureProvider.getMaterialType(local1248.texture) == MaterialManager.WATER) {
|
|
anIntArrayArray11[local168][local173] = (local1248.anInt5898 << 24) + local1248.anInt5889;
|
|
} else {
|
|
label737:
|
|
for (texture = local168 - 1; texture <= local168 + 1; texture++) {
|
|
for (local1301 = local173 - 1; local1301 <= local173 + 1; local1301++) {
|
|
if ((local168 != texture || local1301 != local173) && texture >= 0 && texture < 104 && local1301 >= 0 && local1301 < 104) {
|
|
local1353 = tileOverlays[local152][texture][local1301] & 0xFF;
|
|
if (local1353 != 0) {
|
|
@Pc(1366) FloType local1366 = FloTypeList.method4395(local1353 - 1);
|
|
if (local1366.texture != -1 && Rasteriser.textureProvider.getMaterialType(local1366.texture) == MaterialManager.WATER) {
|
|
anIntArrayArray11[local168][local173] = local1366.anInt5889 + (local1366.anInt5898 << 24);
|
|
break label737;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
texture = local1248.texture;
|
|
if (texture >= 0 && !Rasteriser.textureProvider.method3236(texture)) {
|
|
texture = -1;
|
|
}
|
|
@Pc(1458) int local1458;
|
|
@Pc(1429) int local1429;
|
|
if (texture >= 0) {
|
|
local1301 = -1;
|
|
local1353 = Rasteriser.palette[ColorUtils.multiplyLightnessGrayscale(Rasteriser.textureProvider.getAverageColor(texture), 96)];
|
|
} else if (local1248.anInt5899 == -1) {
|
|
local1301 = -2;
|
|
local1353 = 0;
|
|
} else {
|
|
local1301 = local1248.anInt5899;
|
|
local1429 = x + (local1301 & 0x7F);
|
|
if (local1429 < 0) {
|
|
local1429 = 0;
|
|
} else if (local1429 > 127) {
|
|
local1429 = 127;
|
|
}
|
|
local1458 = (local1301 & 0x380) + ((local1301 + level & 0xFC00) + local1429);
|
|
local1353 = Rasteriser.palette[ColorUtils.multiplyLightnessGrayscale(local1458, 96)];
|
|
}
|
|
if (local1248.anInt5894 >= 0) {
|
|
local1429 = local1248.anInt5894;
|
|
local1458 = x + (local1429 & 0x7F);
|
|
if (local1458 < 0) {
|
|
local1458 = 0;
|
|
} else if (local1458 > 127) {
|
|
local1458 = 127;
|
|
}
|
|
@Pc(1529) int local1529 = (local1429 & 0x380) + ((local1429 + level & 0xFC00) + local1458);
|
|
local1353 = Rasteriser.palette[ColorUtils.multiplyLightnessGrayscale(local1529, 96)];
|
|
}
|
|
setTile(local152, local168, local173, local322, local1242, texture, local200, local202, local209, local349, ColorUtils.multiplyLightnessSafe(local267, local234), ColorUtils.multiplyLightnessSafe(local273, local234), ColorUtils.multiplyLightnessSafe(local326, local234), ColorUtils.multiplyLightnessSafe(local332, local234), ColorUtils.multiplyLightnessGrayscale(local1301, local267), ColorUtils.multiplyLightnessGrayscale(local1301, local273), ColorUtils.multiplyLightnessGrayscale(local1301, local326), ColorUtils.multiplyLightnessGrayscale(local1301, local332), local254, local1353);
|
|
if (GlRenderer.enabled && local152 > 0) {
|
|
ShadowManager.method4197(local322, local1242, local1301 == -2 || !local1248.aBoolean311, local234 == -1 || !FluTypeList.get(local178 - 1).aBoolean198, local168, local173, local200 - tileHeights[0][local168][local173], local202 - tileHeights[0][local168 + 1][local173], local209 - tileHeights[0][local168 + 1][local173 + 1], -tileHeights[0][local168][local173 + 1] + local349);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (GlRenderer.enabled) {
|
|
@Pc(1888) float[][] local1888 = new float[105][105];
|
|
@Pc(1892) int[][] local1892 = tileHeights[local152];
|
|
@Pc(1896) float[][] local1896 = new float[105][105];
|
|
@Pc(1900) float[][] local1900 = new float[105][105];
|
|
local200 = 1;
|
|
while (true) {
|
|
if (local200 > 103) {
|
|
@Pc(2025) GlTile[] local2025;
|
|
if (underwater) {
|
|
local2025 = Static193.method3501(tileFlags, tileShapes[local152], tileUnderlays[local152], local146, local1896, anIntArrayArray11, tileOverlays[local152], tileAngles[local152], local1888, local152, local1900, local142, tileHeights[local152], surfaceTileHeights[0]);
|
|
method2280(local152, local2025);
|
|
break;
|
|
}
|
|
local2025 = Static193.method3501(tileFlags, tileShapes[local152], tileUnderlays[local152], local146, local1896, null, tileOverlays[local152], tileAngles[local152], local1888, local152, local1900, local142, tileHeights[local152], null);
|
|
@Pc(2049) GlTile[] local2049 = Static1.method2(local1896, local1888, tileHeights[local152], local152, local1900, tileAngles[local152], local146, tileShapes[local152], tileUnderlays[local152], tileOverlays[local152], tileFlags);
|
|
@Pc(2057) GlTile[] local2057 = new GlTile[local2025.length + local2049.length];
|
|
for (local349 = 0; local349 < local2025.length; local349++) {
|
|
local2057[local349] = local2025[local349];
|
|
}
|
|
for (local349 = 0; local349 < local2049.length; local349++) {
|
|
local2057[local2025.length + local349] = local2049[local349];
|
|
}
|
|
method2280(local152, local2057);
|
|
Static221.method3393(local1900, tileUnderlays[local152], tileAngles[local152], LightingManager.lights, local152, LightingManager.lightCount, local1896, tileShapes[local152], tileOverlays[local152], tileHeights[local152], local1888);
|
|
break;
|
|
}
|
|
for (local202 = 1; local202 <= 103; local202++) {
|
|
local349 = local1892[local202][local200 + 1] - local1892[local202][local200 - 1];
|
|
local209 = local1892[local202 + 1][local200] - local1892[local202 - 1][local200];
|
|
@Pc(1962) float local1962 = (float) Math.sqrt(local209 * local209 + local349 * local349 + 65536);
|
|
local1888[local202][local200] = (float) local209 / local1962;
|
|
local1896[local202][local200] = -256.0F / local1962;
|
|
local1900[local202][local200] = (float) local349 / local1962;
|
|
}
|
|
local200++;
|
|
}
|
|
}
|
|
tileUnderlays[local152] = null;
|
|
tileOverlays[local152] = null;
|
|
tileShapes[local152] = null;
|
|
tileAngles[local152] = null;
|
|
aByteArrayArrayArray9[local152] = null;
|
|
}
|
|
method3801();
|
|
if (underwater) {
|
|
return;
|
|
}
|
|
@Pc(2204) int local2204;
|
|
for (local152 = 0; local152 < 104; local152++) {
|
|
for (local2204 = 0; local2204 < 104; local2204++) {
|
|
if ((tileFlags[1][local152][local2204] & 0x2) == 2) {
|
|
method3884(local152, local2204);
|
|
}
|
|
}
|
|
}
|
|
for (local152 = 0; local152 < 4; local152++) {
|
|
for (local2204 = 0; local2204 <= 104; local2204++) {
|
|
for (local168 = 0; local168 <= 104; local168++) {
|
|
if ((anIntArrayArrayArray6[local152][local168][local2204] & 0x1) != 0) {
|
|
local200 = local152;
|
|
for (local173 = local2204; local173 > 0 && (anIntArrayArrayArray6[local152][local168][local173 - 1] & 0x1) != 0; local173--) {
|
|
}
|
|
overlay = local152;
|
|
for (local178 = local2204; local178 < 104 && (anIntArrayArrayArray6[local152][local168][local178 + 1] & 0x1) != 0; local178++) {
|
|
}
|
|
label454:
|
|
while (overlay > 0) {
|
|
for (local202 = local173; local202 <= local178; local202++) {
|
|
if ((anIntArrayArrayArray6[overlay - 1][local168][local202] & 0x1) == 0) {
|
|
break label454;
|
|
}
|
|
}
|
|
overlay--;
|
|
}
|
|
label443:
|
|
while (local200 < 3) {
|
|
for (local202 = local173; local202 <= local178; local202++) {
|
|
if ((anIntArrayArrayArray6[local200 + 1][local168][local202] & 0x1) == 0) {
|
|
break label443;
|
|
}
|
|
}
|
|
local200++;
|
|
}
|
|
local202 = (local200 + 1 - overlay) * (-local173 + (local178 - -1));
|
|
if (local202 >= 8) {
|
|
local349 = tileHeights[local200][local168][local173] - 240;
|
|
local234 = tileHeights[overlay][local168][local173];
|
|
SceneGraph_Class120.method4647(1, local168 * 128, local168 * 128, local173 * 128, local178 * 128 + 128, local349, local234);
|
|
for (local254 = overlay; local254 <= local200; local254++) {
|
|
for (local267 = local173; local267 <= local178; local267++) {
|
|
anIntArrayArrayArray6[local254][local168][local267] &= 0xFFFFFFFE;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ((anIntArrayArrayArray6[local152][local168][local2204] & 0x2) != 0) {
|
|
for (local173 = local168; local173 > 0 && (anIntArrayArrayArray6[local152][local173 - 1][local2204] & 0x2) != 0; local173--) {
|
|
}
|
|
local200 = local152;
|
|
overlay = local152;
|
|
for (local178 = local168; local178 < 104 && (anIntArrayArrayArray6[local152][local178 + 1][local2204] & 0x2) != 0; local178++) {
|
|
}
|
|
label508:
|
|
while (overlay > 0) {
|
|
for (local202 = local173; local202 <= local178; local202++) {
|
|
if ((anIntArrayArrayArray6[overlay - 1][local202][local2204] & 0x2) == 0) {
|
|
break label508;
|
|
}
|
|
}
|
|
overlay--;
|
|
}
|
|
label497:
|
|
while (local200 < 3) {
|
|
for (local202 = local173; local202 <= local178; local202++) {
|
|
if ((anIntArrayArrayArray6[local200 + 1][local202][local2204] & 0x2) == 0) {
|
|
break label497;
|
|
}
|
|
}
|
|
local200++;
|
|
}
|
|
local202 = (local178 + 1 - local173) * (-overlay + local200 - -1);
|
|
if (local202 >= 8) {
|
|
local349 = tileHeights[local200][local173][local2204] - 240;
|
|
local234 = tileHeights[overlay][local173][local2204];
|
|
SceneGraph_Class120.method4647(2, local173 * 128, local178 * 128 + 128, local2204 * 128, local2204 * 128, local349, local234);
|
|
for (local254 = overlay; local254 <= local200; local254++) {
|
|
for (local267 = local173; local267 <= local178; local267++) {
|
|
anIntArrayArrayArray6[local254][local267][local2204] &= 0xFFFFFFFD;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ((anIntArrayArrayArray6[local152][local168][local2204] & 0x4) != 0) {
|
|
local173 = local168;
|
|
local178 = local168;
|
|
for (overlay = local2204; overlay > 0 && (anIntArrayArrayArray6[local152][local168][overlay - 1] & 0x4) != 0; overlay--) {
|
|
}
|
|
for (local200 = local2204; local200 < 104 && (anIntArrayArrayArray6[local152][local168][local200 + 1] & 0x4) != 0; local200++) {
|
|
}
|
|
label562:
|
|
while (local173 > 0) {
|
|
for (local202 = overlay; local202 <= local200; local202++) {
|
|
if ((anIntArrayArrayArray6[local152][local173 - 1][local202] & 0x4) == 0) {
|
|
break label562;
|
|
}
|
|
}
|
|
local173--;
|
|
}
|
|
label551:
|
|
while (local178 < 104) {
|
|
for (local202 = overlay; local202 <= local200; local202++) {
|
|
if ((anIntArrayArrayArray6[local152][local178 + 1][local202] & 0x4) == 0) {
|
|
break label551;
|
|
}
|
|
}
|
|
local178++;
|
|
}
|
|
if ((local178 + 1 - local173) * (local200 - (overlay - 1)) >= 4) {
|
|
local202 = tileHeights[local152][local173][overlay];
|
|
SceneGraph_Class120.method4647(4, local173 * 128, local178 * 128 + 128, overlay * 128, local200 * 128 + 128, local202, local202);
|
|
for (local209 = local173; local209 <= local178; local209++) {
|
|
for (local349 = overlay; local349 <= local200; local349++) {
|
|
anIntArrayArrayArray6[local152][local209][local349] &= 0xFFFFFFFB;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!ih", name = "a", descriptor = "(I[Lclient!hg;)V")
|
|
public static void method2280(@OriginalArg(0) int arg0, @OriginalArg(1) GlTile[] arg1) {
|
|
underwaterHdTiles[arg0] = arg1;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!ob", name = "a", descriptor = "(IIIIIIIIIIIIIIIIIIII)V")
|
|
public static void setTile(@OriginalArg(0) int level, @OriginalArg(1) int x, @OriginalArg(2) int z, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5, @OriginalArg(6) int arg6, @OriginalArg(7) int arg7, @OriginalArg(8) int arg8, @OriginalArg(9) int arg9, @OriginalArg(10) int arg10, @OriginalArg(11) int arg11, @OriginalArg(12) int arg12, @OriginalArg(13) int arg13, @OriginalArg(14) int arg14, @OriginalArg(15) int arg15, @OriginalArg(16) int arg16, @OriginalArg(17) int arg17, @OriginalArg(18) int arg18, @OriginalArg(19) int arg19) {
|
|
@Pc(12) PlainTile tile;
|
|
@Pc(14) int level0;
|
|
if (arg3 == 0) {
|
|
tile = new PlainTile(arg10, arg11, arg12, arg13, -1, arg18, false);
|
|
for (level0 = level; level0 >= 0; level0--) {
|
|
if (tiles[level0][x][z] == null) {
|
|
tiles[level0][x][z] = new Tile(level0, x, z);
|
|
}
|
|
}
|
|
tiles[level][x][z].plainTile = tile;
|
|
} else if (arg3 == 1) {
|
|
tile = new PlainTile(arg14, arg15, arg16, arg17, arg5, arg19, arg6 == arg7 && arg6 == arg8 && arg6 == arg9);
|
|
for (level0 = level; level0 >= 0; level0--) {
|
|
if (tiles[level0][x][z] == null) {
|
|
tiles[level0][x][z] = new Tile(level0, x, z);
|
|
}
|
|
}
|
|
tiles[level][x][z].plainTile = tile;
|
|
} else {
|
|
@Pc(134) ShapedTile local134 = new ShapedTile(arg3, arg4, arg5, x, z, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19);
|
|
for (level0 = level; level0 >= 0; level0--) {
|
|
if (tiles[level0][x][z] == null) {
|
|
tiles[level0][x][z] = new Tile(level0, x, z);
|
|
}
|
|
}
|
|
tiles[level][x][z].shapedTile = local134;
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!rm", name = "a", descriptor = "(III)V")
|
|
public static void method3801() {
|
|
for (@Pc(1) int level = 0; level < levels; level++) {
|
|
for (@Pc(6) int x = 0; x < width; x++) {
|
|
for (@Pc(11) int z = 0; z < length; z++) {
|
|
@Pc(22) Tile local22 = tiles[level][x][z];
|
|
if (local22 != null) {
|
|
@Pc(27) Wall local27 = local22.wall;
|
|
if (local27 != null && local27.primary.method4543()) {
|
|
method1544(local27.primary, level, x, z, 1, 1);
|
|
if (local27.secondary != null && local27.secondary.method4543()) {
|
|
method1544(local27.secondary, level, x, z, 1, 1);
|
|
local27.primary.method4544(local27.secondary, 0, 0, 0, false);
|
|
local27.secondary = local27.secondary.createModel();
|
|
}
|
|
local27.primary = local27.primary.createModel();
|
|
}
|
|
for (@Pc(83) int local83 = 0; local83 < local22.sceneryLen; local83++) {
|
|
@Pc(92) Scenery local92 = local22.scenery[local83];
|
|
if (local92 != null && local92.entity.method4543()) {
|
|
method1544(local92.entity, level, x, z, local92.xMax + 1 - local92.xMin, local92.zMax - local92.zMin + 1);
|
|
local92.entity = local92.entity.createModel();
|
|
}
|
|
}
|
|
@Pc(131) GroundDecor local131 = local22.groundDecor;
|
|
if (local131 != null && local131.entity.method4543()) {
|
|
method3574(local131.entity, level, x, z);
|
|
local131.entity = local131.entity.createModel();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!ib", name = "a", descriptor = "(IIIIIIIILclient!th;IZJ)Z")
|
|
public static boolean method2256(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5, @OriginalArg(6) int arg6, @OriginalArg(7) int arg7, @OriginalArg(8) Entity arg8, @OriginalArg(9) int arg9, @OriginalArg(10) boolean arg10, @OriginalArg(11) long arg11) {
|
|
@Pc(6) boolean local6 = tileHeights == underwaterTileHeights;
|
|
@Pc(8) int local8 = 0;
|
|
@Pc(17) int local17;
|
|
for (@Pc(10) int local10 = arg1; local10 < arg1 + arg3; local10++) {
|
|
for (local17 = arg2; local17 < arg2 + arg4; local17++) {
|
|
if (local10 < 0 || local17 < 0 || local10 >= width || local17 >= length) {
|
|
return false;
|
|
}
|
|
@Pc(42) Tile local42 = tiles[arg0][local10][local17];
|
|
if (local42 != null && local42.sceneryLen >= 5) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
@Pc(58) Scenery local58 = new Scenery();
|
|
local58.key = arg11;
|
|
local58.level = arg0;
|
|
local58.anInt1699 = arg5;
|
|
local58.anInt1703 = arg6;
|
|
local58.anInt1706 = arg7;
|
|
local58.entity = arg8;
|
|
local58.anInt1714 = arg9;
|
|
local58.xMin = arg1;
|
|
local58.zMin = arg2;
|
|
local58.xMax = arg1 + arg3 - 1;
|
|
local58.zMax = arg2 + arg4 - 1;
|
|
@Pc(108) int local108;
|
|
for (local17 = arg1; local17 < arg1 + arg3; local17++) {
|
|
for (local108 = arg2; local108 < arg2 + arg4; local108++) {
|
|
@Pc(115) int local115 = 0;
|
|
if (local17 > arg1) {
|
|
local115++;
|
|
}
|
|
if (local17 < arg1 + arg3 - 1) {
|
|
local115 += 4;
|
|
}
|
|
if (local108 > arg2) {
|
|
local115 += 8;
|
|
}
|
|
if (local108 < arg2 + arg4 - 1) {
|
|
local115 += 2;
|
|
}
|
|
for (@Pc(141) int local141 = arg0; local141 >= 0; local141--) {
|
|
if (tiles[local141][local17][local108] == null) {
|
|
tiles[local141][local17][local108] = new Tile(local141, local17, local108);
|
|
}
|
|
}
|
|
@Pc(174) Tile local174 = tiles[arg0][local17][local108];
|
|
local174.scenery[local174.sceneryLen] = local58;
|
|
local174.interiorFlags[local174.sceneryLen] = local115;
|
|
local174.allInteriorFlags |= local115;
|
|
local174.sceneryLen++;
|
|
if (local6 && anIntArrayArray11[local17][local108] != 0) {
|
|
local8 = anIntArrayArray11[local17][local108];
|
|
}
|
|
}
|
|
}
|
|
if (local6 && local8 != 0) {
|
|
for (local17 = arg1; local17 < arg1 + arg3; local17++) {
|
|
for (local108 = arg2; local108 < arg2 + arg4; local108++) {
|
|
if (anIntArrayArray11[local17][local108] == 0) {
|
|
anIntArrayArray11[local17][local108] = local8;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (arg10) {
|
|
scenery[sceneryLen++] = local58;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!dg", name = "a", descriptor = "(IIIIILclient!th;IJZ)Z")
|
|
public static boolean method1141(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) Entity arg5, @OriginalArg(6) int arg6, @OriginalArg(7) long arg7, @OriginalArg(8) boolean arg8) {
|
|
if (arg5 == null) {
|
|
return true;
|
|
}
|
|
@Pc(7) int local7 = arg1 - arg4;
|
|
@Pc(11) int local11 = arg2 - arg4;
|
|
@Pc(15) int local15 = arg1 + arg4;
|
|
@Pc(19) int local19 = arg2 + arg4;
|
|
if (arg8) {
|
|
if (arg6 > 640 && arg6 < 1408) {
|
|
local19 += 128;
|
|
}
|
|
if (arg6 > 1152 && arg6 < 1920) {
|
|
local15 += 128;
|
|
}
|
|
if (arg6 > 1664 || arg6 < 384) {
|
|
local11 -= 128;
|
|
}
|
|
if (arg6 > 128 && arg6 < 896) {
|
|
local7 -= 128;
|
|
}
|
|
}
|
|
local7 /= 128;
|
|
local11 /= 128;
|
|
local15 /= 128;
|
|
local19 /= 128;
|
|
return method2256(arg0, local7, local11, local15 + 1 - local7, local19 - local11 + 1, arg1, arg2, arg3, arg5, arg6, true, arg7);
|
|
}
|
|
|
|
@OriginalMember(owner = "client!dg", name = "a", descriptor = "(IIIIIILclient!mj;)V")
|
|
public static void method1144(@OriginalArg(1) int z, @OriginalArg(2) int x, @OriginalArg(3) int level, @OriginalArg(4) int arg3, @OriginalArg(5) int arg4, @OriginalArg(6) CollisionMap collision) {
|
|
@Pc(9) long key = 0L;
|
|
if (arg3 == 0) {
|
|
key = getWallKey(level, x, z);
|
|
} else if (arg3 == 1) {
|
|
key = getWallDecorKey(level, x, z);
|
|
} else if (arg3 == 2) {
|
|
key = getSceneryKey(level, x, z);
|
|
} else if (arg3 == 3) {
|
|
key = getGroundDecorKey(level, x, z);
|
|
}
|
|
@Pc(57) int shape = (int) key >> 14 & 0x1F;
|
|
@Pc(70) int id = (int) (key >>> 32) & Integer.MAX_VALUE;
|
|
@Pc(74) LocType type = LocTypeList.get(id);
|
|
if (type.hasAreaSound()) {
|
|
AreaSoundManager.remove(x, type, z, level);
|
|
}
|
|
@Pc(92) int angle = (int) key >> 20 & 0x3;
|
|
if (key == 0L) {
|
|
return;
|
|
}
|
|
@Pc(100) Entity local100 = null;
|
|
@Pc(102) Entity local102 = null;
|
|
if (arg3 == 0) {
|
|
@Pc(110) Wall wall = removeWall(level, x, z);
|
|
if (wall != null) {
|
|
local100 = wall.primary;
|
|
local102 = wall.secondary;
|
|
}
|
|
if (type.anInt4435 != 0) {
|
|
collision.unflagWall(angle, type.aBoolean207, z, shape, x);
|
|
}
|
|
} else if (arg3 == 1) {
|
|
@Pc(233) WallDecor wallDecor = removeWallDecor(level, x, z);
|
|
if (wallDecor != null) {
|
|
local100 = wallDecor.primary;
|
|
local102 = wallDecor.secondary;
|
|
}
|
|
} else if (arg3 == 2) {
|
|
@Pc(148) Scenery scenery = removeScenery(level, x, z);
|
|
if (scenery != null) {
|
|
local100 = scenery.entity;
|
|
}
|
|
if (type.anInt4435 != 0 && type.width + x < 104 && type.width + z < 104 && x + type.length < 104 && z + type.length < 104) {
|
|
collision.unflagScenery(x, type.width, type.aBoolean207, angle, type.length, z);
|
|
}
|
|
} else if (arg3 == 3) {
|
|
@Pc(211) GroundDecor groundDecor = removeGroundDecor(level, x, z);
|
|
if (groundDecor != null) {
|
|
local100 = groundDecor.entity;
|
|
}
|
|
if (type.anInt4435 == 1) {
|
|
collision.unflagGroundDecor(z, x);
|
|
}
|
|
}
|
|
if (!GlRenderer.enabled || !type.aBoolean212) {
|
|
return;
|
|
}
|
|
if (shape == 2) {
|
|
if (local100 instanceof Loc) {
|
|
((Loc) local100).method1046();
|
|
} else {
|
|
Loc.method181(type, 0, angle + 4, 0, shape, x, z, arg4);
|
|
}
|
|
if (local102 instanceof Loc) {
|
|
((Loc) local102).method1046();
|
|
} else {
|
|
Loc.method181(type, 0, angle + 1 & 0x3, 0, shape, x, z, arg4);
|
|
}
|
|
} else if (shape == 5) {
|
|
if (local100 instanceof Loc) {
|
|
((Loc) local100).method1046();
|
|
} else {
|
|
Loc.method181(type, anIntArray469[angle] * 8, angle, Static34.anIntArray80[angle] * 8, 4, x, z, arg4);
|
|
}
|
|
} else if (shape == 6) {
|
|
if (local100 instanceof Loc) {
|
|
((Loc) local100).method1046();
|
|
} else {
|
|
Loc.method181(type, anIntArray154[angle] * 8, angle + 4, Static114.anIntArray565[angle] * 8, 4, x, z, arg4);
|
|
}
|
|
} else if (shape == 7) {
|
|
if (local100 instanceof Loc) {
|
|
((Loc) local100).method1046();
|
|
} else {
|
|
Loc.method181(type, 0, (angle + 2 & 0x3) + 4, 0, 4, x, z, arg4);
|
|
}
|
|
} else if (shape == 8) {
|
|
if (local100 instanceof Loc) {
|
|
((Loc) local100).method1046();
|
|
} else {
|
|
Loc.method181(type, anIntArray154[angle] * 8, angle + 4, Static114.anIntArray565[angle] * 8, 4, x, z, arg4);
|
|
}
|
|
if (local102 instanceof Loc) {
|
|
((Loc) local102).method1046();
|
|
} else {
|
|
Loc.method181(type, anIntArray154[angle] * 8, (angle + 2 & 0x3) + 4, Static114.anIntArray565[angle] * 8, 4, x, z, arg4);
|
|
}
|
|
} else if (shape == 11) {
|
|
if (local100 instanceof Loc) {
|
|
((Loc) local100).method1046();
|
|
} else {
|
|
Loc.method181(type, 0, angle + 4, 0, 10, x, z, arg4);
|
|
}
|
|
} else if (local100 instanceof Loc) {
|
|
((Loc) local100).method1046();
|
|
} else {
|
|
Loc.method181(type, 0, angle, 0, shape, x, z, arg4);
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!ed", name = "a", descriptor = "(IIII)I")
|
|
public static int method1309(@OriginalArg(0) int arg0, @OriginalArg(2) int arg1, @OriginalArg(3) int arg2) {
|
|
if (arg0 > 243) {
|
|
arg1 >>= 0x4;
|
|
} else if (arg0 > 217) {
|
|
arg1 >>= 0x3;
|
|
} else if (arg0 > 192) {
|
|
arg1 >>= 0x2;
|
|
} else if (arg0 > 179) {
|
|
arg1 >>= 0x1;
|
|
}
|
|
return (arg0 >> 1) + (arg1 >> 5 << 7) + (arg2 >> 2 << 10);
|
|
}
|
|
|
|
@OriginalMember(owner = "client!sd", name = "c", descriptor = "(II)V")
|
|
public static void method3884(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1) {
|
|
@Pc(7) Tile local7 = tiles[0][arg0][arg1];
|
|
for (@Pc(9) int local9 = 0; local9 < 3; local9++) {
|
|
@Pc(30) Tile local30 = tiles[local9][arg0][arg1] = tiles[local9 + 1][arg0][arg1];
|
|
if (local30 != null) {
|
|
local30.anInt672--;
|
|
for (@Pc(40) int local40 = 0; local40 < local30.sceneryLen; local40++) {
|
|
@Pc(49) Scenery local49 = local30.scenery[local40];
|
|
if ((local49.key >> 29 & 0x3L) == 2L && local49.xMin == arg0 && local49.zMin == arg1) {
|
|
local49.level--;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (tiles[0][arg0][arg1] == null) {
|
|
tiles[0][arg0][arg1] = new Tile(0, arg0, arg1);
|
|
}
|
|
tiles[0][arg0][arg1].aClass3_Sub5_1 = local7;
|
|
tiles[3][arg0][arg1] = null;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!fm", name = "a", descriptor = "(IIIIII)Z")
|
|
public static boolean method1599(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5) {
|
|
@Pc(16) int local16;
|
|
@Pc(20) int local20;
|
|
if (arg1 != arg2 || arg3 != arg4) {
|
|
for (local16 = arg1; local16 <= arg2; local16++) {
|
|
for (local20 = arg3; local20 <= arg4; local20++) {
|
|
if (anIntArrayArrayArray12[arg0][local16][local20] == -Static156.anInt437) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
local16 = (arg1 << 7) + 1;
|
|
local20 = (arg3 << 7) + 2;
|
|
@Pc(156) int local156 = tileHeights[arg0][arg1][arg3] + arg5;
|
|
if (!method4394(local16, local156, local20)) {
|
|
return false;
|
|
}
|
|
@Pc(169) int local169 = (arg2 << 7) - 1;
|
|
if (!method4394(local169, local156, local20)) {
|
|
return false;
|
|
}
|
|
@Pc(182) int local182 = (arg4 << 7) - 1;
|
|
if (!method4394(local16, local156, local182)) {
|
|
return false;
|
|
} else return method4394(local169, local156, local182);
|
|
} else if (Static9.method187(arg0, arg1, arg3)) {
|
|
local16 = arg1 << 7;
|
|
local20 = arg3 << 7;
|
|
return method4394(local16 + 1, tileHeights[arg0][arg1][arg3] + arg5, local20 + 1) && method4394(local16 + 128 - 1, tileHeights[arg0][arg1 + 1][arg3] + arg5, local20 + 1) && method4394(local16 + 128 - 1, tileHeights[arg0][arg1 + 1][arg3 + 1] + arg5, local20 + 128 - 1) && method4394(local16 + 1, tileHeights[arg0][arg1][arg3 + 1] + arg5, local20 + 128 - 1);
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!hc", name = "a", descriptor = "(IIIILclient!th;Lclient!th;IIIIJ)V")
|
|
public static void setWallDecor(@OriginalArg(0) int level, @OriginalArg(1) int x, @OriginalArg(2) int z, @OriginalArg(3) int arg3, @OriginalArg(4) Entity primary, @OriginalArg(5) Entity secondary, @OriginalArg(6) int arg6, @OriginalArg(7) int arg7, @OriginalArg(8) int xOffset, @OriginalArg(9) int zOffset, @OriginalArg(10) long key) {
|
|
if (primary == null) {
|
|
return;
|
|
}
|
|
@Pc(6) WallDecor wallDecor = new WallDecor();
|
|
wallDecor.key = key;
|
|
wallDecor.xFine = x * 128 + 64;
|
|
wallDecor.zFine = z * 128 + 64;
|
|
wallDecor.anInt1391 = arg3;
|
|
wallDecor.primary = primary;
|
|
wallDecor.secondary = secondary;
|
|
wallDecor.anInt1395 = arg6;
|
|
wallDecor.anInt1388 = arg7;
|
|
wallDecor.xOffset = xOffset;
|
|
wallDecor.zOffset = zOffset;
|
|
for (@Pc(46) int level0 = level; level0 >= 0; level0--) {
|
|
if (tiles[level0][x][z] == null) {
|
|
tiles[level0][x][z] = new Tile(level0, x, z);
|
|
}
|
|
}
|
|
tiles[level][x][z].wallDecor = wallDecor;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!pb", name = "b", descriptor = "(III)Lclient!jj;")
|
|
public static ObjStackEntity method3420(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2) {
|
|
@Pc(7) Tile local7 = tiles[arg0][arg1][arg2];
|
|
if (local7 == null) {
|
|
return null;
|
|
} else {
|
|
@Pc(14) ObjStackEntity local14 = local7.aClass79_1;
|
|
local7.aClass79_1 = null;
|
|
return local14;
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!ub", name = "a", descriptor = "(Lclient!bj;Z)V")
|
|
public static void method4245(@OriginalArg(0) Tile arg0, @OriginalArg(1) boolean arg1) {
|
|
Static7.aClass69_32.addTail(arg0);
|
|
while (true) {
|
|
@Pc(8) Tile local8;
|
|
@Pc(18) int local18;
|
|
@Pc(21) int local21;
|
|
@Pc(24) int local24;
|
|
@Pc(27) int local27;
|
|
@Pc(31) Tile[][] local31;
|
|
@Pc(65) int local65;
|
|
@Pc(115) int local115;
|
|
@Pc(894) int local894;
|
|
@Pc(899) int local899;
|
|
@Pc(904) int local904;
|
|
@Pc(153) Tile local153;
|
|
@Pc(1332) int local1332;
|
|
do {
|
|
do {
|
|
do {
|
|
do {
|
|
do {
|
|
do {
|
|
while (true) {
|
|
@Pc(44) int var9;
|
|
@Pc(48) int var10;
|
|
@Pc(907) int var17;
|
|
@Pc(916) int var18;
|
|
@Pc(363) Wall var22;
|
|
@Pc(469) boolean var24;
|
|
@Pc(425) Scenery var25;
|
|
@Pc(1179) Tile var32;
|
|
while (true) {
|
|
do {
|
|
local8 = (Tile) Static7.aClass69_32.removeHead();
|
|
if (local8 == null) {
|
|
return;
|
|
}
|
|
} while (!local8.aBoolean46);
|
|
local18 = local8.anInt669;
|
|
local21 = local8.anInt666;
|
|
local24 = local8.anInt672;
|
|
local27 = local8.anInt668;
|
|
local31 = tiles[local24];
|
|
@Pc(33) float local33 = 0.0F;
|
|
if (GlRenderer.enabled) {
|
|
if (underwaterTileHeights == tileHeights) {
|
|
var9 = anIntArrayArray11[local18][local21];
|
|
var10 = var9 & 0xFFFFFF;
|
|
if (var10 != Static152.anInt3604) {
|
|
Static152.anInt3604 = var10;
|
|
WaterMaterialRenderer.method619(var10);
|
|
FogManager.setFogColor(WaterMaterialRenderer.method2422());
|
|
}
|
|
local65 = var9 >>> 24 << 3;
|
|
if (local65 != Static247.anInt730) {
|
|
Static247.anInt730 = local65;
|
|
Static147.method2761(local65);
|
|
}
|
|
local115 = surfaceTileHeights[0][local18][local21] + surfaceTileHeights[0][local18 + 1][local21] + surfaceTileHeights[0][local18][local21 + 1] + surfaceTileHeights[0][local18 + 1][local21 + 1] >> 2;
|
|
MaterialManager.setMaterial(-local115, 3);
|
|
local33 = 201.5F;
|
|
GlRenderer.method4159(local33);
|
|
} else {
|
|
local33 = 201.5F - (float) (local27 + 1) * 50.0F;
|
|
GlRenderer.method4159(local33);
|
|
}
|
|
}
|
|
if (!local8.aBoolean45) {
|
|
break;
|
|
}
|
|
if (arg1) {
|
|
if (local24 > 0) {
|
|
local153 = tiles[local24 - 1][local18][local21];
|
|
if (local153 != null && local153.aBoolean46) {
|
|
continue;
|
|
}
|
|
}
|
|
if (local18 <= Static123.anInt4069 && local18 > LightingManager.anInt987) {
|
|
local153 = local31[local18 - 1][local21];
|
|
if (local153 != null && local153.aBoolean46 && (local153.aBoolean45 || (local8.allInteriorFlags & 0x1) == 0)) {
|
|
continue;
|
|
}
|
|
}
|
|
if (local18 >= Static123.anInt4069 && local18 < LightingManager.anInt15 - 1) {
|
|
local153 = local31[local18 + 1][local21];
|
|
if (local153 != null && local153.aBoolean46 && (local153.aBoolean45 || (local8.allInteriorFlags & 0x4) == 0)) {
|
|
continue;
|
|
}
|
|
}
|
|
if (local21 <= Static193.anInt4539 && local21 > LightingManager.anInt4698) {
|
|
local153 = local31[local18][local21 - 1];
|
|
if (local153 != null && local153.aBoolean46 && (local153.aBoolean45 || (local8.allInteriorFlags & 0x8) == 0)) {
|
|
continue;
|
|
}
|
|
}
|
|
if (local21 >= Static193.anInt4539 && local21 < LightingManager.anInt4866 - 1) {
|
|
local153 = local31[local18][local21 + 1];
|
|
if (local153 != null && local153.aBoolean46 && (local153.aBoolean45 || (local8.allInteriorFlags & 0x2) == 0)) {
|
|
continue;
|
|
}
|
|
}
|
|
} else {
|
|
arg1 = true;
|
|
}
|
|
local8.aBoolean45 = false;
|
|
if (local8.aClass3_Sub5_1 != null) {
|
|
local153 = local8.aClass3_Sub5_1;
|
|
if (GlRenderer.enabled) {
|
|
GlRenderer.method4159(201.5F - (float) (local153.anInt668 + 1) * 50.0F);
|
|
}
|
|
if (local153.plainTile == null) {
|
|
if (local153.shapedTile != null) {
|
|
Static147.method2762(local153.shapedTile, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local18, local21, Static9.method187(0, local18, local21));
|
|
}
|
|
} else
|
|
Static247.method2610(local153.plainTile, 0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local18, local21, Static9.method187(0, local18, local21));
|
|
var22 = local153.wall;
|
|
if (var22 != null) {
|
|
if (GlRenderer.enabled) {
|
|
if ((var22.anInt3049 & local8.anInt670) == 0) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
} else {
|
|
LightingManager.method2388(var22.anInt3049, Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local27, local18, local21);
|
|
}
|
|
}
|
|
var22.primary.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, var22.xFine - Static123.anInt3555, var22.anInt3051 - Static123.anInt3947, var22.zFine - Static217.anInt4903, var22.key, local24, null);
|
|
}
|
|
for (local65 = 0; local65 < local153.sceneryLen; local65++) {
|
|
var25 = local153.scenery[local65];
|
|
if (var25 != null) {
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
}
|
|
var25.entity.render(var25.anInt1714, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, var25.anInt1699 - Static123.anInt3555, var25.anInt1706 - Static123.anInt3947, var25.anInt1703 - Static217.anInt4903, var25.key, local24, null);
|
|
}
|
|
}
|
|
if (GlRenderer.enabled) {
|
|
GlRenderer.method4159(local33);
|
|
}
|
|
}
|
|
var24 = false;
|
|
if (local8.plainTile == null) {
|
|
if (local8.shapedTile != null) {
|
|
if (Static9.method187(local27, local18, local21)) {
|
|
Static147.method2762(local8.shapedTile, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local18, local21, true);
|
|
} else {
|
|
var24 = true;
|
|
Static147.method2762(local8.shapedTile, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local18, local21, false);
|
|
}
|
|
}
|
|
} else if (Static9.method187(local27, local18, local21)) {
|
|
Static247.method2610(local8.plainTile, local27, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local18, local21, true);
|
|
} else {
|
|
var24 = true;
|
|
if (local8.plainTile.anInt4865 != 12345678 || MiniMenu.aBoolean187 && local24 <= MiniMenu.anInt3902) {
|
|
Static247.method2610(local8.plainTile, local27, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local18, local21, false);
|
|
}
|
|
}
|
|
if (var24) {
|
|
@Pc(549) GroundDecor local549 = local8.groundDecor;
|
|
if (local549 != null && (local549.key & 0x80000000L) != 0L) {
|
|
if (GlRenderer.enabled && local549.aBoolean49) {
|
|
GlRenderer.method4159(local33 + 50.0F - 1.5F);
|
|
}
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
}
|
|
local549.entity.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local549.xFine - Static123.anInt3555, local549.anInt733 - Static123.anInt3947, local549.zFine - Static217.anInt4903, local549.key, local24, null);
|
|
if (GlRenderer.enabled && local549.aBoolean49) {
|
|
GlRenderer.method4159(local33);
|
|
}
|
|
}
|
|
}
|
|
var10 = 0;
|
|
local65 = 0;
|
|
@Pc(616) Wall local616 = local8.wall;
|
|
@Pc(619) WallDecor local619 = local8.wallDecor;
|
|
if (local616 != null || local619 != null) {
|
|
if (Static123.anInt4069 == local18) {
|
|
var10++;
|
|
} else if (Static123.anInt4069 < local18) {
|
|
var10 += 2;
|
|
}
|
|
if (Static193.anInt4539 == local21) {
|
|
var10 += 3;
|
|
} else if (Static193.anInt4539 > local21) {
|
|
var10 += 6;
|
|
}
|
|
local65 = Static247.anIntArray324[var10];
|
|
local8.anInt670 = Static191.anIntArray386[var10];
|
|
}
|
|
if (local616 != null) {
|
|
if ((local616.anInt3049 & Static247.anIntArray215[var10]) == 0) {
|
|
local8.anInt663 = 0;
|
|
} else if (local616.anInt3049 == 16) {
|
|
local8.anInt663 = 3;
|
|
local8.anInt665 = Static247.anIntArray294[var10];
|
|
local8.anInt667 = 3 - local8.anInt665;
|
|
} else if (local616.anInt3049 == 32) {
|
|
local8.anInt663 = 6;
|
|
local8.anInt665 = Static247.anIntArray489[var10];
|
|
local8.anInt667 = 6 - local8.anInt665;
|
|
} else if (local616.anInt3049 == 64) {
|
|
local8.anInt663 = 12;
|
|
local8.anInt665 = Static247.anIntArray211[var10];
|
|
local8.anInt667 = 12 - local8.anInt665;
|
|
} else {
|
|
local8.anInt663 = 9;
|
|
local8.anInt665 = Static247.anIntArray307[var10];
|
|
local8.anInt667 = 9 - local8.anInt665;
|
|
}
|
|
if ((local616.anInt3049 & local65) != 0 && !method3850(local27, local18, local21, local616.anInt3049)) {
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
}
|
|
local616.primary.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local616.xFine - Static123.anInt3555, local616.anInt3051 - Static123.anInt3947, local616.zFine - Static217.anInt4903, local616.key, local24, null);
|
|
}
|
|
if ((local616.anInt3052 & local65) != 0 && !method3850(local27, local18, local21, local616.anInt3052)) {
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
}
|
|
local616.secondary.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local616.xFine - Static123.anInt3555, local616.anInt3051 - Static123.anInt3947, local616.zFine - Static217.anInt4903, local616.key, local24, null);
|
|
}
|
|
}
|
|
if (local619 != null && !method4611(local27, local18, local21, local619.primary.getMinY())) {
|
|
if (GlRenderer.enabled) {
|
|
GlRenderer.method4159(local33 - 0.5F);
|
|
}
|
|
if ((local619.anInt1395 & local65) != 0) {
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
}
|
|
local619.primary.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local619.xFine + local619.xOffset - Static123.anInt3555, local619.anInt1391 - Static123.anInt3947, local619.zFine + local619.zOffset - Static217.anInt4903, local619.key, local24, null);
|
|
} else if (local619.anInt1395 == 256) {
|
|
local894 = local619.xFine - Static123.anInt3555;
|
|
local899 = local619.anInt1391 - Static123.anInt3947;
|
|
local904 = local619.zFine - Static217.anInt4903;
|
|
var17 = local619.anInt1388;
|
|
if (var17 == 1 || var17 == 2) {
|
|
var18 = -local894;
|
|
} else {
|
|
var18 = local894;
|
|
}
|
|
@Pc(928) int local928;
|
|
if (var17 == 2 || var17 == 3) {
|
|
local928 = -local904;
|
|
} else {
|
|
local928 = local904;
|
|
}
|
|
if (local928 < var18) {
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
}
|
|
local619.primary.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local894 + local619.xOffset, local899, local904 + local619.zOffset, local619.key, local24, null);
|
|
} else if (local619.secondary != null) {
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
}
|
|
local619.secondary.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local894, local899, local904, local619.key, local24, null);
|
|
}
|
|
}
|
|
if (GlRenderer.enabled) {
|
|
GlRenderer.method4159(local33);
|
|
}
|
|
}
|
|
if (var24) {
|
|
@Pc(1001) GroundDecor local1001 = local8.groundDecor;
|
|
if (local1001 != null && (local1001.key & 0x80000000L) == 0L) {
|
|
if (GlRenderer.enabled && local1001.aBoolean49) {
|
|
GlRenderer.method4159(local33 + 50.0F - 1.5F);
|
|
}
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
}
|
|
local1001.entity.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local1001.xFine - Static123.anInt3555, local1001.anInt733 - Static123.anInt3947, local1001.zFine - Static217.anInt4903, local1001.key, local24, null);
|
|
if (GlRenderer.enabled && local1001.aBoolean49) {
|
|
GlRenderer.method4159(local33);
|
|
}
|
|
}
|
|
@Pc(1064) ObjStackEntity local1064 = local8.aClass79_1;
|
|
if (local1064 != null && local1064.anInt3063 == 0) {
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
}
|
|
if (local1064.aClass8_7 != null) {
|
|
local1064.aClass8_7.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local1064.anInt3064 - Static123.anInt3555, local1064.anInt3057 - Static123.anInt3947, local1064.anInt3061 - Static217.anInt4903, local1064.aLong108, local24, null);
|
|
}
|
|
if (local1064.aClass8_8 != null) {
|
|
local1064.aClass8_8.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local1064.anInt3064 - Static123.anInt3555, local1064.anInt3057 - Static123.anInt3947, local1064.anInt3061 - Static217.anInt4903, local1064.aLong108, local24, null);
|
|
}
|
|
if (local1064.aClass8_9 != null) {
|
|
local1064.aClass8_9.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local1064.anInt3064 - Static123.anInt3555, local1064.anInt3057 - Static123.anInt3947, local1064.anInt3061 - Static217.anInt4903, local1064.aLong108, local24, null);
|
|
}
|
|
}
|
|
}
|
|
local894 = local8.allInteriorFlags;
|
|
if (local894 != 0) {
|
|
if (local18 < Static123.anInt4069 && (local894 & 0x4) != 0) {
|
|
var32 = local31[local18 + 1][local21];
|
|
if (var32 != null && var32.aBoolean46) {
|
|
Static7.aClass69_32.addTail(var32);
|
|
}
|
|
}
|
|
if (local21 < Static193.anInt4539 && (local894 & 0x2) != 0) {
|
|
var32 = local31[local18][local21 + 1];
|
|
if (var32 != null && var32.aBoolean46) {
|
|
Static7.aClass69_32.addTail(var32);
|
|
}
|
|
}
|
|
if (local18 > Static123.anInt4069 && (local894 & 0x1) != 0) {
|
|
var32 = local31[local18 - 1][local21];
|
|
if (var32 != null && var32.aBoolean46) {
|
|
Static7.aClass69_32.addTail(var32);
|
|
}
|
|
}
|
|
if (local21 > Static193.anInt4539 && (local894 & 0x8) != 0) {
|
|
var32 = local31[local18][local21 - 1];
|
|
if (var32 != null && var32.aBoolean46) {
|
|
Static7.aClass69_32.addTail(var32);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
if (local8.anInt663 != 0) {
|
|
var24 = true;
|
|
for (var10 = 0; var10 < local8.sceneryLen; var10++) {
|
|
if (local8.scenery[var10].anInt1707 != Static156.anInt437 && (local8.interiorFlags[var10] & local8.anInt663) == local8.anInt665) {
|
|
var24 = false;
|
|
break;
|
|
}
|
|
}
|
|
if (var24) {
|
|
var22 = local8.wall;
|
|
if (!method3850(local27, local18, local21, var22.anInt3049)) {
|
|
if (GlRenderer.enabled) {
|
|
label882:
|
|
{
|
|
if ((var22.key & 0xFC000L) == 16384L) {
|
|
local65 = var22.xFine - Static123.anInt3555;
|
|
local115 = var22.zFine - Static217.anInt4903;
|
|
local1332 = (int) (var22.key >> 20 & 0x3L);
|
|
if (local1332 == 0) {
|
|
local65 -= 64;
|
|
local115 += 64;
|
|
if (local115 < local65 && local18 > 0 && local21 < length - 1) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18 - 1, local21 + 1);
|
|
break label882;
|
|
}
|
|
} else if (local1332 == 1) {
|
|
local65 += 64;
|
|
local115 += 64;
|
|
if (local115 < -local65 && local18 < width - 1 && local21 < length - 1) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18 + 1, local21 + 1);
|
|
break label882;
|
|
}
|
|
} else if (local1332 == 2) {
|
|
local65 += 64;
|
|
local115 -= 64;
|
|
if (local115 > local65 && local18 < width - 1 && local21 > 0) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18 + 1, local21 - 1);
|
|
break label882;
|
|
}
|
|
} else if (local1332 == 3) {
|
|
local65 -= 64;
|
|
local115 -= 64;
|
|
if (local115 > -local65 && local18 > 0 && local21 > 0) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18 - 1, local21 - 1);
|
|
break label882;
|
|
}
|
|
}
|
|
}
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
}
|
|
}
|
|
var22.primary.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, var22.xFine - Static123.anInt3555, var22.anInt3051 - Static123.anInt3947, var22.zFine - Static217.anInt4903, var22.key, local24, null);
|
|
}
|
|
local8.anInt663 = 0;
|
|
}
|
|
}
|
|
if (!local8.aBoolean47) {
|
|
break;
|
|
}
|
|
try {
|
|
var9 = local8.sceneryLen;
|
|
local8.aBoolean47 = false;
|
|
var10 = 0;
|
|
label767:
|
|
for (local65 = 0; local65 < var9; local65++) {
|
|
var25 = local8.scenery[local65];
|
|
if (var25.anInt1707 != Static156.anInt437) {
|
|
for (local1332 = var25.xMin; local1332 <= var25.xMax; local1332++) {
|
|
for (local894 = var25.zMin; local894 <= var25.zMax; local894++) {
|
|
var32 = local31[local1332][local894];
|
|
if (var32.aBoolean45) {
|
|
local8.aBoolean47 = true;
|
|
continue label767;
|
|
}
|
|
if (var32.anInt663 != 0) {
|
|
local904 = 0;
|
|
if (local1332 > var25.xMin) {
|
|
local904++;
|
|
}
|
|
if (local1332 < var25.xMax) {
|
|
local904 += 4;
|
|
}
|
|
if (local894 > var25.zMin) {
|
|
local904 += 8;
|
|
}
|
|
if (local894 < var25.zMax) {
|
|
local904 += 2;
|
|
}
|
|
if ((local904 & var32.anInt663) == local8.anInt667) {
|
|
local8.aBoolean47 = true;
|
|
continue label767;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
aClass31Array2[var10++] = var25;
|
|
local1332 = Static123.anInt4069 - var25.xMin;
|
|
local894 = var25.xMax - Static123.anInt4069;
|
|
if (local894 > local1332) {
|
|
local1332 = local894;
|
|
}
|
|
local899 = Static193.anInt4539 - var25.zMin;
|
|
local904 = var25.zMax - Static193.anInt4539;
|
|
if (local904 > local899) {
|
|
var25.anInt1705 = local1332 + local904;
|
|
} else {
|
|
var25.anInt1705 = local1332 + local899;
|
|
}
|
|
}
|
|
}
|
|
while (var10 > 0) {
|
|
local65 = -50;
|
|
local115 = -1;
|
|
for (local1332 = 0; local1332 < var10; local1332++) {
|
|
@Pc(1628) Scenery local1628 = aClass31Array2[local1332];
|
|
if (local1628.anInt1707 != Static156.anInt437) {
|
|
if (local1628.anInt1705 > local65) {
|
|
local65 = local1628.anInt1705;
|
|
local115 = local1332;
|
|
} else if (local1628.anInt1705 == local65) {
|
|
local899 = local1628.anInt1699 - Static123.anInt3555;
|
|
local904 = local1628.anInt1703 - Static217.anInt4903;
|
|
var17 = aClass31Array2[local115].anInt1699 - Static123.anInt3555;
|
|
var18 = aClass31Array2[local115].anInt1703 - Static217.anInt4903;
|
|
if (local899 * local899 + local904 * local904 > var17 * var17 + var18 * var18) {
|
|
local115 = local1332;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (local115 == -1) {
|
|
break;
|
|
}
|
|
@Pc(1697) Scenery local1697 = aClass31Array2[local115];
|
|
local1697.anInt1707 = Static156.anInt437;
|
|
if (!method1599(local27, local1697.xMin, local1697.xMax, local1697.zMin, local1697.zMax, local1697.entity.getMinY())) {
|
|
if (GlRenderer.enabled) {
|
|
if ((local1697.key & 0xFC000L) == 147456L) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
local894 = local1697.anInt1699 - Static123.anInt3555;
|
|
local899 = local1697.anInt1703 - Static217.anInt4903;
|
|
local904 = (int) (local1697.key >> 20 & 0x3L);
|
|
if (local904 == 1 || local904 == 3) {
|
|
if (local899 > -local894) {
|
|
LightingManager.method2397(local24, local18, local21 - 1, local18 - 1, local21);
|
|
} else {
|
|
LightingManager.method2397(local24, local18, local21 + 1, local18 + 1, local21);
|
|
}
|
|
} else if (local899 > local894) {
|
|
LightingManager.method2397(local24, local18, local21 - 1, local18 + 1, local21);
|
|
} else {
|
|
LightingManager.method2397(local24, local18, local21 + 1, local18 - 1, local21);
|
|
}
|
|
} else {
|
|
LightingManager.method2391(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local1697.xMin, local1697.zMin, local1697.xMax, local1697.zMax);
|
|
}
|
|
}
|
|
local1697.entity.render(local1697.anInt1714, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local1697.anInt1699 - Static123.anInt3555, local1697.anInt1706 - Static123.anInt3947, local1697.anInt1703 - Static217.anInt4903, local1697.key, local24, null);
|
|
}
|
|
for (local894 = local1697.xMin; local894 <= local1697.xMax; local894++) {
|
|
for (local899 = local1697.zMin; local899 <= local1697.zMax; local899++) {
|
|
@Pc(1863) Tile local1863 = local31[local894][local899];
|
|
if (local1863.anInt663 != 0) {
|
|
Static7.aClass69_32.addTail(local1863);
|
|
} else if ((local894 != local18 || local899 != local21) && local1863.aBoolean46) {
|
|
Static7.aClass69_32.addTail(local1863);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!local8.aBoolean47) {
|
|
break;
|
|
}
|
|
} catch (@Pc(1895) Exception local1895) {
|
|
local8.aBoolean47 = false;
|
|
break;
|
|
}
|
|
}
|
|
} while (!local8.aBoolean46);
|
|
} while (local8.anInt663 != 0);
|
|
if (local18 > Static123.anInt4069 || local18 <= LightingManager.anInt987) {
|
|
break;
|
|
}
|
|
local153 = local31[local18 - 1][local21];
|
|
} while (local153 != null && local153.aBoolean46);
|
|
if (local18 < Static123.anInt4069 || local18 >= LightingManager.anInt15 - 1) {
|
|
break;
|
|
}
|
|
local153 = local31[local18 + 1][local21];
|
|
} while (local153 != null && local153.aBoolean46);
|
|
if (local21 > Static193.anInt4539 || local21 <= LightingManager.anInt4698) {
|
|
break;
|
|
}
|
|
local153 = local31[local18][local21 - 1];
|
|
} while (local153 != null && local153.aBoolean46);
|
|
if (local21 < Static193.anInt4539 || local21 >= LightingManager.anInt4866 - 1) {
|
|
break;
|
|
}
|
|
local153 = local31[local18][local21 + 1];
|
|
} while (local153 != null && local153.aBoolean46);
|
|
local8.aBoolean46 = false;
|
|
Static156.anInt1142--;
|
|
@Pc(1999) ObjStackEntity local1999 = local8.aClass79_1;
|
|
if (local1999 != null && local1999.anInt3063 != 0) {
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
}
|
|
if (local1999.aClass8_7 != null) {
|
|
local1999.aClass8_7.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local1999.anInt3064 - Static123.anInt3555, local1999.anInt3057 - Static123.anInt3947 - local1999.anInt3063, local1999.anInt3061 - Static217.anInt4903, local1999.aLong108, local24, null);
|
|
}
|
|
if (local1999.aClass8_8 != null) {
|
|
local1999.aClass8_8.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local1999.anInt3064 - Static123.anInt3555, local1999.anInt3057 - Static123.anInt3947 - local1999.anInt3063, local1999.anInt3061 - Static217.anInt4903, local1999.aLong108, local24, null);
|
|
}
|
|
if (local1999.aClass8_9 != null) {
|
|
local1999.aClass8_9.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local1999.anInt3064 - Static123.anInt3555, local1999.anInt3057 - Static123.anInt3947 - local1999.anInt3063, local1999.anInt3061 - Static217.anInt4903, local1999.aLong108, local24, null);
|
|
}
|
|
}
|
|
if (local8.anInt670 != 0) {
|
|
@Pc(2109) WallDecor local2109 = local8.wallDecor;
|
|
if (local2109 != null && !method4611(local27, local18, local21, local2109.primary.getMinY())) {
|
|
if ((local2109.anInt1395 & local8.anInt670) != 0) {
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
}
|
|
local2109.primary.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local2109.xFine + local2109.xOffset - Static123.anInt3555, local2109.anInt1391 - Static123.anInt3947, local2109.zFine + local2109.zOffset - Static217.anInt4903, local2109.key, local24, null);
|
|
} else if (local2109.anInt1395 == 256) {
|
|
local65 = local2109.xFine - Static123.anInt3555;
|
|
local115 = local2109.anInt1391 - Static123.anInt3947;
|
|
local1332 = local2109.zFine - Static217.anInt4903;
|
|
local894 = local2109.anInt1388;
|
|
if (local894 == 1 || local894 == 2) {
|
|
local899 = -local65;
|
|
} else {
|
|
local899 = local65;
|
|
}
|
|
if (local894 == 2 || local894 == 3) {
|
|
local904 = -local1332;
|
|
} else {
|
|
local904 = local1332;
|
|
}
|
|
if (local904 >= local899) {
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
}
|
|
local2109.primary.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local65 + local2109.xOffset, local115, local1332 + local2109.zOffset, local2109.key, local24, null);
|
|
} else if (local2109.secondary != null) {
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2393(Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local24, local18, local21);
|
|
}
|
|
local2109.secondary.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local65, local115, local1332, local2109.key, local24, null);
|
|
}
|
|
}
|
|
}
|
|
@Pc(2275) Wall local2275 = local8.wall;
|
|
if (local2275 != null) {
|
|
if ((local2275.anInt3052 & local8.anInt670) != 0 && !method3850(local27, local18, local21, local2275.anInt3052)) {
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2388(local2275.anInt3052, Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local27, local18, local21);
|
|
}
|
|
local2275.secondary.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local2275.xFine - Static123.anInt3555, local2275.anInt3051 - Static123.anInt3947, local2275.zFine - Static217.anInt4903, local2275.key, local24, null);
|
|
}
|
|
if ((local2275.anInt3049 & local8.anInt670) != 0 && !method3850(local27, local18, local21, local2275.anInt3049)) {
|
|
if (GlRenderer.enabled) {
|
|
LightingManager.method2388(local2275.anInt3049, Static123.anInt3555, Static123.anInt3947, Static217.anInt4903, local27, local18, local21);
|
|
}
|
|
local2275.primary.render(0, Static160.anInt2886, Static121.anInt3038, Static231.anInt5205, Static81.anInt2222, local2275.xFine - Static123.anInt3555, local2275.anInt3051 - Static123.anInt3947, local2275.zFine - Static217.anInt4903, local2275.key, local24, null);
|
|
}
|
|
}
|
|
}
|
|
@Pc(2388) Tile local2388;
|
|
if (local24 < levels - 1) {
|
|
local2388 = tiles[local24 + 1][local18][local21];
|
|
if (local2388 != null && local2388.aBoolean46) {
|
|
Static7.aClass69_32.addTail(local2388);
|
|
}
|
|
}
|
|
if (local18 < Static123.anInt4069) {
|
|
local2388 = local31[local18 + 1][local21];
|
|
if (local2388 != null && local2388.aBoolean46) {
|
|
Static7.aClass69_32.addTail(local2388);
|
|
}
|
|
}
|
|
if (local21 < Static193.anInt4539) {
|
|
local2388 = local31[local18][local21 + 1];
|
|
if (local2388 != null && local2388.aBoolean46) {
|
|
Static7.aClass69_32.addTail(local2388);
|
|
}
|
|
}
|
|
if (local18 > Static123.anInt4069) {
|
|
local2388 = local31[local18 - 1][local21];
|
|
if (local2388 != null && local2388.aBoolean46) {
|
|
Static7.aClass69_32.addTail(local2388);
|
|
}
|
|
}
|
|
if (local21 > Static193.anInt4539) {
|
|
local2388 = local31[local18][local21 - 1];
|
|
if (local2388 != null && local2388.aBoolean46) {
|
|
Static7.aClass69_32.addTail(local2388);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!wh", name = "a", descriptor = "(IIII)Z")
|
|
public static boolean method4611(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3) {
|
|
if (Static9.method187(arg0, arg1, arg2)) {
|
|
@Pc(10) int local10 = arg1 << 7;
|
|
@Pc(14) int local14 = arg2 << 7;
|
|
return method4394(local10 + 1, tileHeights[arg0][arg1][arg2] + arg3, local14 + 1) && method4394(local10 + 128 - 1, tileHeights[arg0][arg1 + 1][arg2] + arg3, local14 + 1) && method4394(local10 + 128 - 1, tileHeights[arg0][arg1 + 1][arg2 + 1] + arg3, local14 + 128 - 1) && method4394(local10 + 1, tileHeights[arg0][arg1][arg2 + 1] + arg3, local14 + 128 - 1);
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!vd", name = "b", descriptor = "(IIII)Z")
|
|
public static boolean method3850(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3) {
|
|
if (!Static9.method187(arg0, arg1, arg2)) {
|
|
return false;
|
|
}
|
|
@Pc(10) int local10 = arg1 << 7;
|
|
@Pc(14) int local14 = arg2 << 7;
|
|
@Pc(24) int local24 = tileHeights[arg0][arg1][arg2] - 1;
|
|
@Pc(28) int local28 = local24 - 120;
|
|
@Pc(32) int local32 = local24 - 230;
|
|
@Pc(36) int local36 = local24 - 238;
|
|
if (arg3 < 16) {
|
|
if (arg3 == 1) {
|
|
if (local10 > Static123.anInt3555) {
|
|
if (!method4394(local10, local24, local14)) {
|
|
return false;
|
|
}
|
|
if (!method4394(local10, local24, local14 + 128)) {
|
|
return false;
|
|
}
|
|
}
|
|
if (arg0 > 0) {
|
|
if (!method4394(local10, local28, local14)) {
|
|
return false;
|
|
}
|
|
if (!method4394(local10, local28, local14 + 128)) {
|
|
return false;
|
|
}
|
|
}
|
|
if (!method4394(local10, local32, local14)) {
|
|
return false;
|
|
}
|
|
return method4394(local10, local32, local14 + 128);
|
|
}
|
|
if (arg3 == 2) {
|
|
if (local14 < Static217.anInt4903) {
|
|
if (!method4394(local10, local24, local14 + 128)) {
|
|
return false;
|
|
}
|
|
if (!method4394(local10 + 128, local24, local14 + 128)) {
|
|
return false;
|
|
}
|
|
}
|
|
if (arg0 > 0) {
|
|
if (!method4394(local10, local28, local14 + 128)) {
|
|
return false;
|
|
}
|
|
if (!method4394(local10 + 128, local28, local14 + 128)) {
|
|
return false;
|
|
}
|
|
}
|
|
if (!method4394(local10, local32, local14 + 128)) {
|
|
return false;
|
|
}
|
|
return method4394(local10 + 128, local32, local14 + 128);
|
|
}
|
|
if (arg3 == 4) {
|
|
if (local10 < Static123.anInt3555) {
|
|
if (!method4394(local10 + 128, local24, local14)) {
|
|
return false;
|
|
}
|
|
if (!method4394(local10 + 128, local24, local14 + 128)) {
|
|
return false;
|
|
}
|
|
}
|
|
if (arg0 > 0) {
|
|
if (!method4394(local10 + 128, local28, local14)) {
|
|
return false;
|
|
}
|
|
if (!method4394(local10 + 128, local28, local14 + 128)) {
|
|
return false;
|
|
}
|
|
}
|
|
if (!method4394(local10 + 128, local32, local14)) {
|
|
return false;
|
|
}
|
|
return method4394(local10 + 128, local32, local14 + 128);
|
|
}
|
|
if (arg3 == 8) {
|
|
if (local14 > Static217.anInt4903) {
|
|
if (!method4394(local10, local24, local14)) {
|
|
return false;
|
|
}
|
|
if (!method4394(local10 + 128, local24, local14)) {
|
|
return false;
|
|
}
|
|
}
|
|
if (arg0 > 0) {
|
|
if (!method4394(local10, local28, local14)) {
|
|
return false;
|
|
}
|
|
if (!method4394(local10 + 128, local28, local14)) {
|
|
return false;
|
|
}
|
|
}
|
|
if (!method4394(local10, local32, local14)) {
|
|
return false;
|
|
}
|
|
return method4394(local10 + 128, local32, local14);
|
|
}
|
|
}
|
|
if (!method4394(local10 + 64, local36, local14 + 64)) {
|
|
return false;
|
|
} else if (arg3 == 16) {
|
|
return method4394(local10, local32, local14 + 128);
|
|
} else if (arg3 == 32) {
|
|
return method4394(local10 + 128, local32, local14 + 128);
|
|
} else if (arg3 == 64) {
|
|
return method4394(local10 + 128, local32, local14);
|
|
} else if (arg3 == 128) {
|
|
return method4394(local10, local32, local14);
|
|
} else {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!p", name = "a", descriptor = "(IZIZLclient!mj;IIIBII)V")
|
|
public static void method3397(@OriginalArg(0) int arg0, @OriginalArg(1) boolean arg1, @OriginalArg(2) int arg2, @OriginalArg(3) boolean arg3, @OriginalArg(4) CollisionMap arg4, @OriginalArg(5) int arg5, @OriginalArg(6) int arg6, @OriginalArg(7) int arg7, @OriginalArg(9) int arg8, @OriginalArg(10) int arg9) {
|
|
if (arg1 && !allLevelsAreVisible() && (tileFlags[0][arg7][arg8] & 0x2) == 0) {
|
|
if ((tileFlags[arg2][arg7][arg8] & 0x10) != 0) {
|
|
return;
|
|
}
|
|
if (Static4.method22(arg8, arg7, arg2) != LoginManager.centralPlane) {
|
|
return;
|
|
}
|
|
}
|
|
if (arg2 < firstVisibleLevel) {
|
|
firstVisibleLevel = arg2;
|
|
}
|
|
@Pc(62) LocType local62 = LocTypeList.get(arg5);
|
|
if (GlRenderer.enabled && local62.aBoolean216) {
|
|
return;
|
|
}
|
|
@Pc(84) int local84;
|
|
@Pc(81) int local81;
|
|
if (arg9 == 1 || arg9 == 3) {
|
|
local81 = local62.width;
|
|
local84 = local62.length;
|
|
} else {
|
|
local84 = local62.width;
|
|
local81 = local62.length;
|
|
}
|
|
@Pc(103) int local103;
|
|
@Pc(112) int local112;
|
|
if (arg7 + local84 <= 104) {
|
|
local103 = arg7 + (local84 >> 1);
|
|
local112 = arg7 + (local84 + 1 >> 1);
|
|
} else {
|
|
local112 = arg7 + 1;
|
|
local103 = arg7;
|
|
}
|
|
@Pc(129) int local129;
|
|
@Pc(133) int local133;
|
|
if (local81 + arg8 > 104) {
|
|
local129 = arg8;
|
|
local133 = arg8 + 1;
|
|
} else {
|
|
local129 = (local81 >> 1) + arg8;
|
|
local133 = arg8 + (local81 + 1 >> 1);
|
|
}
|
|
@Pc(153) int[][] local153 = tileHeights[arg0];
|
|
@Pc(165) int local165 = (local84 << 6) + (arg7 << 7);
|
|
@Pc(173) int local173 = (local81 << 6) + (arg8 << 7);
|
|
@Pc(199) int local199 = local153[local103][local133] + local153[local112][local129] + local153[local103][local129] + local153[local112][local133] >> 2;
|
|
@Pc(201) int local201 = 0;
|
|
@Pc(213) int[][] local213;
|
|
if (GlRenderer.enabled && arg0 != 0) {
|
|
local213 = tileHeights[0];
|
|
local201 = local199 - (local213[local112][local133] + local213[local112][local129] + local213[local103][local129] + local213[local103][local133] >> 2);
|
|
}
|
|
local213 = null;
|
|
@Pc(261) long local261 = arg7 | 0x40000000 | arg8 << 7 | arg6 << 14 | arg9 << 20;
|
|
if (arg3) {
|
|
local213 = surfaceTileHeights[0];
|
|
} else if (arg0 < 3) {
|
|
local213 = tileHeights[arg0 + 1];
|
|
}
|
|
if (local62.anInt4429 == 0 || arg3) {
|
|
local261 |= Long.MIN_VALUE;
|
|
}
|
|
if (local62.anInt4438 == 1) {
|
|
local261 |= 0x400000L;
|
|
}
|
|
if (local62.aBoolean213) {
|
|
local261 |= 0x80000000L;
|
|
}
|
|
if (local62.hasAreaSound()) {
|
|
AreaSoundManager.add(arg8, local62, arg9, null, arg7, arg2, null);
|
|
}
|
|
@Pc(330) boolean local330 = local62.aBoolean212 & !arg3;
|
|
local261 |= (long) arg5 << 32;
|
|
@Pc(387) Entity local387;
|
|
@Pc(403) Loc_Class139 local403;
|
|
if (arg6 == 22) {
|
|
if (Preferences.showGroundDecorations || local62.anInt4429 != 0 || local62.anInt4435 == 1 || local62.aBoolean206) {
|
|
if (local62.anInt4430 == -1 && local62.multiLocs == null && !local62.aBoolean214) {
|
|
local403 = local62.method3428(arg9, local165, local153, 22, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local403.aClass36_Sub1_3, local165, local201, local173);
|
|
}
|
|
local387 = local403.aClass8_10;
|
|
} else {
|
|
local387 = new Loc(arg5, 22, arg9, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
}
|
|
setGroundDecor(arg2, arg7, arg8, local199, local387, local261, local62.aBoolean211);
|
|
if (local62.anInt4435 == 1 && arg4 != null) {
|
|
arg4.flagGroundDecor(arg7, arg8);
|
|
}
|
|
}
|
|
} else if (arg6 == 10 || arg6 == 11) {
|
|
if (local62.anInt4430 == -1 && local62.multiLocs == null && !local62.aBoolean214) {
|
|
local403 = local62.method3428(arg6 == 11 ? arg9 + 4 : arg9, local165, local153, 10, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local403.aClass36_Sub1_3, local165, local201, local173);
|
|
}
|
|
local387 = local403.aClass8_10;
|
|
} else {
|
|
local387 = new Loc(arg5, 10, arg6 == 11 ? arg9 + 4 : arg9, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
}
|
|
if (local387 != null) {
|
|
@Pc(531) boolean local531 = Static5.method35(arg2, arg7, arg8, local199, local84, local81, local387, local261);
|
|
if (local62.aBoolean215 && local531 && arg1) {
|
|
@Pc(541) int local541 = 15;
|
|
if (local387 instanceof Model) {
|
|
local541 = ((Model) local387).method4566() / 4;
|
|
if (local541 > 30) {
|
|
local541 = 30;
|
|
}
|
|
}
|
|
for (@Pc(560) int local560 = 0; local560 <= local84; local560++) {
|
|
for (@Pc(565) int local565 = 0; local565 <= local81; local565++) {
|
|
if (aByteArrayArrayArray9[arg2][arg7 + local560][local565 + arg8] < local541) {
|
|
aByteArrayArrayArray9[arg2][arg7 + local560][arg8 + local565] = (byte) local541;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (local62.anInt4435 != 0 && arg4 != null) {
|
|
arg4.flagScenery(arg7, local62.aBoolean207, arg8, local84, local81);
|
|
}
|
|
} else if (arg6 >= 12) {
|
|
if (local62.anInt4430 == -1 && local62.multiLocs == null && !local62.aBoolean214) {
|
|
local403 = local62.method3428(arg9, local165, local153, arg6, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local403.aClass36_Sub1_3, local165, local201, local173);
|
|
}
|
|
local387 = local403.aClass8_10;
|
|
} else {
|
|
local387 = new Loc(arg5, arg6, arg9, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
}
|
|
Static5.method35(arg2, arg7, arg8, local199, 1, 1, local387, local261);
|
|
if (arg1 && arg6 >= 12 && arg6 <= 17 && arg6 != 13 && arg2 > 0) {
|
|
anIntArrayArrayArray6[arg2][arg7][arg8] |= 0x4;
|
|
}
|
|
if (local62.anInt4435 != 0 && arg4 != null) {
|
|
arg4.flagScenery(arg7, local62.aBoolean207, arg8, local84, local81);
|
|
}
|
|
} else if (arg6 == 0) {
|
|
if (local62.anInt4430 == -1 && local62.multiLocs == null && !local62.aBoolean214) {
|
|
local403 = local62.method3428(arg9, local165, local153, 0, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local403.aClass36_Sub1_3, local165, local201, local173);
|
|
}
|
|
local387 = local403.aClass8_10;
|
|
} else {
|
|
local387 = new Loc(arg5, 0, arg9, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
}
|
|
setWall(arg2, arg7, arg8, local199, local387, null, Static267.anIntArray517[arg9], 0, local261);
|
|
if (arg1) {
|
|
if (arg9 == 0) {
|
|
if (local62.aBoolean215) {
|
|
aByteArrayArrayArray9[arg2][arg7][arg8] = 50;
|
|
aByteArrayArrayArray9[arg2][arg7][arg8 + 1] = 50;
|
|
}
|
|
if (local62.aBoolean220) {
|
|
anIntArrayArrayArray6[arg2][arg7][arg8] |= 0x1;
|
|
}
|
|
} else if (arg9 == 1) {
|
|
if (local62.aBoolean215) {
|
|
aByteArrayArrayArray9[arg2][arg7][arg8 + 1] = 50;
|
|
aByteArrayArrayArray9[arg2][arg7 + 1][arg8 + 1] = 50;
|
|
}
|
|
if (local62.aBoolean220) {
|
|
anIntArrayArrayArray6[arg2][arg7][arg8 + 1] |= 0x2;
|
|
}
|
|
} else if (arg9 == 2) {
|
|
if (local62.aBoolean215) {
|
|
aByteArrayArrayArray9[arg2][arg7 + 1][arg8] = 50;
|
|
aByteArrayArrayArray9[arg2][arg7 + 1][arg8 + 1] = 50;
|
|
}
|
|
if (local62.aBoolean220) {
|
|
anIntArrayArrayArray6[arg2][arg7 + 1][arg8] |= 0x1;
|
|
}
|
|
} else if (arg9 == 3) {
|
|
if (local62.aBoolean215) {
|
|
aByteArrayArrayArray9[arg2][arg7][arg8] = 50;
|
|
aByteArrayArrayArray9[arg2][arg7 + 1][arg8] = 50;
|
|
}
|
|
if (local62.aBoolean220) {
|
|
anIntArrayArrayArray6[arg2][arg7][arg8] |= 0x2;
|
|
}
|
|
}
|
|
}
|
|
if (local62.anInt4435 != 0 && arg4 != null) {
|
|
arg4.flagWall(arg9, arg6, local62.aBoolean207, arg8, arg7);
|
|
}
|
|
if (local62.wallDecorOffsetScale != 16) {
|
|
method559(arg2, arg7, arg8, local62.wallDecorOffsetScale);
|
|
}
|
|
} else if (arg6 == 1) {
|
|
if (local62.anInt4430 == -1 && local62.multiLocs == null && !local62.aBoolean214) {
|
|
local403 = local62.method3428(arg9, local165, local153, 1, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local403.aClass36_Sub1_3, local165, local201, local173);
|
|
}
|
|
local387 = local403.aClass8_10;
|
|
} else {
|
|
local387 = new Loc(arg5, 1, arg9, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
}
|
|
setWall(arg2, arg7, arg8, local199, local387, null, LoginManager.anIntArray204[arg9], 0, local261);
|
|
if (local62.aBoolean215 && arg1) {
|
|
if (arg9 == 0) {
|
|
aByteArrayArrayArray9[arg2][arg7][arg8 + 1] = 50;
|
|
} else if (arg9 == 1) {
|
|
aByteArrayArrayArray9[arg2][arg7 + 1][arg8 + 1] = 50;
|
|
} else if (arg9 == 2) {
|
|
aByteArrayArrayArray9[arg2][arg7 + 1][arg8] = 50;
|
|
} else if (arg9 == 3) {
|
|
aByteArrayArrayArray9[arg2][arg7][arg8] = 50;
|
|
}
|
|
}
|
|
if (local62.anInt4435 != 0 && arg4 != null) {
|
|
arg4.flagWall(arg9, arg6, local62.aBoolean207, arg8, arg7);
|
|
}
|
|
} else {
|
|
@Pc(1226) int local1226;
|
|
if (arg6 == 2) {
|
|
local1226 = arg9 + 1 & 0x3;
|
|
@Pc(1269) Entity local1269;
|
|
@Pc(1254) Entity local1254;
|
|
if (local62.anInt4430 == -1 && local62.multiLocs == null && !local62.aBoolean214) {
|
|
@Pc(1287) Loc_Class139 local1287 = local62.method3428(arg9 + 4, local165, local153, 2, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local1287.aClass36_Sub1_3, local165, local201, local173);
|
|
}
|
|
local1254 = local1287.aClass8_10;
|
|
local1287 = local62.method3428(local1226, local165, local153, 2, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local1287.aClass36_Sub1_3, local165, local201, local173);
|
|
}
|
|
local1269 = local1287.aClass8_10;
|
|
} else {
|
|
local1254 = new Loc(arg5, 2, arg9 + 4, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
local1269 = new Loc(arg5, 2, local1226, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
}
|
|
setWall(arg2, arg7, arg8, local199, local1254, local1269, Static267.anIntArray517[arg9], Static267.anIntArray517[local1226], local261);
|
|
if (local62.aBoolean220 && arg1) {
|
|
if (arg9 == 0) {
|
|
anIntArrayArrayArray6[arg2][arg7][arg8] |= 0x1;
|
|
anIntArrayArrayArray6[arg2][arg7][arg8 + 1] |= 0x2;
|
|
} else if (arg9 == 1) {
|
|
anIntArrayArrayArray6[arg2][arg7][arg8 + 1] |= 0x2;
|
|
anIntArrayArrayArray6[arg2][arg7 + 1][arg8] |= 0x1;
|
|
} else if (arg9 == 2) {
|
|
anIntArrayArrayArray6[arg2][arg7 + 1][arg8] |= 0x1;
|
|
anIntArrayArrayArray6[arg2][arg7][arg8] |= 0x2;
|
|
} else if (arg9 == 3) {
|
|
anIntArrayArrayArray6[arg2][arg7][arg8] |= 0x2;
|
|
anIntArrayArrayArray6[arg2][arg7][arg8] |= 0x1;
|
|
}
|
|
}
|
|
if (local62.anInt4435 != 0 && arg4 != null) {
|
|
arg4.flagWall(arg9, arg6, local62.aBoolean207, arg8, arg7);
|
|
}
|
|
if (local62.wallDecorOffsetScale != 16) {
|
|
method559(arg2, arg7, arg8, local62.wallDecorOffsetScale);
|
|
}
|
|
} else if (arg6 == 3) {
|
|
if (local62.anInt4430 == -1 && local62.multiLocs == null && !local62.aBoolean214) {
|
|
local403 = local62.method3428(arg9, local165, local153, 3, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local403.aClass36_Sub1_3, local165, local201, local173);
|
|
}
|
|
local387 = local403.aClass8_10;
|
|
} else {
|
|
local387 = new Loc(arg5, 3, arg9, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
}
|
|
setWall(arg2, arg7, arg8, local199, local387, null, LoginManager.anIntArray204[arg9], 0, local261);
|
|
if (local62.aBoolean215 && arg1) {
|
|
if (arg9 == 0) {
|
|
aByteArrayArrayArray9[arg2][arg7][arg8 + 1] = 50;
|
|
} else if (arg9 == 1) {
|
|
aByteArrayArrayArray9[arg2][arg7 + 1][arg8 + 1] = 50;
|
|
} else if (arg9 == 2) {
|
|
aByteArrayArrayArray9[arg2][arg7 + 1][arg8] = 50;
|
|
} else if (arg9 == 3) {
|
|
aByteArrayArrayArray9[arg2][arg7][arg8] = 50;
|
|
}
|
|
}
|
|
if (local62.anInt4435 != 0 && arg4 != null) {
|
|
arg4.flagWall(arg9, arg6, local62.aBoolean207, arg8, arg7);
|
|
}
|
|
} else if (arg6 == 9) {
|
|
if (local62.anInt4430 == -1 && local62.multiLocs == null && !local62.aBoolean214) {
|
|
local403 = local62.method3428(arg9, local165, local153, arg6, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local403.aClass36_Sub1_3, local165, local201, local173);
|
|
}
|
|
local387 = local403.aClass8_10;
|
|
} else {
|
|
local387 = new Loc(arg5, arg6, arg9, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
}
|
|
Static5.method35(arg2, arg7, arg8, local199, 1, 1, local387, local261);
|
|
if (local62.anInt4435 != 0 && arg4 != null) {
|
|
arg4.flagScenery(arg7, local62.aBoolean207, arg8, local84, local81);
|
|
}
|
|
if (local62.wallDecorOffsetScale != 16) {
|
|
method559(arg2, arg7, arg8, local62.wallDecorOffsetScale);
|
|
}
|
|
} else if (arg6 == 4) {
|
|
if (local62.anInt4430 == -1 && local62.multiLocs == null && !local62.aBoolean214) {
|
|
local403 = local62.method3428(arg9, local165, local153, 4, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local403.aClass36_Sub1_3, local165, local201, local173);
|
|
}
|
|
local387 = local403.aClass8_10;
|
|
} else {
|
|
local387 = new Loc(arg5, 4, arg9, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
}
|
|
setWallDecor(arg2, arg7, arg8, local199, local387, null, Static267.anIntArray517[arg9], 0, 0, 0, local261);
|
|
} else {
|
|
@Pc(1889) long local1889;
|
|
@Pc(1934) Entity local1934;
|
|
@Pc(1950) Loc_Class139 local1950;
|
|
if (arg6 == 5) {
|
|
local1226 = 16;
|
|
local1889 = getWallKey(arg2, arg7, arg8);
|
|
if (local1889 != 0L) {
|
|
local1226 = LocTypeList.get(Integer.MAX_VALUE & (int) (local1889 >>> 32)).wallDecorOffsetScale;
|
|
}
|
|
if (local62.anInt4430 == -1 && local62.multiLocs == null && !local62.aBoolean214) {
|
|
local1950 = local62.method3428(arg9, local165, local153, 4, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local1950.aClass36_Sub1_3, local165 - Static34.anIntArray80[arg9] * 8, local201, local173 - anIntArray469[arg9] * 8);
|
|
}
|
|
local1934 = local1950.aClass8_10;
|
|
} else {
|
|
local1934 = new Loc(arg5, 4, arg9, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
}
|
|
setWallDecor(arg2, arg7, arg8, local199, local1934, null, Static267.anIntArray517[arg9], 0, local1226 * Static34.anIntArray80[arg9], anIntArray469[arg9] * local1226, local261);
|
|
} else if (arg6 == 6) {
|
|
local1226 = 8;
|
|
local1889 = getWallKey(arg2, arg7, arg8);
|
|
if (local1889 != 0L) {
|
|
local1226 = LocTypeList.get(Integer.MAX_VALUE & (int) (local1889 >>> 32)).wallDecorOffsetScale / 2;
|
|
}
|
|
if (local62.anInt4430 == -1 && local62.multiLocs == null && !local62.aBoolean214) {
|
|
local1950 = local62.method3428(arg9 + 4, local165, local153, 4, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local1950.aClass36_Sub1_3, local165 - Static114.anIntArray565[arg9] * 8, local201, local173 - anIntArray154[arg9] * 8);
|
|
}
|
|
local1934 = local1950.aClass8_10;
|
|
} else {
|
|
local1934 = new Loc(arg5, 4, arg9 + 4, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
}
|
|
setWallDecor(arg2, arg7, arg8, local199, local1934, null, 256, arg9, local1226 * Static114.anIntArray565[arg9], local1226 * anIntArray154[arg9], local261);
|
|
} else if (arg6 == 7) {
|
|
@Pc(2137) int local2137 = arg9 + 2 & 0x3;
|
|
if (local62.anInt4430 == -1 && local62.multiLocs == null && !local62.aBoolean214) {
|
|
@Pc(2183) Loc_Class139 local2183 = local62.method3428(local2137 + 4, local165, local153, 4, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local2183.aClass36_Sub1_3, local165, local201, local173);
|
|
}
|
|
local387 = local2183.aClass8_10;
|
|
} else {
|
|
local387 = new Loc(arg5, 4, local2137 + 4, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
}
|
|
setWallDecor(arg2, arg7, arg8, local199, local387, null, 256, local2137, 0, 0, local261);
|
|
} else if (arg6 == 8) {
|
|
local1226 = 8;
|
|
local1889 = getWallKey(arg2, arg7, arg8);
|
|
if (local1889 != 0L) {
|
|
local1226 = LocTypeList.get(Integer.MAX_VALUE & (int) (local1889 >>> 32)).wallDecorOffsetScale / 2;
|
|
}
|
|
@Pc(2244) int local2244 = arg9 + 2 & 0x3;
|
|
@Pc(2289) Entity local2289;
|
|
if (local62.anInt4430 == -1 && local62.multiLocs == null && !local62.aBoolean214) {
|
|
@Pc(2297) int local2297 = anIntArray154[arg9] * 8;
|
|
@Pc(2303) int local2303 = Static114.anIntArray565[arg9] * 8;
|
|
@Pc(2319) Loc_Class139 local2319 = local62.method3428(arg9 + 4, local165, local153, 4, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local2319.aClass36_Sub1_3, local165 - local2303, local201, local173 - local2297);
|
|
}
|
|
local1934 = local2319.aClass8_10;
|
|
local2319 = local62.method3428(local2244 + 4, local165, local153, 4, local199, local213, arg1, null, local330, local173);
|
|
if (GlRenderer.enabled && local330) {
|
|
ShadowManager.method4211(local2319.aClass36_Sub1_3, local165 - local2303, local201, local173 - local2297);
|
|
}
|
|
local2289 = local2319.aClass8_10;
|
|
} else {
|
|
local1934 = new Loc(arg5, 4, arg9 + 4, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
local2289 = new Loc(arg5, 4, local2244 + 4, arg0, arg7, arg8, local62.anInt4430, local62.aBoolean209, null);
|
|
}
|
|
setWallDecor(arg2, arg7, arg8, local199, local1934, local2289, 256, arg9, local1226 * Static114.anIntArray565[arg9], anIntArray154[arg9] * local1226, local261);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!ch", name = "c", descriptor = "(I)V")
|
|
public static void method846() {
|
|
if (!allLevelsAreVisible() && LoginManager.centralPlane != Player.level) {
|
|
LoginManager.method2463(Player.level, LoginManager.centralZoneZ, LoginManager.centralZoneX, PlayerList.self.movementQueueZ[0], false, PlayerList.self.movementQueueX[0]);
|
|
} else if (Player.level != LightingManager.anInt2875 && MiniMap.renderMap(Player.level)) {
|
|
LightingManager.anInt2875 = Player.level;
|
|
ScriptRunner.method2218();
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!jk", name = "a", descriptor = "(IZ[BII[Lclient!mj;)V")
|
|
public static void method2437(@OriginalArg(0) int arg0, @OriginalArg(1) boolean arg1, @OriginalArg(2) byte[] arg2, @OriginalArg(3) int arg3, @OriginalArg(5) CollisionMap[] arg4) {
|
|
@Pc(10) Buffer local10 = new Buffer(arg2);
|
|
@Pc(12) int local12 = -1;
|
|
while (true) {
|
|
@Pc(16) int local16 = local10.gVarSmart();
|
|
if (local16 == 0) {
|
|
return;
|
|
}
|
|
local12 += local16;
|
|
@Pc(27) int local27 = 0;
|
|
while (true) {
|
|
@Pc(31) int local31 = local10.gsmarts();
|
|
if (local31 == 0) {
|
|
break;
|
|
}
|
|
local27 += local31 - 1;
|
|
@Pc(46) int local46 = local27 & 0x3F;
|
|
@Pc(50) int local50 = local27 >> 12;
|
|
@Pc(56) int local56 = local27 >> 6 & 0x3F;
|
|
@Pc(60) int local60 = local10.g1();
|
|
@Pc(64) int local64 = local60 >> 2;
|
|
@Pc(68) int local68 = local60 & 0x3;
|
|
@Pc(72) int local72 = arg0 + local56;
|
|
@Pc(76) int local76 = local46 + arg3;
|
|
if (local72 > 0 && local76 > 0 && local72 < 103 && local76 < 103) {
|
|
@Pc(90) CollisionMap local90 = null;
|
|
if (!arg1) {
|
|
@Pc(95) int local95 = local50;
|
|
if ((tileFlags[1][local72][local76] & 0x2) == 2) {
|
|
local95 = local50 - 1;
|
|
}
|
|
if (local95 >= 0) {
|
|
local90 = arg4[local95];
|
|
}
|
|
}
|
|
method3397(local50, !arg1, local50, arg1, local90, local12, local64, local72, local76, local68);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!vh", name = "a", descriptor = "(Lclient!th;III)V")
|
|
public static void method3574(@OriginalArg(0) Entity arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3) {
|
|
@Pc(12) Tile local12;
|
|
if (arg2 < width) {
|
|
local12 = tiles[arg1][arg2 + 1][arg3];
|
|
if (local12 != null && local12.groundDecor != null && local12.groundDecor.entity.method4543()) {
|
|
arg0.method4544(local12.groundDecor.entity, 128, 0, 0, true);
|
|
}
|
|
}
|
|
if (arg3 < width) {
|
|
local12 = tiles[arg1][arg2][arg3 + 1];
|
|
if (local12 != null && local12.groundDecor != null && local12.groundDecor.entity.method4543()) {
|
|
arg0.method4544(local12.groundDecor.entity, 0, 0, 128, true);
|
|
}
|
|
}
|
|
if (arg2 < width && arg3 < length) {
|
|
local12 = tiles[arg1][arg2 + 1][arg3 + 1];
|
|
if (local12 != null && local12.groundDecor != null && local12.groundDecor.entity.method4543()) {
|
|
arg0.method4544(local12.groundDecor.entity, 128, 0, 128, true);
|
|
}
|
|
}
|
|
if (arg2 < width && arg3 > 0) {
|
|
local12 = tiles[arg1][arg2 + 1][arg3 - 1];
|
|
if (local12 != null && local12.groundDecor != null && local12.groundDecor.entity.method4543()) {
|
|
arg0.method4544(local12.groundDecor.entity, 128, 0, -128, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!mf", name = "a", descriptor = "(IIIII[[[B[I[I[I[I[IIBII)V")
|
|
public static void method2954(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) byte[][][] arg5, @OriginalArg(6) int[] arg6, @OriginalArg(7) int[] arg7, @OriginalArg(8) int[] arg8, @OriginalArg(9) int[] arg9, @OriginalArg(10) int[] arg10, @OriginalArg(11) int arg11, @OriginalArg(12) byte arg12, @OriginalArg(13) int arg13, @OriginalArg(14) int arg14) {
|
|
if (arg0 < 0) {
|
|
arg0 = 0;
|
|
} else if (arg0 >= width * 128) {
|
|
arg0 = width * 128 - 1;
|
|
}
|
|
if (arg2 < 0) {
|
|
arg2 = 0;
|
|
} else if (arg2 >= length * 128) {
|
|
arg2 = length * 128 - 1;
|
|
}
|
|
Static160.anInt2886 = MathUtils.sin[arg3];
|
|
Static121.anInt3038 = MathUtils.cos[arg3];
|
|
Static231.anInt5205 = MathUtils.sin[arg4];
|
|
Static81.anInt2222 = MathUtils.cos[arg4];
|
|
Static123.anInt3555 = arg0;
|
|
Static123.anInt3947 = arg1;
|
|
Static217.anInt4903 = arg2;
|
|
Static123.anInt4069 = arg0 / 128;
|
|
Static193.anInt4539 = arg2 / 128;
|
|
LightingManager.anInt987 = Static123.anInt4069 - visibility;
|
|
if (LightingManager.anInt987 < 0) {
|
|
LightingManager.anInt987 = 0;
|
|
}
|
|
LightingManager.anInt4698 = Static193.anInt4539 - visibility;
|
|
if (LightingManager.anInt4698 < 0) {
|
|
LightingManager.anInt4698 = 0;
|
|
}
|
|
LightingManager.anInt15 = Static123.anInt4069 + visibility;
|
|
if (LightingManager.anInt15 > width) {
|
|
LightingManager.anInt15 = width;
|
|
}
|
|
LightingManager.anInt4866 = Static193.anInt4539 + visibility;
|
|
if (LightingManager.anInt4866 > length) {
|
|
LightingManager.anInt4866 = length;
|
|
}
|
|
@Pc(99) short local99;
|
|
if (GlRenderer.enabled) {
|
|
local99 = (short) GlobalConfig.VIEW_DISTANCE;
|
|
} else {
|
|
local99 = 3500;
|
|
}
|
|
@Pc(104) int local104;
|
|
@Pc(113) int local113;
|
|
for (local104 = 0; local104 < visibility + visibility + 2; local104++) {
|
|
for (local113 = 0; local113 < visibility + visibility + 2; local113++) {
|
|
@Pc(130) int local130 = (local104 - visibility << 7) - (Static123.anInt3555 & 0x7F);
|
|
@Pc(140) int local140 = (local113 - visibility << 7) - (Static217.anInt4903 & 0x7F);
|
|
@Pc(146) int local146 = Static123.anInt4069 + local104 - visibility;
|
|
@Pc(152) int local152 = Static193.anInt4539 + local113 - visibility;
|
|
if (local146 >= 0 && local152 >= 0 && local146 < width && local152 < length) {
|
|
@Pc(176) int local176;
|
|
if (underwaterTileHeights == null) {
|
|
local176 = surfaceTileHeights[0][local146][local152] + 128 - Static123.anInt3947;
|
|
} else {
|
|
local176 = underwaterTileHeights[0][local146][local152] + 128 - Static123.anInt3947;
|
|
}
|
|
@Pc(201) int local201 = surfaceTileHeights[3][local146][local152] - Static123.anInt3947 - 1000;
|
|
aBooleanArrayArray3[local104][local113] = Static160.method3049(local130, local201, local176, local140, local99);
|
|
} else {
|
|
aBooleanArrayArray3[local104][local113] = false;
|
|
}
|
|
}
|
|
}
|
|
for (local104 = 0; local104 < visibility + visibility + 1; local104++) {
|
|
for (local113 = 0; local113 < visibility + visibility + 1; local113++) {
|
|
aBooleanArrayArray1[local104][local113] = aBooleanArrayArray3[local104][local113] || aBooleanArrayArray3[local104 + 1][local113] || aBooleanArrayArray3[local104][local113 + 1] || aBooleanArrayArray3[local104 + 1][local113 + 1];
|
|
}
|
|
}
|
|
Static8.anIntArray8 = arg6;
|
|
Static123.anIntArray292 = arg7;
|
|
Static96.anIntArray234 = arg8;
|
|
Static123.anIntArray454 = arg9;
|
|
Static123.anIntArray427 = arg10;
|
|
Static123.method2419();
|
|
if (underWaterGroundTiles != null) {
|
|
setUnderwater(true);
|
|
method3292(arg0, arg1, arg2, null, 0, (byte) 0, arg13, arg14);
|
|
if (GlRenderer.enabled) {
|
|
MaterialManager.renderingUnderwater = false;
|
|
MaterialManager.setMaterial(0, 0);
|
|
FogManager.setFogColor(null);
|
|
LightingManager.method2390();
|
|
}
|
|
setUnderwater(false);
|
|
}
|
|
method3292(arg0, arg1, arg2, arg5, arg11, arg12, arg13, arg14);
|
|
}
|
|
|
|
@OriginalMember(owner = "client!uc", name = "a", descriptor = "(III[[[BIBII)V")
|
|
public static void method3292(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) byte[][][] arg3, @OriginalArg(4) int arg4, @OriginalArg(5) byte arg5, @OriginalArg(6) int arg6, @OriginalArg(7) int arg7) {
|
|
Static156.anInt437++;
|
|
Static156.anInt1142 = 0;
|
|
@Pc(9) int local9 = arg6 - 16;
|
|
@Pc(13) int local13 = arg6 + 16;
|
|
@Pc(17) int local17 = arg7 - 16;
|
|
@Pc(21) int local21 = arg7 + 16;
|
|
@Pc(32) int local32;
|
|
@Pc(37) int local37;
|
|
@Pc(183) int local183;
|
|
for (@Pc(23) int local23 = Static156.anInt5276; local23 < levels; local23++) {
|
|
@Pc(30) Tile[][] local30 = tiles[local23];
|
|
for (local32 = LightingManager.anInt987; local32 < LightingManager.anInt15; local32++) {
|
|
for (local37 = LightingManager.anInt4698; local37 < LightingManager.anInt4866; local37++) {
|
|
@Pc(46) Tile local46 = local30[local32][local37];
|
|
if (local46 != null) {
|
|
if (aBooleanArrayArray1[local32 + visibility - Static123.anInt4069][local37 + visibility - Static193.anInt4539] && (arg3 == null || local23 < arg4 || arg3[local23][local32][local37] != arg5)) {
|
|
local46.aBoolean45 = true;
|
|
local46.aBoolean46 = true;
|
|
local46.aBoolean47 = local46.sceneryLen > 0;
|
|
Static156.anInt1142++;
|
|
} else {
|
|
local46.aBoolean45 = false;
|
|
local46.aBoolean46 = false;
|
|
local46.anInt663 = 0;
|
|
if (local32 >= local9 && local32 <= local13 && local37 >= local17 && local37 <= local21) {
|
|
if (local46.wall != null) {
|
|
@Pc(103) Wall local103 = local46.wall;
|
|
local103.primary.method4545(0, local23, local103.anInt3051, local103.xFine, local103.zFine);
|
|
if (local103.secondary != null) {
|
|
local103.secondary.method4545(0, local23, local103.anInt3051, local103.xFine, local103.zFine);
|
|
}
|
|
}
|
|
if (local46.wallDecor != null) {
|
|
@Pc(134) WallDecor local134 = local46.wallDecor;
|
|
local134.primary.method4545(local134.anInt1388, local23, local134.anInt1391, local134.xFine, local134.zFine);
|
|
if (local134.secondary != null) {
|
|
local134.secondary.method4545(local134.anInt1388, local23, local134.anInt1391, local134.xFine, local134.zFine);
|
|
}
|
|
}
|
|
if (local46.groundDecor != null) {
|
|
@Pc(167) GroundDecor local167 = local46.groundDecor;
|
|
local167.entity.method4545(0, local23, local167.anInt733, local167.xFine, local167.zFine);
|
|
}
|
|
if (local46.scenery != null) {
|
|
for (local183 = 0; local183 < local46.sceneryLen; local183++) {
|
|
@Pc(192) Scenery local192 = local46.scenery[local183];
|
|
local192.entity.method4545(local192.anInt1714, local23, local192.anInt1706, local192.anInt1699, local192.anInt1703);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@Pc(240) boolean local240 = tileHeights == underwaterTileHeights;
|
|
if (GlRenderer.enabled) {
|
|
@Pc(244) GL2 gl = GlRenderer.gl;
|
|
gl.glPushMatrix();
|
|
gl.glTranslatef((float) -arg0, (float) -arg1, (float) -arg2);
|
|
if (local240) {
|
|
UnderwaterMaterialRenderer.applyFogFade();
|
|
MaterialManager.setMaterial(-1, 3);
|
|
MaterialManager.renderingUnderwater = true;
|
|
UnderwaterMaterialRenderer.method4609();
|
|
Static152.anInt3604 = -1;
|
|
Static247.anInt730 = -1;
|
|
for (local32 = 0; local32 < underwaterHdTiles[0].length; local32++) {
|
|
@Pc(285) GlTile local285 = underwaterHdTiles[0][local32];
|
|
@Pc(294) float local294 = 251.5F - (local285.blend ? 1.0F : 0.5F);
|
|
if (local285.underwaterColor != Static152.anInt3604) {
|
|
Static152.anInt3604 = local285.underwaterColor;
|
|
WaterMaterialRenderer.method619(local285.underwaterColor);
|
|
FogManager.setFogColor(WaterMaterialRenderer.method2422());
|
|
}
|
|
local285.method1944(tiles, local294, false);
|
|
}
|
|
UnderwaterMaterialRenderer.method4608();
|
|
} else {
|
|
local32 = Static156.anInt5276;
|
|
while (true) {
|
|
if (local32 >= levels) {
|
|
LightingManager.method2402(Static123.anInt4069, Static193.anInt4539, tiles);
|
|
break;
|
|
}
|
|
for (local37 = 0; local37 < underwaterHdTiles[local32].length; local37++) {
|
|
@Pc(336) GlTile local336 = underwaterHdTiles[local32][local37];
|
|
@Pc(350) float local350 = 201.5F - (float) local32 * 50.0F - (local336.blend ? 1.0F : 0.5F);
|
|
if (local336.texture != -1 && Rasteriser.textureProvider.getMaterialType(local336.texture) == MaterialManager.WATER && Preferences.highWaterDetail) {
|
|
WaterMaterialRenderer.method619(local336.underwaterColor);
|
|
}
|
|
local336.method1944(tiles, local350, false);
|
|
}
|
|
if (local32 == 0 && Preferences.sceneryShadowsType > 0) {
|
|
GlRenderer.method4159(101.5F);
|
|
ShadowManager.method4198(Static123.anInt4069, Static193.anInt4539, visibility, arg1, aBooleanArrayArray1, tileHeights[0]);
|
|
}
|
|
local32++;
|
|
}
|
|
}
|
|
gl.glPopMatrix();
|
|
}
|
|
@Pc(434) int local434;
|
|
@Pc(438) int local438;
|
|
@Pc(450) Tile local450;
|
|
@Pc(399) int local399;
|
|
@Pc(406) Tile[][] local406;
|
|
@Pc(415) int local415;
|
|
@Pc(428) int local428;
|
|
for (local399 = Static156.anInt5276; local399 < levels; local399++) {
|
|
local406 = tiles[local399];
|
|
for (local37 = -visibility; local37 <= 0; local37++) {
|
|
local415 = Static123.anInt4069 + local37;
|
|
local183 = Static123.anInt4069 - local37;
|
|
if (local415 >= LightingManager.anInt987 || local183 < LightingManager.anInt15) {
|
|
for (local428 = -visibility; local428 <= 0; local428++) {
|
|
local434 = Static193.anInt4539 + local428;
|
|
local438 = Static193.anInt4539 - local428;
|
|
if (local415 >= LightingManager.anInt987) {
|
|
if (local434 >= LightingManager.anInt4698) {
|
|
local450 = local406[local415][local434];
|
|
if (local450 != null && local450.aBoolean45) {
|
|
method4245(local450, true);
|
|
}
|
|
}
|
|
if (local438 < LightingManager.anInt4866) {
|
|
local450 = local406[local415][local438];
|
|
if (local450 != null && local450.aBoolean45) {
|
|
method4245(local450, true);
|
|
}
|
|
}
|
|
}
|
|
if (local183 < LightingManager.anInt15) {
|
|
if (local434 >= LightingManager.anInt4698) {
|
|
local450 = local406[local183][local434];
|
|
if (local450 != null && local450.aBoolean45) {
|
|
method4245(local450, true);
|
|
}
|
|
}
|
|
if (local438 < LightingManager.anInt4866) {
|
|
local450 = local406[local183][local438];
|
|
if (local450 != null && local450.aBoolean45) {
|
|
method4245(local450, true);
|
|
}
|
|
}
|
|
}
|
|
if (Static156.anInt1142 == 0) {
|
|
if (!local240) {
|
|
MiniMenu.aBoolean187 = false;
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (local399 = Static156.anInt5276; local399 < levels; local399++) {
|
|
local406 = tiles[local399];
|
|
for (local37 = -visibility; local37 <= 0; local37++) {
|
|
local415 = Static123.anInt4069 + local37;
|
|
local183 = Static123.anInt4069 - local37;
|
|
if (local415 >= LightingManager.anInt987 || local183 < LightingManager.anInt15) {
|
|
for (local428 = -visibility; local428 <= 0; local428++) {
|
|
local434 = Static193.anInt4539 + local428;
|
|
local438 = Static193.anInt4539 - local428;
|
|
if (local415 >= LightingManager.anInt987) {
|
|
if (local434 >= LightingManager.anInt4698) {
|
|
local450 = local406[local415][local434];
|
|
if (local450 != null && local450.aBoolean45) {
|
|
method4245(local450, false);
|
|
}
|
|
}
|
|
if (local438 < LightingManager.anInt4866) {
|
|
local450 = local406[local415][local438];
|
|
if (local450 != null && local450.aBoolean45) {
|
|
method4245(local450, false);
|
|
}
|
|
}
|
|
}
|
|
if (local183 < LightingManager.anInt15) {
|
|
if (local434 >= LightingManager.anInt4698) {
|
|
local450 = local406[local183][local434];
|
|
if (local450 != null && local450.aBoolean45) {
|
|
method4245(local450, false);
|
|
}
|
|
}
|
|
if (local438 < LightingManager.anInt4866) {
|
|
local450 = local406[local183][local438];
|
|
if (local450 != null && local450.aBoolean45) {
|
|
method4245(local450, false);
|
|
}
|
|
}
|
|
}
|
|
if (Static156.anInt1142 == 0) {
|
|
if (!local240) {
|
|
MiniMenu.aBoolean187 = false;
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
MiniMenu.aBoolean187 = false;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!lg", name = "a", descriptor = "(I)V")
|
|
public static void method2750(@OriginalArg(0) int arg0) {
|
|
Static156.anInt5276 = arg0;
|
|
for (@Pc(3) int local3 = 0; local3 < width; local3++) {
|
|
for (@Pc(8) int local8 = 0; local8 < length; local8++) {
|
|
if (tiles[arg0][local3][local8] == null) {
|
|
tiles[arg0][local3][local8] = new Tile(arg0, local3, local8);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!fh", name = "a", descriptor = "(IIIILclient!th;JLclient!th;Lclient!th;)V")
|
|
public static void method1543(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) Entity arg4, @OriginalArg(5) long arg5, @OriginalArg(6) Entity arg6, @OriginalArg(7) Entity arg7) {
|
|
@Pc(3) ObjStackEntity local3 = new ObjStackEntity();
|
|
local3.aClass8_9 = arg4;
|
|
local3.anInt3064 = arg1 * 128 + 64;
|
|
local3.anInt3061 = arg2 * 128 + 64;
|
|
local3.anInt3057 = arg3;
|
|
local3.aLong108 = arg5;
|
|
local3.aClass8_7 = arg6;
|
|
local3.aClass8_8 = arg7;
|
|
@Pc(34) int local34 = 0;
|
|
@Pc(42) Tile local42 = tiles[arg0][arg1][arg2];
|
|
if (local42 != null) {
|
|
for (@Pc(46) int local46 = 0; local46 < local42.sceneryLen; local46++) {
|
|
@Pc(55) Scenery local55 = local42.scenery[local46];
|
|
if ((local55.key & 0x400000L) == 4194304L) {
|
|
@Pc(66) int local66 = local55.entity.getMinY();
|
|
if (local66 != -32768 && local66 < local34) {
|
|
local34 = local66;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
local3.anInt3063 = -local34;
|
|
if (tiles[arg0][arg1][arg2] == null) {
|
|
tiles[arg0][arg1][arg2] = new Tile(arg0, arg1, arg2);
|
|
}
|
|
tiles[arg0][arg1][arg2].aClass79_1 = local3;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!fh", name = "a", descriptor = "(Lclient!th;IIIII)V")
|
|
public static void method1544(@OriginalArg(0) Entity arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5) {
|
|
@Pc(1) boolean local1 = true;
|
|
@Pc(3) int local3 = arg2;
|
|
@Pc(7) int local7 = arg2 + arg4;
|
|
@Pc(11) int local11 = arg3 - 1;
|
|
@Pc(15) int local15 = arg3 + arg5;
|
|
for (@Pc(17) int local17 = arg1; local17 <= arg1 + 1; local17++) {
|
|
if (local17 != levels) {
|
|
for (@Pc(28) int local28 = local3; local28 <= local7; local28++) {
|
|
if (local28 >= 0 && local28 < width) {
|
|
for (@Pc(39) int local39 = local11; local39 <= local15; local39++) {
|
|
if (local39 >= 0 && local39 < length && (!local1 || local28 >= local7 || local39 >= local15 || local39 < arg3 && local28 != arg2)) {
|
|
@Pc(71) Tile local71 = tiles[local17][local28][local39];
|
|
if (local71 != null) {
|
|
@Pc(158) int local158 = (tileHeights[local17][local28][local39] + tileHeights[local17][local28 + 1][local39] + tileHeights[local17][local28][local39 + 1] + tileHeights[local17][local28 + 1][local39 + 1]) / 4 - (tileHeights[arg1][arg2][arg3] + tileHeights[arg1][arg2 + 1][arg3] + tileHeights[arg1][arg2][arg3 + 1] + tileHeights[arg1][arg2 + 1][arg3 + 1]) / 4;
|
|
@Pc(161) Wall local161 = local71.wall;
|
|
if (local161 != null) {
|
|
if (local161.primary.method4543()) {
|
|
arg0.method4544(local161.primary, (local28 - arg2) * 128 + (1 - arg4) * 64, local158, (local39 - arg3) * 128 + (1 - arg5) * 64, local1);
|
|
}
|
|
if (local161.secondary != null && local161.secondary.method4543()) {
|
|
arg0.method4544(local161.secondary, (local28 - arg2) * 128 + (1 - arg4) * 64, local158, (local39 - arg3) * 128 + (1 - arg5) * 64, local1);
|
|
}
|
|
}
|
|
for (@Pc(232) int local232 = 0; local232 < local71.sceneryLen; local232++) {
|
|
@Pc(241) Scenery local241 = local71.scenery[local232];
|
|
if (local241 != null && local241.entity.method4543() && (local28 == local241.xMin || local28 == local3) && (local39 == local241.zMin || local39 == local11)) {
|
|
@Pc(270) int local270 = local241.xMax + 1 - local241.xMin;
|
|
@Pc(278) int local278 = local241.zMax + 1 - local241.zMin;
|
|
arg0.method4544(local241.entity, (local241.xMin - arg2) * 128 + (local270 - arg4) * 64, local158, (local241.zMin - arg3) * 128 + (local278 - arg5) * 64, local1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
local3--;
|
|
local1 = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!bh", name = "a", descriptor = "(IIII)V")
|
|
public static void method559(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3) {
|
|
@Pc(7) Tile local7 = tiles[arg0][arg1][arg2];
|
|
if (local7 == null) {
|
|
return;
|
|
}
|
|
@Pc(13) WallDecor local13 = local7.wallDecor;
|
|
if (local13 != null) {
|
|
local13.xOffset = local13.xOffset * arg3 / 16;
|
|
local13.zOffset = local13.zOffset * arg3 / 16;
|
|
}
|
|
}
|
|
}
|