diff --git a/client/src/main/java/rt4/ColorUtils.java b/client/src/main/java/rt4/ColorUtils.java index 72f256d..6b1c97b 100644 --- a/client/src/main/java/rt4/ColorUtils.java +++ b/client/src/main/java/rt4/ColorUtils.java @@ -67,4 +67,19 @@ public class ColorUtils { } return (local188 >> 2 << 10) + (local159 >> 5 << 7) + (local164 >> 1); } + + @OriginalMember(owner = "client!pf", name = "a", descriptor = "(II)[F") + public static float[] getRgbFloat(@OriginalArg(0) int arg0) { + @Pc(7) float local7 = Static161.method3068() + Static161.method3059(); + @Pc(9) int local9 = Static161.method3064(); + @Pc(11) float local11 = 0.58823526F; + Static251.aFloatArray28[3] = 1.0F; + @Pc(24) float local24 = (float) (local9 >> 16 & 0xFF) / 255.0F; + @Pc(33) float local33 = (float) (local9 >> 8 & 0xFF) / 255.0F; + Static251.aFloatArray28[1] = local7 * (float) (arg0 >> 8 & 0xFF) / 255.0F * local33 * local11; + Static251.aFloatArray28[0] = local7 * local11 * local24 * ((float) (arg0 >> 16 & 0xFF) / 255.0F); + @Pc(74) float local74 = (float) (local9 & 0xFF) / 255.0F; + Static251.aFloatArray28[2] = (float) (arg0 & 0xFF) / 255.0F * local74 * local11 * local7; + return Static251.aFloatArray28; + } } diff --git a/client/src/main/java/rt4/GlModel.java b/client/src/main/java/rt4/GlModel.java index 08fbd5e..6f6dd49 100644 --- a/client/src/main/java/rt4/GlModel.java +++ b/client/src/main/java/rt4/GlModel.java @@ -206,7 +206,7 @@ public final class GlModel extends Model { if (arg0.aShortArray23 != null) { local135 = arg0.aShortArray23[local125]; if (local135 != -1) { - local131 = Rasteriser.textureProvider.method3237(local135 & 0xFFFF); + local131 = Rasteriser.textureProvider.getMaterialType(local135 & 0xFFFF); local133 = Rasteriser.textureProvider.method3228(local135 & 0xFFFF); } } diff --git a/client/src/main/java/rt4/GlRenderer.java b/client/src/main/java/rt4/GlRenderer.java index 8f042bf..46ce739 100644 --- a/client/src/main/java/rt4/GlRenderer.java +++ b/client/src/main/java/rt4/GlRenderer.java @@ -566,7 +566,7 @@ public final class GlRenderer { } @OriginalMember(owner = "client!tf", name = "p", descriptor = "()V") - public static void method4173() { + public static void restoreLighting() { if (Preferences.highDetailLighting) { setLightingEnabled(true); setNormalArrayEnabled(true); diff --git a/client/src/main/java/rt4/GlTile.java b/client/src/main/java/rt4/GlTile.java index ffbf650..ac28c55 100644 --- a/client/src/main/java/rt4/GlTile.java +++ b/client/src/main/java/rt4/GlTile.java @@ -89,27 +89,27 @@ public final class GlTile extends Node { private int anInt2489 = 0; @OriginalMember(owner = "client!hg", name = "y", descriptor = "I") - public final int anInt2485; + public final int texture; @OriginalMember(owner = "client!hg", name = "V", descriptor = "F") private final float aFloat12; @OriginalMember(owner = "client!hg", name = "M", descriptor = "Z") - public final boolean aBoolean140; + public final boolean blend; @OriginalMember(owner = "client!hg", name = "u", descriptor = "Z") private final boolean aBoolean139; @OriginalMember(owner = "client!hg", name = "C", descriptor = "I") - public final int anInt2486; + public final int underwaterColor; @OriginalMember(owner = "client!hg", name = "", descriptor = "(IFZZI)V") public GlTile(@OriginalArg(0) int arg0, @OriginalArg(1) float arg1, @OriginalArg(2) boolean arg2, @OriginalArg(3) boolean arg3, @OriginalArg(4) int arg4) { - this.anInt2485 = arg0; + this.texture = arg0; this.aFloat12 = arg1; - this.aBoolean140 = arg2; + this.blend = arg2; this.aBoolean139 = arg3; - this.anInt2486 = arg4; + this.underwaterColor = arg4; } @OriginalMember(owner = "client!hg", name = "a", descriptor = "()V") @@ -137,7 +137,7 @@ public final class GlTile extends Node { this.anIntArray231 = new int[this.anInt2484]; this.anIntArrayArray17 = new int[this.anInt2484][]; this.aClass133_8 = new HashTable(Static165.clp2(this.anInt2482)); - if (this.aBoolean140) { + if (this.blend) { this.anIntArrayArray18 = new int[this.anInt2484][]; this.aBooleanArray54 = new boolean[this.anInt2484]; } @@ -248,7 +248,7 @@ public final class GlTile extends Node { local68 = arg0[this.anIntArray231[local47]][this.anIntArray228[local47]][this.anIntArray227[local47]]; if (local68 != null && local68.aBoolean45) { local78 = this.anIntArrayArray17[local47]; - if (this.aBoolean140) { + if (this.blend) { local86 = this.anIntArrayArray18[local47]; if (local86 != null) { for (local90 = 0; local90 < local86.length; local90++) { @@ -271,7 +271,7 @@ public final class GlTile extends Node { local68 = arg0[this.anIntArray231[local47]][this.anIntArray228[local47]][this.anIntArray227[local47]]; if (local68 != null && local68.aBoolean45) { local78 = this.anIntArrayArray17[local47]; - if (this.aBoolean140) { + if (this.blend) { local86 = this.anIntArrayArray18[local47]; if (local86 != null) { for (local90 = 0; local90 < local86.length; local90++) { @@ -293,50 +293,50 @@ public final class GlTile extends Node { if (aClass3_Sub15_3.offset == 0 && aClass3_Sub15_2.offset == 0) { return; } - @Pc(257) GL2 local257 = GlRenderer.gl; - if (this.anInt2485 == -1 || arg2) { + @Pc(257) GL2 gl = GlRenderer.gl; + if (this.texture == -1 || arg2) { GlRenderer.setTextureId(-1); MaterialManager.setMaterial(0, 0); } else { - Rasteriser.textureProvider.method3227(this.anInt2485); + Rasteriser.textureProvider.method3227(this.texture); } - @Pc(282) int local282 = this.aBoolean139 ? 40 : 36; + @Pc(282) int i = this.aBoolean139 ? 40 : 36; if (this.aClass155_3 == null) { if (GlRenderer.arbVboSupported) { - local257.glBindBuffer(GL2.GL_ARRAY_BUFFER, 0); + gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, 0); } this.aByteBuffer3.position(0); - local257.glVertexPointer(3, GL2.GL_FLOAT, local282, this.aByteBuffer3); + gl.glVertexPointer(3, GL2.GL_FLOAT, i, this.aByteBuffer3); this.aByteBuffer3.position(12); - local257.glColorPointer(4, GL2.GL_UNSIGNED_BYTE, local282, this.aByteBuffer3); + gl.glColorPointer(4, GL2.GL_UNSIGNED_BYTE, i, this.aByteBuffer3); if (Preferences.highDetailLighting) { this.aByteBuffer3.position(16); - local257.glNormalPointer(GL2.GL_FLOAT, local282, this.aByteBuffer3); + gl.glNormalPointer(GL2.GL_FLOAT, i, this.aByteBuffer3); } this.aByteBuffer3.position(28); - local257.glTexCoordPointer(2, GL2.GL_FLOAT, local282, this.aByteBuffer3); + gl.glTexCoordPointer(2, GL2.GL_FLOAT, i, this.aByteBuffer3); if (this.aBoolean139) { - local257.glClientActiveTexture(UnderwaterMaterialRenderer.method4607()); + gl.glClientActiveTexture(UnderwaterMaterialRenderer.method4607()); this.aByteBuffer3.position(36); - local257.glTexCoordPointer(1, GL2.GL_FLOAT, local282, this.aByteBuffer3); - local257.glClientActiveTexture(GL2.GL_TEXTURE0); + gl.glTexCoordPointer(1, GL2.GL_FLOAT, i, this.aByteBuffer3); + gl.glClientActiveTexture(GL2.GL_TEXTURE0); } } else { this.aClass155_3.method4516(); - local257.glVertexPointer(3, GL2.GL_FLOAT, local282, 0L); - local257.glColorPointer(4, GL2.GL_UNSIGNED_BYTE, local282, 12L); + gl.glVertexPointer(3, GL2.GL_FLOAT, i, 0L); + gl.glColorPointer(4, GL2.GL_UNSIGNED_BYTE, i, 12L); if (Preferences.highDetailLighting) { - local257.glNormalPointer(GL2.GL_FLOAT, local282, 16L); + gl.glNormalPointer(GL2.GL_FLOAT, i, 16L); } - local257.glTexCoordPointer(2, GL2.GL_FLOAT, local282, 28L); + gl.glTexCoordPointer(2, GL2.GL_FLOAT, i, 28L); if (this.aBoolean139) { - local257.glClientActiveTexture(UnderwaterMaterialRenderer.method4607()); - local257.glTexCoordPointer(1, GL2.GL_FLOAT, local282, 36L); - local257.glClientActiveTexture(GL2.GL_TEXTURE0); + gl.glClientActiveTexture(UnderwaterMaterialRenderer.method4607()); + gl.glTexCoordPointer(1, GL2.GL_FLOAT, i, 36L); + gl.glClientActiveTexture(GL2.GL_TEXTURE0); } } if (GlRenderer.arbVboSupported) { - local257.glBindBuffer(GL2.GL_ELEMENT_ARRAY_BUFFER, 0); + gl.glBindBuffer(GL2.GL_ELEMENT_ARRAY_BUFFER, 0); } if (aClass3_Sub15_3.offset != 0) { if (aByteBuffer5 == null || aByteBuffer5.capacity() < aClass3_Sub15_3.offset) { @@ -347,7 +347,7 @@ public final class GlTile extends Node { aByteBuffer5.put(aClass3_Sub15_3.data, 0, aClass3_Sub15_3.offset); aByteBuffer5.flip(); GlRenderer.method4159(arg1); - local257.glDrawElements(GL2.GL_TRIANGLES, aClass3_Sub15_3.offset / 4, GL2.GL_UNSIGNED_INT, aByteBuffer5); + gl.glDrawElements(GL2.GL_TRIANGLES, aClass3_Sub15_3.offset / 4, GL2.GL_UNSIGNED_INT, aByteBuffer5); } if (aClass3_Sub15_2.offset == 0) { return; @@ -361,13 +361,13 @@ public final class GlTile extends Node { aByteBuffer4.flip(); GlRenderer.method4159(arg1 - 100.0F); GlRenderer.disableDepthMask(); - local257.glDrawElements(GL2.GL_TRIANGLES, aClass3_Sub15_2.offset / 4, GL2.GL_UNSIGNED_INT, aByteBuffer4); + gl.glDrawElements(GL2.GL_TRIANGLES, aClass3_Sub15_2.offset / 4, GL2.GL_UNSIGNED_INT, aByteBuffer4); GlRenderer.enableDepthMask(); } @OriginalMember(owner = "client!hg", name = "a", descriptor = "(III[I[IZ)I") public final int method1945(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int[] arg3, @OriginalArg(4) int[] arg4, @OriginalArg(5) boolean arg5) { - if (this.aBoolean140) { + if (this.blend) { this.anIntArrayArray18[this.anInt2489] = arg4; this.aBooleanArray54[this.anInt2489] = arg5; if (arg4 != null) { diff --git a/client/src/main/java/rt4/Js5GlTextureProvider.java b/client/src/main/java/rt4/Js5GlTextureProvider.java index 5bda51a..f8631e2 100644 --- a/client/src/main/java/rt4/Js5GlTextureProvider.java +++ b/client/src/main/java/rt4/Js5GlTextureProvider.java @@ -188,7 +188,7 @@ public final class Js5GlTextureProvider implements TextureProvider { @OriginalMember(owner = "client!nk", name = "g", descriptor = "(II)I") @Override - public final int method3237(@OriginalArg(0) int arg0) { + public final int getMaterialType(@OriginalArg(0) int arg0) { return this.aByteArray62[arg0] & 0xFF; } diff --git a/client/src/main/java/rt4/LightingManager.java b/client/src/main/java/rt4/LightingManager.java index ce51e74..ba93095 100644 --- a/client/src/main/java/rt4/LightingManager.java +++ b/client/src/main/java/rt4/LightingManager.java @@ -415,7 +415,7 @@ public class LightingManager { local4.glDepthMask(true); local4.glFogfv(GL2.GL_FOG_COLOR, Static161.fogColor, 0); local4.glEnableClientState(GL2.GL_TEXTURE_COORD_ARRAY); - GlRenderer.method4173(); + GlRenderer.restoreLighting(); } @OriginalMember(owner = "client!jf", name = "a", descriptor = "(ILclient!gi;III)V") diff --git a/client/src/main/java/rt4/MaterialManager.java b/client/src/main/java/rt4/MaterialManager.java index 74dbc1f..26d230f 100644 --- a/client/src/main/java/rt4/MaterialManager.java +++ b/client/src/main/java/rt4/MaterialManager.java @@ -5,6 +5,8 @@ import org.openrs2.deob.annotation.OriginalMember; import org.openrs2.deob.annotation.Pc; public class MaterialManager { + public static final int WATER = 4; + @OriginalMember(owner = "client!dl", name = "c", descriptor = "I") public static int currentType = 0; @OriginalMember(owner = "client!je", name = "R", descriptor = "Z") diff --git a/client/src/main/java/rt4/SceneGraph.java b/client/src/main/java/rt4/SceneGraph.java index 6d6cefe..151ba45 100644 --- a/client/src/main/java/rt4/SceneGraph.java +++ b/client/src/main/java/rt4/SceneGraph.java @@ -66,6 +66,8 @@ public class SceneGraph { public static Scenery[] aClass31Array3; @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!km", name = "f", descriptor = "(I)Z") public static boolean allLevelsAreVisible() { diff --git a/client/src/main/java/rt4/Static105.java b/client/src/main/java/rt4/Static105.java index 6f9d2b1..69d083a 100644 --- a/client/src/main/java/rt4/Static105.java +++ b/client/src/main/java/rt4/Static105.java @@ -23,7 +23,7 @@ public final class Static105 { @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 = SceneGraph.tileHeights == Static80.underWaterTileHeightMap; + @Pc(6) boolean local6 = SceneGraph.tileHeights == SceneGraph.underwaterTileHeights; @Pc(8) int local8 = 0; @Pc(17) int local17; for (@Pc(10) int local10 = arg1; local10 < arg1 + arg3; local10++) { diff --git a/client/src/main/java/rt4/Static156.java b/client/src/main/java/rt4/Static156.java index a8e4431..bd4eb8e 100644 --- a/client/src/main/java/rt4/Static156.java +++ b/client/src/main/java/rt4/Static156.java @@ -66,10 +66,10 @@ public final class Static156 { @Pc(152) int local152 = Static193.anInt4539 + local113 - Static277.tileVisibilityDistance; if (local146 >= 0 && local152 >= 0 && local146 < SceneGraph.mapSizeX && local152 < SceneGraph.mapSizeZ) { @Pc(176) int local176; - if (Static80.underWaterTileHeightMap == null) { + if (SceneGraph.underwaterTileHeights == null) { local176 = SceneGraph.surfaceTileHeights[0][local146][local152] + 128 - Static123.anInt3947; } else { - local176 = Static80.underWaterTileHeightMap[0][local146][local152] + 128 - Static123.anInt3947; + local176 = SceneGraph.underwaterTileHeights[0][local146][local152] + 128 - Static123.anInt3947; } @Pc(201) int local201 = SceneGraph.surfaceTileHeights[3][local146][local152] - Static123.anInt3947 - 1000; Static89.aBooleanArrayArray3[local104][local113] = Static160.method3049(local130, local201, local176, local140, local99); @@ -103,30 +103,6 @@ public final class Static156 { Static248.method3292(arg0, arg1, arg2, arg5, arg11, arg12, arg13, arg14); } - @OriginalMember(owner = "client!mf", name = "a", descriptor = "()V") - public static void method2959() { - @Pc(1) GL2 local1 = GlRenderer.gl; - local1.glDisableClientState(GL2.GL_COLOR_ARRAY); - GlRenderer.setLightingEnabled(false); - local1.glDisable(GL2.GL_DEPTH_TEST); - local1.glPushAttrib(GL2.GL_FOG_BIT); - local1.glFogf(GL2.GL_FOG_START, (float) GlobalConfig.VIEW_DISTANCE - (GlobalConfig.VIEW_FADE_DISTANCE * 2.0f)); - GlRenderer.disableDepthMask(); - for (@Pc(19) int local19 = 0; local19 < SceneGraph.surfaceHdTiles[0].length; local19++) { - @Pc(31) GlTile local31 = SceneGraph.surfaceHdTiles[0][local19]; - if (local31.anInt2485 >= 0 && Rasteriser.textureProvider.method3237(local31.anInt2485) == 4) { - local1.glColor4fv(Static190.method3441(local31.anInt2486), 0); - @Pc(57) float local57 = 201.5F - (local31.aBoolean140 ? 1.0F : 0.5F); - local31.method1944(SceneGraph.tiles, local57, true); - } - } - local1.glEnableClientState(GL2.GL_COLOR_ARRAY); - GlRenderer.method4173(); - local1.glEnable(GL2.GL_DEPTH_TEST); - local1.glPopAttrib(); - GlRenderer.enableDepthMask(); - } - @OriginalMember(owner = "client!mf", name = "a", descriptor = "(BLclient!wa;)Lclient!ta;") public static TextureOp29SubOp4 method2960(@OriginalArg(1) Buffer arg0) { return new TextureOp29SubOp4(arg0.g2s(), arg0.g2s(), arg0.g2s(), arg0.g2s(), arg0.g3(), arg0.g3(), arg0.g1()); diff --git a/client/src/main/java/rt4/Static190.java b/client/src/main/java/rt4/Static190.java index ad707c0..a85680a 100644 --- a/client/src/main/java/rt4/Static190.java +++ b/client/src/main/java/rt4/Static190.java @@ -6,21 +6,6 @@ import org.openrs2.deob.annotation.Pc; public final class Static190 { - @OriginalMember(owner = "client!pf", name = "a", descriptor = "(II)[F") - public static float[] method3441(@OriginalArg(0) int arg0) { - @Pc(7) float local7 = Static161.method3068() + Static161.method3059(); - @Pc(9) int local9 = Static161.method3064(); - @Pc(11) float local11 = 0.58823526F; - Static251.aFloatArray28[3] = 1.0F; - @Pc(24) float local24 = (float) (local9 >> 16 & 0xFF) / 255.0F; - @Pc(33) float local33 = (float) (local9 >> 8 & 0xFF) / 255.0F; - Static251.aFloatArray28[1] = local7 * (float) (arg0 >> 8 & 0xFF) / 255.0F * local33 * local11; - Static251.aFloatArray28[0] = local7 * local11 * local24 * ((float) (arg0 >> 16 & 0xFF) / 255.0F); - @Pc(74) float local74 = (float) (local9 & 0xFF) / 255.0F; - Static251.aFloatArray28[2] = (float) (arg0 & 0xFF) / 255.0F * local74 * local11 * local7; - return Static251.aFloatArray28; - } - @OriginalMember(owner = "client!pf", name = "a", descriptor = "(IIZIII)Lclient!qf;") public static Sprite method3443(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) boolean arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4) { @Pc(27) int local27 = (arg2 ? 65536 : 0) + arg1 + (arg0 << 17) + (arg4 << 19); diff --git a/client/src/main/java/rt4/Static242.java b/client/src/main/java/rt4/Static242.java index 7bd608f..8ac7152 100644 --- a/client/src/main/java/rt4/Static242.java +++ b/client/src/main/java/rt4/Static242.java @@ -151,7 +151,7 @@ public final class Static242 { } local1.glEnableClientState(GL2.GL_COLOR_ARRAY); local1.glDepthMask(true); - GlRenderer.method4173(); + GlRenderer.restoreLighting(); } @OriginalMember(owner = "client!tj", name = "a", descriptor = "([BIIIII)Z") diff --git a/client/src/main/java/rt4/Static247.java b/client/src/main/java/rt4/Static247.java index 69f56d4..2aecb60 100644 --- a/client/src/main/java/rt4/Static247.java +++ b/client/src/main/java/rt4/Static247.java @@ -70,7 +70,7 @@ public final class Static247 { local31 = SceneGraph.tiles[local24]; @Pc(33) float local33 = 0.0F; if (GlRenderer.enabled) { - if (Static80.underWaterTileHeightMap == SceneGraph.tileHeights) { + if (SceneGraph.underwaterTileHeights == SceneGraph.tileHeights) { var9 = Static62.anIntArrayArray11[local18][local21]; var10 = var9 & 0xFFFFFF; if (var10 != Static152.anInt3604) { diff --git a/client/src/main/java/rt4/Static248.java b/client/src/main/java/rt4/Static248.java index 93a6316..1027618 100644 --- a/client/src/main/java/rt4/Static248.java +++ b/client/src/main/java/rt4/Static248.java @@ -74,13 +74,13 @@ public final class Static248 { } } } - @Pc(240) boolean local240 = SceneGraph.tileHeights == Static80.underWaterTileHeightMap; + @Pc(240) boolean local240 = SceneGraph.tileHeights == SceneGraph.underwaterTileHeights; if (GlRenderer.enabled) { - @Pc(244) GL2 local244 = GlRenderer.gl; - local244.glPushMatrix(); - local244.glTranslatef((float) -arg0, (float) -arg1, (float) -arg2); + @Pc(244) GL2 gl = GlRenderer.gl; + gl.glPushMatrix(); + gl.glTranslatef((float) -arg0, (float) -arg1, (float) -arg2); if (local240) { - Static156.method2959(); + UnderwaterMaterialRenderer.applyFogFade(); MaterialManager.setMaterial(-1, 3); MaterialManager.renderingUnderwater = true; UnderwaterMaterialRenderer.method4609(); @@ -88,10 +88,10 @@ public final class Static248 { Static22.anInt730 = -1; for (local32 = 0; local32 < Static182.aClass3_Sub14ArrayArray2[0].length; local32++) { @Pc(285) GlTile local285 = Static182.aClass3_Sub14ArrayArray2[0][local32]; - @Pc(294) float local294 = 251.5F - (local285.aBoolean140 ? 1.0F : 0.5F); - if (local285.anInt2486 != Static152.anInt3604) { - Static152.anInt3604 = local285.anInt2486; - WaterMaterialRenderer.method619(local285.anInt2486); + @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); Static161.method3066(WaterMaterialRenderer.method2422()); } local285.method1944(SceneGraph.tiles, local294, false); @@ -106,9 +106,9 @@ public final class Static248 { } for (local37 = 0; local37 < Static182.aClass3_Sub14ArrayArray2[local32].length; local37++) { @Pc(336) GlTile local336 = Static182.aClass3_Sub14ArrayArray2[local32][local37]; - @Pc(350) float local350 = 201.5F - (float) local32 * 50.0F - (local336.aBoolean140 ? 1.0F : 0.5F); - if (local336.anInt2485 != -1 && Rasteriser.textureProvider.method3237(local336.anInt2485) == 4 && Preferences.highWaterDetail) { - WaterMaterialRenderer.method619(local336.anInt2486); + @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(SceneGraph.tiles, local350, false); } @@ -119,7 +119,7 @@ public final class Static248 { local32++; } } - local244.glPopMatrix(); + gl.glPopMatrix(); } @Pc(434) int local434; @Pc(438) int local438; diff --git a/client/src/main/java/rt4/Static253.java b/client/src/main/java/rt4/Static253.java index 1c7a1b9..d14a038 100644 --- a/client/src/main/java/rt4/Static253.java +++ b/client/src/main/java/rt4/Static253.java @@ -109,7 +109,7 @@ public final class Static253 { client.audioLoop(); @Pc(387) byte local387 = Static236.method4047() == 2 ? (byte) Static136.anInt3325 : 1; if (GlRenderer.enabled) { - GlRenderer.method4173(); + GlRenderer.restoreLighting(); GlRenderer.setDepthTestEnabled(true); GlRenderer.setFogEnabled(true); if (client.gameState == 10) { diff --git a/client/src/main/java/rt4/Static278.java b/client/src/main/java/rt4/Static278.java index 96b3b8b..d0e1f3e 100644 --- a/client/src/main/java/rt4/Static278.java +++ b/client/src/main/java/rt4/Static278.java @@ -30,7 +30,7 @@ public final class Static278 { public static void setRenderTiles(@OriginalArg(0) boolean arg0) { if (arg0) { SceneGraph.tiles = SceneGraph.underWaterGroundTiles; - SceneGraph.tileHeights = Static80.underWaterTileHeightMap; + SceneGraph.tileHeights = SceneGraph.underwaterTileHeights; Static182.aClass3_Sub14ArrayArray2 = SceneGraph.underWaterHdTiles; } else { SceneGraph.tiles = SceneGraph.surfaceGroundTiles; diff --git a/client/src/main/java/rt4/Static28.java b/client/src/main/java/rt4/Static28.java index ff5a17f..416e53a 100644 --- a/client/src/main/java/rt4/Static28.java +++ b/client/src/main/java/rt4/Static28.java @@ -18,14 +18,14 @@ public final class Static28 { if (hasUnderWaterMap) { SceneGraph.underWaterGroundTiles = new Tile[1][SceneGraph.mapSizeX][SceneGraph.mapSizeZ]; Static62.anIntArrayArray11 = new int[SceneGraph.mapSizeX][SceneGraph.mapSizeZ]; - Static80.underWaterTileHeightMap = new int[1][SceneGraph.mapSizeX + 1][SceneGraph.mapSizeZ + 1]; + SceneGraph.underwaterTileHeights = new int[1][SceneGraph.mapSizeX + 1][SceneGraph.mapSizeZ + 1]; if (GlRenderer.enabled) { SceneGraph.underWaterHdTiles = new GlTile[1][]; } } else { SceneGraph.underWaterGroundTiles = null; Static62.anIntArrayArray11 = null; - Static80.underWaterTileHeightMap = null; + SceneGraph.underwaterTileHeights = null; SceneGraph.underWaterHdTiles = null; } Static278.setRenderTiles(false); diff --git a/client/src/main/java/rt4/Static45.java b/client/src/main/java/rt4/Static45.java index ca16a21..b9612ae 100644 --- a/client/src/main/java/rt4/Static45.java +++ b/client/src/main/java/rt4/Static45.java @@ -231,7 +231,7 @@ public final class Static45 { @Pc(1834) int local1834 = SceneGraph.tileOverlays[local152][local322][local1794] & 0xFF; if (local1834 != 0) { @Pc(1842) FloType local1842 = FloTypeList.method4395(local1834 - 1); - if (local1842.texture != -1 && Rasteriser.textureProvider.method3237(local1842.texture) == 4) { + if (local1842.texture != -1 && Rasteriser.textureProvider.getMaterialType(local1842.texture) == MaterialManager.WATER) { Static62.anIntArrayArray11[local168][local173] = local1842.anInt5889 + (local1842.anInt5898 << 24); continue label771; } @@ -248,7 +248,7 @@ public final class Static45 { @Pc(1353) int local1353; @Pc(1288) int local1288; if (GlRenderer.enabled && !underwater && Static62.anIntArrayArray11 != null && local152 == 0) { - if (local1248.texture != -1 && Rasteriser.textureProvider.method3237(local1248.texture) == 4) { + if (local1248.texture != -1 && Rasteriser.textureProvider.getMaterialType(local1248.texture) == MaterialManager.WATER) { Static62.anIntArrayArray11[local168][local173] = (local1248.anInt5898 << 24) + local1248.anInt5889; } else { label737: for (local1288 = local168 - 1; local1288 <= local168 + 1; local1288++) { @@ -257,7 +257,7 @@ public final class Static45 { local1353 = SceneGraph.tileOverlays[local152][local1288][local1301] & 0xFF; if (local1353 != 0) { @Pc(1366) FloType local1366 = FloTypeList.method4395(local1353 - 1); - if (local1366.texture != -1 && Rasteriser.textureProvider.method3237(local1366.texture) == 4) { + if (local1366.texture != -1 && Rasteriser.textureProvider.getMaterialType(local1366.texture) == MaterialManager.WATER) { Static62.anIntArrayArray11[local168][local173] = local1366.anInt5889 + (local1366.anInt5898 << 24); break label737; } diff --git a/client/src/main/java/rt4/Static80.java b/client/src/main/java/rt4/Static80.java index f524318..167369c 100644 --- a/client/src/main/java/rt4/Static80.java +++ b/client/src/main/java/rt4/Static80.java @@ -10,10 +10,7 @@ public final class Static80 { @OriginalMember(owner = "client!gf", name = "M", descriptor = "I") public static int anInt4698; - @OriginalMember(owner = "client!gf", name = "O", descriptor = "[[[I") - public static int[][][] underWaterTileHeightMap; - - @OriginalMember(owner = "client!gf", name = "R", descriptor = "I") + @OriginalMember(owner = "client!gf", name = "R", descriptor = "I") public static int centralZoneX; @OriginalMember(owner = "client!gf", name = "S", descriptor = "[I") diff --git a/client/src/main/java/rt4/Static87.java b/client/src/main/java/rt4/Static87.java index 4290041..ca4224a 100644 --- a/client/src/main/java/rt4/Static87.java +++ b/client/src/main/java/rt4/Static87.java @@ -700,7 +700,7 @@ public final class Static87 { GlRenderer.method4148(local556, local545, color, cardMemory); GlRenderer.method4152((float) local30.aShort10, (float) local30.aShort11 * 1.5F); } - GlRenderer.method4173(); + GlRenderer.restoreLighting(); GlRenderer.setDepthTestEnabled(true); GlRenderer.setFogEnabled(false); Static229.method3935(Preferences.brightness); diff --git a/client/src/main/java/rt4/TextureProvider.java b/client/src/main/java/rt4/TextureProvider.java index bc3fd45..a1e7541 100644 --- a/client/src/main/java/rt4/TextureProvider.java +++ b/client/src/main/java/rt4/TextureProvider.java @@ -41,7 +41,7 @@ public interface TextureProvider { boolean method3236(@OriginalArg(0) int arg0); @OriginalMember(owner = "client!m", name = "g", descriptor = "(II)I") - int method3237(@OriginalArg(0) int arg0); + int getMaterialType(@OriginalArg(0) int arg0); @OriginalMember(owner = "client!m", name = "h", descriptor = "(II)I") int method3238(@OriginalArg(1) int arg0); diff --git a/client/src/main/java/rt4/UnderwaterMaterialRenderer.java b/client/src/main/java/rt4/UnderwaterMaterialRenderer.java index 9703b71..bdceaef 100644 --- a/client/src/main/java/rt4/UnderwaterMaterialRenderer.java +++ b/client/src/main/java/rt4/UnderwaterMaterialRenderer.java @@ -64,7 +64,33 @@ public final class UnderwaterMaterialRenderer implements MaterialRenderer { local1.glClientActiveTexture(GL2.GL_TEXTURE0); } - @OriginalMember(owner = "client!wg", name = "d", descriptor = "()V") + @OriginalMember(owner = "client!mf", name = "a", descriptor = "()V") + public static void applyFogFade() { + @Pc(1) GL2 gl = GlRenderer.gl; + gl.glDisableClientState(GL2.GL_COLOR_ARRAY); + GlRenderer.setLightingEnabled(false); + gl.glDisable(GL2.GL_DEPTH_TEST); + gl.glPushAttrib(GL2.GL_FOG_BIT); + gl.glFogf(GL2.GL_FOG_START, (float) GlobalConfig.VIEW_DISTANCE - (GlobalConfig.VIEW_FADE_DISTANCE * 2.0f)); + GlRenderer.disableDepthMask(); + try { + for (@Pc(19) int i = 0; i < SceneGraph.surfaceHdTiles[0].length; i++) { + @Pc(31) GlTile tile = SceneGraph.surfaceHdTiles[0][i]; + if (tile.texture >= 0 && Rasteriser.textureProvider.getMaterialType(tile.texture) == MaterialManager.WATER) { + gl.glColor4fv(ColorUtils.getRgbFloat(tile.underwaterColor), 0); + @Pc(57) float f = 201.5F - (tile.blend ? 1.0F : 0.5F); + tile.method1944(SceneGraph.tiles, f, true); + } + } + } catch (Exception ignored) {} + gl.glEnableClientState(GL2.GL_COLOR_ARRAY); + GlRenderer.restoreLighting(); + gl.glEnable(GL2.GL_DEPTH_TEST); + gl.glPopAttrib(); + GlRenderer.enableDepthMask(); + } + + @OriginalMember(owner = "client!wg", name = "d", descriptor = "()V") private void method4606() { @Pc(1) GL2 local1 = GlRenderer.gl; this.anInt5806 = local1.glGenLists(2); diff --git a/playground/src/main/java/com/itspazaz/rt4/Playground.java b/playground/src/main/java/com/itspazaz/rt4/Playground.java index e3f9063..48dbb76 100644 --- a/playground/src/main/java/com/itspazaz/rt4/Playground.java +++ b/playground/src/main/java/com/itspazaz/rt4/Playground.java @@ -212,7 +212,7 @@ public class Playground extends GameShell { GlRenderer.init(GameShell.canvas, 0); if (GlRenderer.enabled) { GlRenderer.setCanvasSize(GameShell.canvasWidth, GameShell.canvasHeight); - GlRenderer.method4173(); + GlRenderer.restoreLighting(); float yaw1 = yaw * 360.0F / 6.2831855F; float pitch1 = pitch * 360.0F / 6.2831855F; GlRenderer.method4171(0, 0, GameShell.canvasWidth, GameShell.canvasHeight, GameShell.canvasWidth / 2, GameShell.canvasHeight / 2, yaw1, pitch1, zoom2d, zoom3d);