project: Mixins for HD
This commit is contained in:
@@ -77,7 +77,14 @@ public class DeobAnnotations
|
||||
@Nullable
|
||||
public static String getImplements(@NotNull ClassFile cf)
|
||||
{
|
||||
return getStringValue(cf, IMPLEMENTS);
|
||||
String stringValue = getStringValue(cf, IMPLEMENTS);
|
||||
|
||||
if (stringValue != null)
|
||||
{
|
||||
stringValue = flatten(stringValue);
|
||||
}
|
||||
|
||||
return stringValue;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -114,4 +121,9 @@ public class DeobAnnotations
|
||||
final var a = an.findAnnotation(type);
|
||||
return a == null ? null : a.getValueString();
|
||||
}
|
||||
|
||||
public static String flatten(String className)
|
||||
{
|
||||
return className.substring(className.lastIndexOf('/') + 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.google.common.cache.Cache;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import java.math.BigInteger;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashSet;
|
||||
@@ -2290,5 +2291,25 @@ public abstract class RSClientMixin implements RSClient
|
||||
|
||||
@Inject
|
||||
public static RSArchive[] archives = new RSArchive[21];
|
||||
|
||||
@Inject
|
||||
@FieldHook("rndHue")
|
||||
public static void rndHue(int idx)
|
||||
{
|
||||
int rndHue = client.getRndHue();
|
||||
|
||||
if (rndHue >= -8 && rndHue <= 8)
|
||||
{
|
||||
RSScene scene = client.getScene();
|
||||
|
||||
byte[][][] underlays = client.getTileUnderlays();
|
||||
byte[][][] overlays = client.getTileOverlays();
|
||||
byte[][][] tileShapes = client.getTileShapes();
|
||||
|
||||
scene.setUnderlayIds(Arrays.copyOf(underlays, underlays.length));
|
||||
scene.setOverlayIds(Arrays.copyOf(overlays, overlays.length));
|
||||
scene.setTileShapes(Arrays.copyOf(tileShapes, tileShapes.length));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ import net.runelite.api.mixins.Shadow;
|
||||
import net.runelite.rs.api.RSClient;
|
||||
import net.runelite.rs.api.RSModel;
|
||||
import net.runelite.rs.api.RSModelData;
|
||||
import net.runelite.rs.api.RSVertexNormal;
|
||||
|
||||
@Mixin(RSModelData.class)
|
||||
public abstract class RSModelDataMixin implements RSModelData
|
||||
@@ -43,6 +44,15 @@ public abstract class RSModelDataMixin implements RSModelData
|
||||
@Inject
|
||||
private float[] faceTextureUVCoordinates;
|
||||
|
||||
@Inject
|
||||
private int[] vertexNormalsX;
|
||||
|
||||
@Inject
|
||||
private int[] vertexNormalsY;
|
||||
|
||||
@Inject
|
||||
private int[] vertexNormalsZ;
|
||||
|
||||
@Copy("toModel")
|
||||
@Replace("toModel")
|
||||
@SuppressWarnings("InfiniteRecursion")
|
||||
@@ -61,11 +71,50 @@ public abstract class RSModelDataMixin implements RSModelData
|
||||
computeTextureUVCoordinates();
|
||||
}
|
||||
|
||||
vertexNormals();
|
||||
|
||||
RSModel rsModel = (RSModel) model;
|
||||
rsModel.setVertexNormalsX(vertexNormalsX);
|
||||
rsModel.setVertexNormalsY(vertexNormalsY);
|
||||
rsModel.setVertexNormalsZ(vertexNormalsZ);
|
||||
rsModel.setFaceTextureUVCoordinates(faceTextureUVCoordinates);
|
||||
return model;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void vertexNormals()
|
||||
{
|
||||
RSVertexNormal[] vertexNormals = getVertexNormals();
|
||||
RSVertexNormal[] vertexVertices = getVertexVertices();
|
||||
|
||||
if (vertexNormals != null && vertexNormalsX == null)
|
||||
{
|
||||
int verticesCount = getVerticesCount();
|
||||
|
||||
vertexNormalsX = new int[verticesCount];
|
||||
vertexNormalsY = new int[verticesCount];
|
||||
vertexNormalsZ = new int[verticesCount];
|
||||
|
||||
for (int i = 0; i < verticesCount; ++i)
|
||||
{
|
||||
RSVertexNormal vertexNormal;
|
||||
|
||||
if (vertexVertices != null && (vertexNormal = vertexVertices[i]) != null)
|
||||
{
|
||||
vertexNormalsX[i] = vertexNormal.getX();
|
||||
vertexNormalsY[i] = vertexNormal.getY();
|
||||
vertexNormalsZ[i] = vertexNormal.getZ();
|
||||
}
|
||||
else if ((vertexNormal = vertexNormals[i]) != null)
|
||||
{
|
||||
vertexNormalsX[i] = vertexNormal.getX();
|
||||
vertexNormalsY[i] = vertexNormal.getY();
|
||||
vertexNormalsZ[i] = vertexNormal.getZ();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void computeTextureUVCoordinates()
|
||||
{
|
||||
@@ -171,6 +220,6 @@ public abstract class RSModelDataMixin implements RSModelData
|
||||
}
|
||||
}
|
||||
|
||||
this.faceTextureUVCoordinates = faceTextureUCoordinates;
|
||||
faceTextureUVCoordinates = faceTextureUCoordinates;
|
||||
}
|
||||
}
|
||||
@@ -63,13 +63,22 @@ public abstract class RSModelMixin implements RSModel
|
||||
@Inject
|
||||
private float[] rl$faceTextureUVCoordinates;
|
||||
|
||||
@Inject
|
||||
private int[] rl$vertexNormalsX;
|
||||
|
||||
@Inject
|
||||
private int[] rl$vertexNormalsY;
|
||||
|
||||
@Inject
|
||||
private int[] rl$vertexNormalsZ;
|
||||
|
||||
@MethodHook(value = "<init>", end = true)
|
||||
@Inject
|
||||
public void rl$init(RSModel[] models, int length)
|
||||
{
|
||||
if (this.getFaceTextures() != null)
|
||||
if (getFaceTextures() != null)
|
||||
{
|
||||
int count = this.getTrianglesCount();
|
||||
int count = getTrianglesCount();
|
||||
float[] uv = new float[count * 6];
|
||||
int idx = 0;
|
||||
|
||||
@@ -91,6 +100,8 @@ public abstract class RSModelMixin implements RSModel
|
||||
|
||||
setFaceTextureUVCoordinates(uv);
|
||||
}
|
||||
|
||||
vertexNormals();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -154,6 +165,9 @@ public abstract class RSModelMixin implements RSModel
|
||||
if (model != null && model != this)
|
||||
{
|
||||
RSModel rsModel = (RSModel) model;
|
||||
rsModel.setVertexNormalsX(rl$vertexNormalsX);
|
||||
rsModel.setVertexNormalsY(rl$vertexNormalsY);
|
||||
rsModel.setVertexNormalsZ(rl$vertexNormalsZ);
|
||||
rsModel.setFaceTextureUVCoordinates(rl$faceTextureUVCoordinates);
|
||||
}
|
||||
return model;
|
||||
@@ -176,6 +190,9 @@ public abstract class RSModelMixin implements RSModel
|
||||
{
|
||||
// Animated models are usually a shared Model instance that is global
|
||||
RSModel rsModel = (RSModel) sharedModel;
|
||||
rsModel.setVertexNormalsX(rl$vertexNormalsX);
|
||||
rsModel.setVertexNormalsY(rl$vertexNormalsY);
|
||||
rsModel.setVertexNormalsZ(rl$vertexNormalsZ);
|
||||
rsModel.setFaceTextureUVCoordinates(rl$faceTextureUVCoordinates);
|
||||
}
|
||||
|
||||
@@ -217,7 +234,7 @@ public abstract class RSModelMixin implements RSModel
|
||||
for (int i = 0; i < frame.getTransformCount(); i++)
|
||||
{
|
||||
int type = frame.getTransformTypes()[i];
|
||||
this.animate(skin.getTypes()[type], skin.getList()[type], frame.getTranslatorX()[i],
|
||||
animate(skin.getTypes()[type], skin.getList()[type], frame.getTranslatorX()[i],
|
||||
frame.getTranslatorY()[i], frame.getTranslatorZ()[i]);
|
||||
}
|
||||
}
|
||||
@@ -316,10 +333,10 @@ public abstract class RSModelMixin implements RSModel
|
||||
@Inject
|
||||
public Shape getConvexHull(int localX, int localY, int orientation, int tileHeight)
|
||||
{
|
||||
int[] x2d = new int[this.getVerticesCount()];
|
||||
int[] y2d = new int[this.getVerticesCount()];
|
||||
int[] x2d = new int[getVerticesCount()];
|
||||
int[] y2d = new int[getVerticesCount()];
|
||||
|
||||
Perspective.modelToCanvas(client, this.getVerticesCount(), localX, localY, tileHeight, orientation, this.getVerticesX(), this.getVerticesZ(), this.getVerticesY(), x2d, y2d);
|
||||
Perspective.modelToCanvas(client, getVerticesCount(), localX, localY, tileHeight, orientation, getVerticesX(), getVerticesZ(), getVerticesY(), x2d, y2d);
|
||||
|
||||
return Jarvis.convexHull(x2d, y2d);
|
||||
}
|
||||
@@ -335,7 +352,7 @@ public abstract class RSModelMixin implements RSModel
|
||||
@Override
|
||||
public void setSceneId(int sceneId)
|
||||
{
|
||||
this.rl$sceneId = sceneId;
|
||||
rl$sceneId = sceneId;
|
||||
}
|
||||
|
||||
@Inject
|
||||
@@ -377,6 +394,114 @@ public abstract class RSModelMixin implements RSModel
|
||||
@Override
|
||||
public void setFaceTextureUVCoordinates(float[] faceTextureUVCoordinates)
|
||||
{
|
||||
this.rl$faceTextureUVCoordinates = faceTextureUVCoordinates;
|
||||
rl$faceTextureUVCoordinates = faceTextureUVCoordinates;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void vertexNormals()
|
||||
{
|
||||
if (rl$vertexNormalsX == null)
|
||||
{
|
||||
int verticesCount = getVerticesCount();
|
||||
|
||||
rl$vertexNormalsX = new int[verticesCount];
|
||||
rl$vertexNormalsY = new int[verticesCount];
|
||||
rl$vertexNormalsZ = new int[verticesCount];
|
||||
|
||||
int[] trianglesX = getTrianglesX();
|
||||
int[] trianglesY = getTrianglesY();
|
||||
int[] trianglesZ = getTrianglesZ();
|
||||
int[] verticesX = getVerticesX();
|
||||
int[] verticesY = getVerticesY();
|
||||
int[] verticesZ = getVerticesZ();
|
||||
|
||||
for (int i = 0; i < getTrianglesCount(); ++i)
|
||||
{
|
||||
int var9 = trianglesX[i];
|
||||
int var10 = trianglesY[i];
|
||||
int var11 = trianglesZ[i];
|
||||
|
||||
int var12 = verticesX[var10] - verticesX[var9];
|
||||
int var13 = verticesY[var10] - verticesY[var9];
|
||||
int var14 = verticesZ[var10] - verticesZ[var9];
|
||||
int var15 = verticesX[var11] - verticesX[var9];
|
||||
int var16 = verticesY[var11] - verticesY[var9];
|
||||
int var17 = verticesZ[var11] - verticesZ[var9];
|
||||
|
||||
int var18 = var13 * var17 - var16 * var14;
|
||||
int var19 = var14 * var15 - var17 * var12;
|
||||
|
||||
int var20;
|
||||
for (var20 = var12 * var16 - var15 * var13; var18 > 8192 || var19 > 8192 || var20 > 8192 || var18 < -8192 || var19 < -8192 || var20 < -8192; var20 >>= 1)
|
||||
{
|
||||
var18 >>= 1;
|
||||
var19 >>= 1;
|
||||
}
|
||||
|
||||
int var21 = (int) Math.sqrt(var18 * var18 + var19 * var19 + var20 * var20);
|
||||
if (var21 <= 0)
|
||||
{
|
||||
var21 = 1;
|
||||
}
|
||||
|
||||
var18 = var18 * 256 / var21;
|
||||
var19 = var19 * 256 / var21;
|
||||
var20 = var20 * 256 / var21;
|
||||
|
||||
rl$vertexNormalsX[var9] += var18;
|
||||
rl$vertexNormalsY[var9] += var19;
|
||||
rl$vertexNormalsZ[var9] += var20;
|
||||
|
||||
rl$vertexNormalsX[var10] += var18;
|
||||
rl$vertexNormalsY[var10] += var19;
|
||||
rl$vertexNormalsZ[var10] += var20;
|
||||
|
||||
rl$vertexNormalsX[var11] += var18;
|
||||
rl$vertexNormalsY[var11] += var19;
|
||||
rl$vertexNormalsZ[var11] += var20;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public int[] getVertexNormalsX()
|
||||
{
|
||||
return rl$vertexNormalsX;
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public void setVertexNormalsX(int[] vertexNormalsX)
|
||||
{
|
||||
rl$vertexNormalsX = vertexNormalsX;
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public int[] getVertexNormalsY()
|
||||
{
|
||||
return rl$vertexNormalsY;
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public void setVertexNormalsY(int[] vertexNormalsY)
|
||||
{
|
||||
rl$vertexNormalsY = vertexNormalsY;
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public int[] getVertexNormalsZ()
|
||||
{
|
||||
return rl$vertexNormalsZ;
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public void setVertexNormalsZ(int[] vertexNormalsZ)
|
||||
{
|
||||
rl$vertexNormalsZ = vertexNormalsZ;
|
||||
}
|
||||
}
|
||||
@@ -99,6 +99,15 @@ public abstract class RSSceneMixin implements RSScene
|
||||
@Inject
|
||||
private static int rl$hoverY = -1;
|
||||
|
||||
@Inject
|
||||
private static byte[][][] rl$underlayIds;
|
||||
|
||||
@Inject
|
||||
private static byte[][][] rl$overlayIds;
|
||||
|
||||
@Inject
|
||||
private static byte[][][] rl$tileShapes;
|
||||
|
||||
@Replace("draw")
|
||||
void drawScene(int cameraX, int cameraY, int cameraZ, int cameraPitch, int cameraYaw, int plane)
|
||||
{
|
||||
@@ -1120,7 +1129,7 @@ public abstract class RSSceneMixin implements RSScene
|
||||
Tile tile = tiles[plane][x][y];
|
||||
if (tile != null && rl$tiles[plane][x][y] == 0 && blocking(plane, x, y))
|
||||
{
|
||||
this.iterateDeque(tile, var2);
|
||||
iterateDeque(tile, var2);
|
||||
++var2;
|
||||
}
|
||||
}
|
||||
@@ -1189,4 +1198,46 @@ public abstract class RSSceneMixin implements RSScene
|
||||
rl$hoverY = y;
|
||||
}
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public byte[][][] getUnderlayIds()
|
||||
{
|
||||
return rl$underlayIds;
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public void setUnderlayIds(byte[][][] underlayIds)
|
||||
{
|
||||
rl$underlayIds = underlayIds;
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public byte[][][] getOverlayIds()
|
||||
{
|
||||
return rl$overlayIds;
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public void setOverlayIds(byte[][][] overlayIds)
|
||||
{
|
||||
rl$overlayIds = overlayIds;
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public byte[][][] getTileShapes()
|
||||
{
|
||||
return rl$tileShapes;
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public void setTileShapes(byte[][][] tileShapes)
|
||||
{
|
||||
rl$tileShapes = tileShapes;
|
||||
}
|
||||
}
|
||||
@@ -1439,4 +1439,16 @@ public interface RSClient extends RSGameEngine, Client
|
||||
|
||||
@Import("readStringIntParameters")
|
||||
RSIterableNodeHashTable readStringIntParameters(RSBuffer buffer, RSIterableNodeHashTable table);
|
||||
|
||||
@Import("rndHue")
|
||||
int getRndHue();
|
||||
|
||||
@Import("Tiles_underlays")
|
||||
byte[][][] getTileUnderlays();
|
||||
|
||||
@Import("Tiles_overlays")
|
||||
byte[][][] getTileOverlays();
|
||||
|
||||
@Import("Tiles_shapes")
|
||||
byte[][][] getTileShapes();
|
||||
}
|
||||
|
||||
@@ -170,5 +170,14 @@ public interface RSModel extends RSRenderable, Model
|
||||
Shape getConvexHull(int localX, int localY, int orientation, int tileHeight);
|
||||
|
||||
float[] getFaceTextureUVCoordinates();
|
||||
void setFaceTextureUVCoordinates(float[] rl$faceTextureUVCoordinates);
|
||||
void setFaceTextureUVCoordinates(float[] faceTextureUVCoordinates);
|
||||
|
||||
int[] getVertexNormalsX();
|
||||
void setVertexNormalsX(int[] vertexNormalsX);
|
||||
|
||||
int[] getVertexNormalsY();
|
||||
void setVertexNormalsY(int[] vertexNormalsY);
|
||||
|
||||
int[] getVertexNormalsZ();
|
||||
void setVertexNormalsZ(int[] vertexNormalsZ);
|
||||
}
|
||||
|
||||
@@ -42,4 +42,13 @@ public interface RSModelData extends RSRenderable
|
||||
|
||||
@Import("textureRenderTypes")
|
||||
byte[] getTextureRenderTypes();
|
||||
|
||||
@Import("verticesCount")
|
||||
int getVerticesCount();
|
||||
|
||||
@Import("vertexNormals")
|
||||
RSVertexNormal[] getVertexNormals();
|
||||
|
||||
@Import("vertexVertices")
|
||||
RSVertexNormal[] getVertexVertices();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
package net.runelite.rs.api;
|
||||
|
||||
public interface RSOAuthTokens {}
|
||||
@@ -55,4 +55,13 @@ public interface RSScene extends Scene
|
||||
|
||||
@Import("removeGameObject")
|
||||
void removeGameObject(GameObject gameObject);
|
||||
|
||||
byte[][][] getUnderlayIds();
|
||||
void setUnderlayIds(byte[][][] underlayIds);
|
||||
|
||||
byte[][][] getOverlayIds();
|
||||
void setOverlayIds(byte[][][] overlayIds);
|
||||
|
||||
byte[][][] getTileShapes();
|
||||
void setTileShapes(byte[][][] tileShapes);
|
||||
}
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
package net.runelite.rs.api;
|
||||
|
||||
public interface RSVertexNormal {}
|
||||
import net.runelite.mapping.Import;
|
||||
|
||||
public interface RSVertexNormal
|
||||
{
|
||||
@Import("x")
|
||||
int getX();
|
||||
|
||||
@Import("y")
|
||||
int getY();
|
||||
|
||||
@Import("z")
|
||||
int getZ();
|
||||
}
|
||||
|
||||
@@ -1860,9 +1860,9 @@ public final class Client extends GameEngine implements Usernamed, OAuthTokens {
|
||||
|
||||
class1.playPcmPlayers();
|
||||
Tiles.Tiles_minPlane = 99;
|
||||
class6.field13 = new byte[4][104][104];
|
||||
Tiles.field974 = new byte[4][104][104];
|
||||
Tiles.field978 = new byte[4][104][104];
|
||||
class6.Tiles_underlays = new byte[4][104][104];
|
||||
Tiles.Tiles_overlays = new byte[4][104][104];
|
||||
Tiles.Tiles_shapes = new byte[4][104][104];
|
||||
Tiles.field977 = new byte[4][104][104];
|
||||
class113.field1367 = new int[4][105][105];
|
||||
FloorUnderlayDefinition.field1769 = new byte[4][105][105];
|
||||
@@ -2233,22 +2233,22 @@ public final class Client extends GameEngine implements Usernamed, OAuthTokens {
|
||||
}
|
||||
}
|
||||
|
||||
Tiles.field987 += (int)(Math.random() * 5.0D) - 2;
|
||||
if (Tiles.field987 < -8) {
|
||||
Tiles.field987 = -8;
|
||||
Tiles.rndHue += (int)(Math.random() * 5.0D) - 2;
|
||||
if (Tiles.rndHue < -8) {
|
||||
Tiles.rndHue = -8;
|
||||
}
|
||||
|
||||
if (Tiles.field987 > 8) {
|
||||
Tiles.field987 = 8;
|
||||
if (Tiles.rndHue > 8) {
|
||||
Tiles.rndHue = 8;
|
||||
}
|
||||
|
||||
Tiles.field988 += (int)(Math.random() * 5.0D) - 2;
|
||||
if (Tiles.field988 < -16) {
|
||||
Tiles.field988 = -16;
|
||||
Tiles.rndLightness += (int)(Math.random() * 5.0D) - 2;
|
||||
if (Tiles.rndLightness < -16) {
|
||||
Tiles.rndLightness = -16;
|
||||
}
|
||||
|
||||
if (Tiles.field988 > 16) {
|
||||
Tiles.field988 = 16;
|
||||
if (Tiles.rndLightness > 16) {
|
||||
Tiles.rndLightness = 16;
|
||||
}
|
||||
|
||||
int var59;
|
||||
@@ -2286,7 +2286,7 @@ public final class Client extends GameEngine implements Usernamed, OAuthTokens {
|
||||
var16 = var14 + 5;
|
||||
int var10002;
|
||||
if (var16 >= 0 && var16 < 104) {
|
||||
var17 = class6.field13[var53][var16][var15] & 255;
|
||||
var17 = class6.Tiles_underlays[var53][var16][var15] & 255;
|
||||
if (var17 > 0) {
|
||||
FloorUnderlayDefinition var76 = TaskHandler.method2740(var17 - 1);
|
||||
var10000 = DirectByteArrayCopier.Tiles_hue;
|
||||
@@ -2303,7 +2303,7 @@ public final class Client extends GameEngine implements Usernamed, OAuthTokens {
|
||||
|
||||
var17 = var14 - 5;
|
||||
if (var17 >= 0 && var17 < 104) {
|
||||
var59 = class6.field13[var53][var17][var15] & 255;
|
||||
var59 = class6.Tiles_underlays[var53][var17][var15] & 255;
|
||||
if (var59 > 0) {
|
||||
FloorUnderlayDefinition var77 = TaskHandler.method2740(var59 - 1);
|
||||
var10000 = DirectByteArrayCopier.Tiles_hue;
|
||||
@@ -2350,8 +2350,8 @@ public final class Client extends GameEngine implements Usernamed, OAuthTokens {
|
||||
Tiles.Tiles_minPlane = var53;
|
||||
}
|
||||
|
||||
var23 = class6.field13[var53][var14][var61] & 255;
|
||||
var24 = Tiles.field974[var53][var14][var61] & 255;
|
||||
var23 = class6.Tiles_underlays[var53][var14][var61] & 255;
|
||||
var24 = Tiles.Tiles_overlays[var53][var14][var61] & 255;
|
||||
if (var23 > 0 || var24 > 0) {
|
||||
var25 = Tiles.Tiles_heights[var53][var14][var61];
|
||||
var26 = Tiles.Tiles_heights[var53][var14 + 1][var61];
|
||||
@@ -2368,8 +2368,8 @@ public final class Client extends GameEngine implements Usernamed, OAuthTokens {
|
||||
var36 = var16 / var60;
|
||||
var37 = var17 / var60;
|
||||
var33 = PlatformInfo.hslToRgb(var35, var36, var37);
|
||||
var35 = var35 + Tiles.field987 & 255;
|
||||
var37 += Tiles.field988;
|
||||
var35 = var35 + Tiles.rndHue & 255;
|
||||
var37 += Tiles.rndLightness;
|
||||
if (var37 < 0) {
|
||||
var37 = 0;
|
||||
} else if (var37 > 255) {
|
||||
@@ -2382,7 +2382,7 @@ public final class Client extends GameEngine implements Usernamed, OAuthTokens {
|
||||
FloorOverlayDefinition var63;
|
||||
if (var53 > 0) {
|
||||
boolean var79 = true;
|
||||
if (var23 == 0 && Tiles.field978[var53][var14][var61] != 0) {
|
||||
if (var23 == 0 && Tiles.Tiles_shapes[var53][var14][var61] != 0) {
|
||||
var79 = false;
|
||||
}
|
||||
|
||||
@@ -2423,7 +2423,7 @@ public final class Client extends GameEngine implements Usernamed, OAuthTokens {
|
||||
if (var24 == 0) {
|
||||
var72.addTile(var53, var14, var61, 0, 0, -1, var25, var26, var27, var28, WorldMapCacheName.method3873(var33, var29), WorldMapCacheName.method3873(var33, var30), WorldMapCacheName.method3873(var33, var62), WorldMapCacheName.method3873(var33, var32), 0, 0, 0, 0, var35, 0);
|
||||
} else {
|
||||
var36 = Tiles.field978[var53][var14][var61] + 1;
|
||||
var36 = Tiles.Tiles_shapes[var53][var14][var61] + 1;
|
||||
byte var80 = Tiles.field977[var53][var14][var61];
|
||||
var39 = var24 - 1;
|
||||
FloorOverlayDefinition var66 = (FloorOverlayDefinition)FloorOverlayDefinition.FloorOverlayDefinition_cached.get((long)var39);
|
||||
@@ -2451,8 +2451,8 @@ public final class Client extends GameEngine implements Usernamed, OAuthTokens {
|
||||
var43 = -2;
|
||||
} else {
|
||||
var42 = PlatformInfo.hslToRgb(var63.hue, var63.saturation, var63.lightness);
|
||||
var44 = var63.hue + Tiles.field987 & 255;
|
||||
var45 = var63.lightness + Tiles.field988;
|
||||
var44 = var63.hue + Tiles.rndHue & 255;
|
||||
var45 = var63.lightness + Tiles.rndLightness;
|
||||
if (var45 < 0) {
|
||||
var45 = 0;
|
||||
} else if (var45 > 255) {
|
||||
@@ -2468,8 +2468,8 @@ public final class Client extends GameEngine implements Usernamed, OAuthTokens {
|
||||
}
|
||||
|
||||
if (var63.secondaryRgb != -1) {
|
||||
var45 = var63.secondaryHue + Tiles.field987 & 255;
|
||||
var46 = var63.secondaryLightness + Tiles.field988;
|
||||
var45 = var63.secondaryHue + Tiles.rndHue & 255;
|
||||
var46 = var63.secondaryLightness + Tiles.rndLightness;
|
||||
if (var46 < 0) {
|
||||
var46 = 0;
|
||||
} else if (var46 > 255) {
|
||||
@@ -2494,9 +2494,9 @@ public final class Client extends GameEngine implements Usernamed, OAuthTokens {
|
||||
}
|
||||
}
|
||||
|
||||
class6.field13[var53] = null;
|
||||
Tiles.field974[var53] = null;
|
||||
Tiles.field978[var53] = null;
|
||||
class6.Tiles_underlays[var53] = null;
|
||||
Tiles.Tiles_overlays[var53] = null;
|
||||
Tiles.Tiles_shapes[var53] = null;
|
||||
Tiles.field977[var53] = null;
|
||||
FloorUnderlayDefinition.field1769[var53] = null;
|
||||
}
|
||||
@@ -2727,9 +2727,9 @@ public final class Client extends GameEngine implements Usernamed, OAuthTokens {
|
||||
|
||||
HealthBarUpdate.updateGameState(30);
|
||||
class1.playPcmPlayers();
|
||||
class6.field13 = null;
|
||||
Tiles.field974 = null;
|
||||
Tiles.field978 = null;
|
||||
class6.Tiles_underlays = null;
|
||||
Tiles.Tiles_overlays = null;
|
||||
Tiles.Tiles_shapes = null;
|
||||
Tiles.field977 = null;
|
||||
class113.field1367 = null;
|
||||
FloorUnderlayDefinition.field1769 = null;
|
||||
|
||||
@@ -106,7 +106,8 @@ public class ModelData extends Renderable {
|
||||
@ObfuscatedSignature(
|
||||
descriptor = "[Lhc;"
|
||||
)
|
||||
VertexNormal[] field2257;
|
||||
@Export("vertexVertices")
|
||||
VertexNormal[] vertexVertices;
|
||||
@ObfuscatedName("ad")
|
||||
@Export("ambient")
|
||||
public short ambient;
|
||||
@@ -375,7 +376,7 @@ public class ModelData extends Renderable {
|
||||
this.faceLabelsAlpha = var1.faceLabelsAlpha;
|
||||
this.vertexNormals = var1.vertexNormals;
|
||||
this.faceNormals = var1.faceNormals;
|
||||
this.field2257 = var1.field2257;
|
||||
this.vertexVertices = var1.vertexVertices;
|
||||
this.ambient = var1.ambient;
|
||||
this.contrast = var1.contrast;
|
||||
}
|
||||
@@ -1386,7 +1387,7 @@ public class ModelData extends Renderable {
|
||||
@Export("invalidate")
|
||||
void invalidate() {
|
||||
this.vertexNormals = null;
|
||||
this.field2257 = null;
|
||||
this.vertexVertices = null;
|
||||
this.faceNormals = null;
|
||||
this.isBoundsCalculated = false;
|
||||
}
|
||||
@@ -1542,24 +1543,24 @@ public class ModelData extends Renderable {
|
||||
}
|
||||
} else {
|
||||
int var15 = this.faceColors[var16] & '\uffff';
|
||||
if (this.field2257 != null && this.field2257[this.indices1[var16]] != null) {
|
||||
var13 = this.field2257[this.indices1[var16]];
|
||||
if (this.vertexVertices != null && this.vertexVertices[this.indices1[var16]] != null) {
|
||||
var13 = this.vertexVertices[this.indices1[var16]];
|
||||
} else {
|
||||
var13 = this.vertexNormals[this.indices1[var16]];
|
||||
}
|
||||
|
||||
var14 = (var4 * var13.y + var5 * var13.z + var3 * var13.x) / (var7 * var13.magnitude) + var1;
|
||||
var8.faceColors1[var16] = method3974(var15, var14);
|
||||
if (this.field2257 != null && this.field2257[this.indices2[var16]] != null) {
|
||||
var13 = this.field2257[this.indices2[var16]];
|
||||
if (this.vertexVertices != null && this.vertexVertices[this.indices2[var16]] != null) {
|
||||
var13 = this.vertexVertices[this.indices2[var16]];
|
||||
} else {
|
||||
var13 = this.vertexNormals[this.indices2[var16]];
|
||||
}
|
||||
|
||||
var14 = (var4 * var13.y + var5 * var13.z + var3 * var13.x) / (var7 * var13.magnitude) + var1;
|
||||
var8.faceColors2[var16] = method3974(var15, var14);
|
||||
if (this.field2257 != null && this.field2257[this.indices3[var16]] != null) {
|
||||
var13 = this.field2257[this.indices3[var16]];
|
||||
if (this.vertexVertices != null && this.vertexVertices[this.indices3[var16]] != null) {
|
||||
var13 = this.vertexVertices[this.indices3[var16]];
|
||||
} else {
|
||||
var13 = this.vertexNormals[this.indices3[var16]];
|
||||
}
|
||||
@@ -1577,24 +1578,24 @@ public class ModelData extends Renderable {
|
||||
var8.faceColors3[var16] = -2;
|
||||
}
|
||||
} else {
|
||||
if (this.field2257 != null && this.field2257[this.indices1[var16]] != null) {
|
||||
var13 = this.field2257[this.indices1[var16]];
|
||||
if (this.vertexVertices != null && this.vertexVertices[this.indices1[var16]] != null) {
|
||||
var13 = this.vertexVertices[this.indices1[var16]];
|
||||
} else {
|
||||
var13 = this.vertexNormals[this.indices1[var16]];
|
||||
}
|
||||
|
||||
var14 = (var4 * var13.y + var5 * var13.z + var3 * var13.x) / (var7 * var13.magnitude) + var1;
|
||||
var8.faceColors1[var16] = method3975(var14);
|
||||
if (this.field2257 != null && this.field2257[this.indices2[var16]] != null) {
|
||||
var13 = this.field2257[this.indices2[var16]];
|
||||
if (this.vertexVertices != null && this.vertexVertices[this.indices2[var16]] != null) {
|
||||
var13 = this.vertexVertices[this.indices2[var16]];
|
||||
} else {
|
||||
var13 = this.vertexNormals[this.indices2[var16]];
|
||||
}
|
||||
|
||||
var14 = (var4 * var13.y + var5 * var13.z + var3 * var13.x) / (var7 * var13.magnitude) + var1;
|
||||
var8.faceColors2[var16] = method3975(var14);
|
||||
if (this.field2257 != null && this.field2257[this.indices3[var16]] != null) {
|
||||
var13 = this.field2257[this.indices3[var16]];
|
||||
if (this.vertexVertices != null && this.vertexVertices[this.indices3[var16]] != null) {
|
||||
var13 = this.vertexVertices[this.indices3[var16]];
|
||||
} else {
|
||||
var13 = this.vertexNormals[this.indices3[var16]];
|
||||
}
|
||||
@@ -1659,22 +1660,22 @@ public class ModelData extends Renderable {
|
||||
for (int var14 = 0; var14 < var8; ++var14) {
|
||||
VertexNormal var15 = var1.vertexNormals[var14];
|
||||
if (var12 == var7[var14] && var13 == var1.verticesZ[var14] && var11 == var1.verticesY[var14] && var15.magnitude != 0) {
|
||||
if (var0.field2257 == null) {
|
||||
var0.field2257 = new VertexNormal[var0.verticesCount];
|
||||
if (var0.vertexVertices == null) {
|
||||
var0.vertexVertices = new VertexNormal[var0.verticesCount];
|
||||
}
|
||||
|
||||
if (var1.field2257 == null) {
|
||||
var1.field2257 = new VertexNormal[var8];
|
||||
if (var1.vertexVertices == null) {
|
||||
var1.vertexVertices = new VertexNormal[var8];
|
||||
}
|
||||
|
||||
VertexNormal var16 = var0.field2257[var9];
|
||||
VertexNormal var16 = var0.vertexVertices[var9];
|
||||
if (var16 == null) {
|
||||
var16 = var0.field2257[var9] = new VertexNormal(var10);
|
||||
var16 = var0.vertexVertices[var9] = new VertexNormal(var10);
|
||||
}
|
||||
|
||||
VertexNormal var17 = var1.field2257[var14];
|
||||
VertexNormal var17 = var1.vertexVertices[var14];
|
||||
if (var17 == null) {
|
||||
var17 = var1.field2257[var14] = new VertexNormal(var15);
|
||||
var17 = var1.vertexVertices[var14] = new VertexNormal(var15);
|
||||
}
|
||||
|
||||
var16.x += var15.x;
|
||||
|
||||
@@ -177,13 +177,13 @@ public class StructComposition extends DualNode {
|
||||
}
|
||||
|
||||
if (var7 <= 49) {
|
||||
Tiles.field974[var1][var2][var3] = var0.readByte();
|
||||
Tiles.field978[var1][var2][var3] = (byte)((var7 - 2) / 4);
|
||||
Tiles.Tiles_overlays[var1][var2][var3] = var0.readByte();
|
||||
Tiles.Tiles_shapes[var1][var2][var3] = (byte)((var7 - 2) / 4);
|
||||
Tiles.field977[var1][var2][var3] = (byte)(var7 - 2 + var6 & 3);
|
||||
} else if (var7 <= 81) {
|
||||
Tiles.Tiles_renderFlags[var1][var2][var3] = (byte)(var7 - 49);
|
||||
} else {
|
||||
class6.field13[var1][var2][var3] = (byte)(var7 - 81);
|
||||
class6.Tiles_underlays[var1][var2][var3] = (byte)(var7 - 81);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -21,9 +21,11 @@ public final class Tiles {
|
||||
@Export("Tiles_minPlane")
|
||||
static int Tiles_minPlane;
|
||||
@ObfuscatedName("o")
|
||||
static byte[][][] field974;
|
||||
@Export("Tiles_overlays")
|
||||
static byte[][][] Tiles_overlays;
|
||||
@ObfuscatedName("g")
|
||||
static byte[][][] field978;
|
||||
@Export("Tiles_shapes")
|
||||
static byte[][][] Tiles_shapes;
|
||||
@ObfuscatedName("z")
|
||||
static byte[][][] field977;
|
||||
@ObfuscatedName("y")
|
||||
@@ -48,12 +50,14 @@ public final class Tiles {
|
||||
@ObfuscatedGetter(
|
||||
intValue = -416490741
|
||||
)
|
||||
static int field987;
|
||||
@Export("rndHue")
|
||||
static int rndHue;
|
||||
@ObfuscatedName("i")
|
||||
@ObfuscatedGetter(
|
||||
intValue = -2134339611
|
||||
)
|
||||
static int field988;
|
||||
@Export("rndLightness")
|
||||
static int rndLightness;
|
||||
@ObfuscatedName("ix")
|
||||
@ObfuscatedGetter(
|
||||
intValue = 1521226335
|
||||
@@ -71,8 +75,8 @@ public final class Tiles {
|
||||
field984 = new int[]{0, -1, 0, 1};
|
||||
field985 = new int[]{1, -1, -1, 1};
|
||||
field973 = new int[]{-1, -1, 1, 1};
|
||||
field987 = (int)(Math.random() * 17.0D) - 8;
|
||||
field988 = (int)(Math.random() * 33.0D) - 16;
|
||||
rndHue = (int)(Math.random() * 17.0D) - 8;
|
||||
rndLightness = (int)(Math.random() * 33.0D) - 16;
|
||||
}
|
||||
|
||||
@ObfuscatedName("a")
|
||||
|
||||
@@ -12,7 +12,8 @@ public enum class6 implements MouseWheel {
|
||||
field10(0, 0);
|
||||
|
||||
@ObfuscatedName("k")
|
||||
static byte[][][] field13;
|
||||
@Export("Tiles_underlays")
|
||||
static byte[][][] Tiles_underlays;
|
||||
@ObfuscatedName("c")
|
||||
@ObfuscatedGetter(
|
||||
intValue = -607968475
|
||||
|
||||
Reference in New Issue
Block a user