Merge pull request #3153 from Owain94/low-detail
This commit is contained in:
@@ -143,12 +143,15 @@ import static net.runelite.mixins.CameraMixin.STANDARD_PITCH_MAX;
|
|||||||
import static net.runelite.mixins.CameraMixin.STANDARD_PITCH_MIN;
|
import static net.runelite.mixins.CameraMixin.STANDARD_PITCH_MIN;
|
||||||
import net.runelite.rs.api.RSAbstractArchive;
|
import net.runelite.rs.api.RSAbstractArchive;
|
||||||
import net.runelite.rs.api.RSArchive;
|
import net.runelite.rs.api.RSArchive;
|
||||||
|
import net.runelite.rs.api.RSBuffer;
|
||||||
import net.runelite.rs.api.RSChatChannel;
|
import net.runelite.rs.api.RSChatChannel;
|
||||||
import net.runelite.rs.api.RSClanChannel;
|
import net.runelite.rs.api.RSClanChannel;
|
||||||
import net.runelite.rs.api.RSClient;
|
import net.runelite.rs.api.RSClient;
|
||||||
|
import net.runelite.rs.api.RSCollisionMap;
|
||||||
import net.runelite.rs.api.RSDualNode;
|
import net.runelite.rs.api.RSDualNode;
|
||||||
import net.runelite.rs.api.RSEnumComposition;
|
import net.runelite.rs.api.RSEnumComposition;
|
||||||
import net.runelite.rs.api.RSEvictingDualNodeHashTable;
|
import net.runelite.rs.api.RSEvictingDualNodeHashTable;
|
||||||
|
import net.runelite.rs.api.RSFloorOverlayDefinition;
|
||||||
import net.runelite.rs.api.RSFriendSystem;
|
import net.runelite.rs.api.RSFriendSystem;
|
||||||
import net.runelite.rs.api.RSIndexedSprite;
|
import net.runelite.rs.api.RSIndexedSprite;
|
||||||
import net.runelite.rs.api.RSInterfaceParent;
|
import net.runelite.rs.api.RSInterfaceParent;
|
||||||
@@ -2880,5 +2883,66 @@ public abstract class RSClientMixin implements RSClient
|
|||||||
|
|
||||||
return modelData.newModelData(modelData, true, true, true, true);
|
return modelData.newModelData(modelData, true, true, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public static RSFloorOverlayDefinition loadFloorOverlay(int var0)
|
||||||
|
{
|
||||||
|
RSFloorOverlayDefinition var1 = (RSFloorOverlayDefinition) client.getFloorOverlayDefinitionCache().get(var0);
|
||||||
|
|
||||||
|
if (var1 == null)
|
||||||
|
{
|
||||||
|
byte[] var2 = client.getFloorOverlayDefinitionArchive().loadData(4, var0);
|
||||||
|
var1 = client.newFloorOverlayDefinition();
|
||||||
|
if (var2 != null)
|
||||||
|
{
|
||||||
|
RSBuffer var3 = client.newBuffer(var2);
|
||||||
|
var1.decode(var3, var0);
|
||||||
|
}
|
||||||
|
|
||||||
|
var1.postDecode();
|
||||||
|
client.getFloorOverlayDefinitionCache().put((RSDualNode) var1, (long) var0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return var1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Copy("addObjects")
|
||||||
|
@Replace("addObjects")
|
||||||
|
@SuppressWarnings("InfiniteRecursion")
|
||||||
|
public static void copy$addObjects(int var0, int var1, int var2, int var3, int var4, int var5, RSScene var6, RSCollisionMap var7)
|
||||||
|
{
|
||||||
|
boolean resetLowMemory = false;
|
||||||
|
|
||||||
|
byte tileSetting = client.getTileSettings()[var0][var1][var2];
|
||||||
|
|
||||||
|
if (client.isLowMemory())
|
||||||
|
{
|
||||||
|
byte[] var10000 = client.getTileSettings()[var0][var1];
|
||||||
|
var10000[var2] &= -17;
|
||||||
|
if (var5 == 22)
|
||||||
|
{
|
||||||
|
int TileOverlay = client.getTileOverlays()[var0][var1][var2] & 255;
|
||||||
|
|
||||||
|
if (TileOverlay > 0)
|
||||||
|
{
|
||||||
|
RSFloorOverlayDefinition floorOverlayDefinition = loadFloorOverlay(TileOverlay - 1);
|
||||||
|
if (floorOverlayDefinition.getTexture() < 0 && floorOverlayDefinition.getPrimaryRgb() == 16711935)
|
||||||
|
{
|
||||||
|
client.setLowMemory(false);
|
||||||
|
resetLowMemory = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
copy$addObjects(var0, var1, var2, var3, var4, var5, var6, var7);
|
||||||
|
|
||||||
|
client.getTileSettings()[var0][var1][var2] = tileSetting;
|
||||||
|
|
||||||
|
if (resetLowMemory)
|
||||||
|
{
|
||||||
|
client.setLowMemory(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -649,6 +649,9 @@ public interface RSClient extends RSGameEngine, Client
|
|||||||
@Override
|
@Override
|
||||||
boolean[] getPressedKeys();
|
boolean[] getPressedKeys();
|
||||||
|
|
||||||
|
@Import("isLowDetail")
|
||||||
|
boolean isLowMemory();
|
||||||
|
|
||||||
@Import("isLowDetail")
|
@Import("isLowDetail")
|
||||||
void setLowMemory(boolean lowMemory);
|
void setLowMemory(boolean lowMemory);
|
||||||
|
|
||||||
@@ -1201,6 +1204,9 @@ public interface RSClient extends RSGameEngine, Client
|
|||||||
@Import("VarpDefinition_get")
|
@Import("VarpDefinition_get")
|
||||||
RSVarpDefinition getVarpDefinition(int id);
|
RSVarpDefinition getVarpDefinition(int id);
|
||||||
|
|
||||||
|
@Construct
|
||||||
|
RSFloorOverlayDefinition newFloorOverlayDefinition();
|
||||||
|
|
||||||
@Construct
|
@Construct
|
||||||
RSTileItem newTileItem();
|
RSTileItem newTileItem();
|
||||||
|
|
||||||
@@ -1500,6 +1506,9 @@ public interface RSClient extends RSGameEngine, Client
|
|||||||
@Import("FloorUnderlayDefinition_cached")
|
@Import("FloorUnderlayDefinition_cached")
|
||||||
RSEvictingDualNodeHashTable getFloorUnderlayDefinitionCache();
|
RSEvictingDualNodeHashTable getFloorUnderlayDefinitionCache();
|
||||||
|
|
||||||
|
@Import("FloorOverlayDefinition_archive")
|
||||||
|
RSAbstractArchive getFloorOverlayDefinitionArchive();
|
||||||
|
|
||||||
@Import("FloorOverlayDefinition_cached")
|
@Import("FloorOverlayDefinition_cached")
|
||||||
RSEvictingDualNodeHashTable getFloorOverlayDefinitionCache();
|
RSEvictingDualNodeHashTable getFloorOverlayDefinitionCache();
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,19 @@
|
|||||||
package net.runelite.rs.api;
|
package net.runelite.rs.api;
|
||||||
|
|
||||||
public interface RSFloorOverlayDefinition {}
|
import net.runelite.mapping.Import;
|
||||||
|
|
||||||
|
public interface RSFloorOverlayDefinition
|
||||||
|
{
|
||||||
|
@Import("primaryRgb")
|
||||||
|
int getPrimaryRgb();
|
||||||
|
|
||||||
|
@Import("texture")
|
||||||
|
int getTexture();
|
||||||
|
|
||||||
|
@Import("decode")
|
||||||
|
void decode(RSBuffer var1, int var2);
|
||||||
|
|
||||||
|
@Import("postDecode")
|
||||||
|
void postDecode();
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ public final class Canvas extends java.awt.Canvas {
|
|||||||
var19 = var4[var18];
|
var19 = var4[var18];
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldMapIcon_1.method4556(var12, var16, var17, var6, var15, var14, var3, var19); // L: 313
|
WorldMapIcon_1.addObjects(var12, var16, var17, var6, var15, var14, var3, var19); // L: 313
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ public final class Tiles {
|
|||||||
var25 = var9[var24];
|
var25 = var9[var24];
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldMapIcon_1.method4556(var1, var22, var23, var11, var20 + var7 & 3, var19, var8, var25); // L: 347
|
WorldMapIcon_1.addObjects(var1, var22, var23, var11, var20 + var7 & 3, var19, var8, var25); // L: 347
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,7 +127,8 @@ public class WorldMapIcon_1 extends AbstractWorldMapIcon {
|
|||||||
descriptor = "(IIIIIILgs;Lgf;I)V",
|
descriptor = "(IIIIIILgs;Lgf;I)V",
|
||||||
garbageValue = "-1640512620"
|
garbageValue = "-1640512620"
|
||||||
)
|
)
|
||||||
static final void method4556(int var0, int var1, int var2, int var3, int var4, int var5, Scene var6, CollisionMap var7) {
|
@Export("addObjects")
|
||||||
|
static final void addObjects(int var0, int var1, int var2, int var3, int var4, int var5, Scene var6, CollisionMap var7) {
|
||||||
if (!Client.isLowDetail || (Tiles.Tiles_renderFlags[0][var1][var2] & 2) != 0 || (Tiles.Tiles_renderFlags[var0][var1][var2] & 16) == 0) { // L: 355 356 357
|
if (!Client.isLowDetail || (Tiles.Tiles_renderFlags[0][var1][var2] & 2) != 0 || (Tiles.Tiles_renderFlags[var0][var1][var2] & 16) == 0) { // L: 355 356 357
|
||||||
if (var0 < Tiles.Tiles_minPlane) { // L: 360
|
if (var0 < Tiles.Tiles_minPlane) { // L: 360
|
||||||
Tiles.Tiles_minPlane = var0;
|
Tiles.Tiles_minPlane = var0;
|
||||||
|
|||||||
Reference in New Issue
Block a user