Merge pull request #1038 from ThatGamerBlue/master

Fix Sprite Overrides
This commit is contained in:
Tyler Bochard
2019-07-19 02:39:54 -04:00
committed by GitHub
14 changed files with 49 additions and 24 deletions

View File

@@ -3,9 +3,14 @@ package net.runelite.mixins;
import net.runelite.api.Sprite; import net.runelite.api.Sprite;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import net.runelite.api.mixins.Copy;
import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin; import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Replace;
import net.runelite.rs.api.RSAbstractArchive;
import net.runelite.rs.api.RSClient; import net.runelite.rs.api.RSClient;
import net.runelite.rs.api.RSSprite;
@Mixin(RSClient.class) @Mixin(RSClient.class)
public abstract class SpriteMixin implements RSClient public abstract class SpriteMixin implements RSClient
@@ -29,4 +34,23 @@ public abstract class SpriteMixin implements RSClient
{ {
return widgetSpriteOverrides; return widgetSpriteOverrides;
} }
@Copy("loadSprite")
public static RSSprite rs$loadSprite(RSAbstractArchive var0, int var1, int var2)
{
throw new RuntimeException();
}
@Replace("loadSprite")
public static RSSprite rl$loadSprite(RSAbstractArchive var0, int var1, int var2)
{
Sprite sprite = spriteOverrides.get(var1);
if (sprite != null)
{
return (RSSprite) sprite;
}
return rs$loadSprite(var0, var1, var2);
}
} }

View File

@@ -61,8 +61,8 @@ public class Friend extends Buddy {
signature = "(Lhp;IIB)Z", signature = "(Lhp;IIB)Z",
garbageValue = "-3" garbageValue = "-3"
) )
@Export("SpriteBuffer_loadSprite") @Export("doesSpriteExist")
public static boolean SpriteBuffer_loadSprite(AbstractArchive var0, int var1, int var2) { public static boolean doesSpriteExist(AbstractArchive var0, int var1, int var2) {
byte[] var3 = var0.takeFile(var1, var2); byte[] var3 = var0.takeFile(var1, var2);
if (var3 == null) { if (var3 == null) {
return false; return false;

View File

@@ -103,6 +103,6 @@ public final class GameObject {
) )
@Export("loadFont") @Export("loadFont")
public static Font loadFont(AbstractArchive var0, AbstractArchive var1, int var2, int var3) { public static Font loadFont(AbstractArchive var0, AbstractArchive var1, int var2, int var3) {
return !Friend.SpriteBuffer_loadSprite(var0, var2, var3) ? null : WallDecoration.getWorldMapSprite(var1.takeFile(var2, var3)); return !Friend.doesSpriteExist(var0, var2, var3) ? null : WallDecoration.getWorldMapSprite(var1.takeFile(var2, var3));
} }
} }

View File

@@ -172,7 +172,7 @@ public class HealthBarDefinition extends DualNode {
if (var1 != null) { if (var1 != null) {
return var1; return var1;
} else { } else {
var1 = class65.SpriteBuffer_tryCreateSprite(HealthBarDefinition_spritesArchive, this.frontSpriteID, 0); var1 = class65.loadSprite(HealthBarDefinition_spritesArchive, this.frontSpriteID, 0);
if (var1 != null) { if (var1 != null) {
HealthBarDefinition_cachedSprites.put(var1, (long)this.frontSpriteID); HealthBarDefinition_cachedSprites.put(var1, (long)this.frontSpriteID);
} }
@@ -196,7 +196,7 @@ public class HealthBarDefinition extends DualNode {
if (var1 != null) { if (var1 != null) {
return var1; return var1;
} else { } else {
var1 = class65.SpriteBuffer_tryCreateSprite(HealthBarDefinition_spritesArchive, this.backSpriteID, 0); var1 = class65.loadSprite(HealthBarDefinition_spritesArchive, this.backSpriteID, 0);
if (var1 != null) { if (var1 != null) {
HealthBarDefinition_cachedSprites.put(var1, (long)this.backSpriteID); HealthBarDefinition_cachedSprites.put(var1, (long)this.backSpriteID);
} }

View File

@@ -290,7 +290,7 @@ public class HitSplatDefinition extends DualNode {
if (var1 != null) { if (var1 != null) {
return var1; return var1;
} else { } else {
var1 = class65.SpriteBuffer_tryCreateSprite(HitSplatDefinition_spritesArchive, this.field3334, 0); var1 = class65.loadSprite(HitSplatDefinition_spritesArchive, this.field3334, 0);
if (var1 != null) { if (var1 != null) {
HitSplatDefinition_cachedSprites.put(var1, (long)this.field3334); HitSplatDefinition_cachedSprites.put(var1, (long)this.field3334);
} }
@@ -313,7 +313,7 @@ public class HitSplatDefinition extends DualNode {
if (var1 != null) { if (var1 != null) {
return var1; return var1;
} else { } else {
var1 = class65.SpriteBuffer_tryCreateSprite(HitSplatDefinition_spritesArchive, this.field3336, 0); var1 = class65.loadSprite(HitSplatDefinition_spritesArchive, this.field3336, 0);
if (var1 != null) { if (var1 != null) {
HitSplatDefinition_cachedSprites.put(var1, (long)this.field3336); HitSplatDefinition_cachedSprites.put(var1, (long)this.field3336);
} }
@@ -336,7 +336,7 @@ public class HitSplatDefinition extends DualNode {
if (var1 != null) { if (var1 != null) {
return var1; return var1;
} else { } else {
var1 = class65.SpriteBuffer_tryCreateSprite(HitSplatDefinition_spritesArchive, this.field3337, 0); var1 = class65.loadSprite(HitSplatDefinition_spritesArchive, this.field3337, 0);
if (var1 != null) { if (var1 != null) {
HitSplatDefinition_cachedSprites.put(var1, (long)this.field3337); HitSplatDefinition_cachedSprites.put(var1, (long)this.field3337);
} }
@@ -359,7 +359,7 @@ public class HitSplatDefinition extends DualNode {
if (var1 != null) { if (var1 != null) {
return var1; return var1;
} else { } else {
var1 = class65.SpriteBuffer_tryCreateSprite(HitSplatDefinition_spritesArchive, this.field3338, 0); var1 = class65.loadSprite(HitSplatDefinition_spritesArchive, this.field3338, 0);
if (var1 != null) { if (var1 != null) {
HitSplatDefinition_cachedSprites.put(var1, (long)this.field3338); HitSplatDefinition_cachedSprites.put(var1, (long)this.field3338);
} }
@@ -387,7 +387,7 @@ public class HitSplatDefinition extends DualNode {
AbstractArchive var4 = HitSplatDefinition_fontsArchive; AbstractArchive var4 = HitSplatDefinition_fontsArchive;
int var5 = this.fontId; int var5 = this.fontId;
Font var2; Font var2;
if (!Friend.SpriteBuffer_loadSprite(var3, var5, 0)) { if (!Friend.doesSpriteExist(var3, var5, 0)) {
var2 = null; var2 = null;
} else { } else {
var2 = WallDecoration.getWorldMapSprite(var4.takeFile(var5, 0)); var2 = WallDecoration.getWorldMapSprite(var4.takeFile(var5, 0));

View File

@@ -169,8 +169,9 @@ public class PacketBuffer extends Buffer {
signature = "(Lhp;III)Llx;", signature = "(Lhp;III)Llx;",
garbageValue = "-1232611828" garbageValue = "-1232611828"
) )
static IndexedSprite method5474(AbstractArchive var0, int var1, int var2) { @Export("loadIndexedSprite")
if (!Friend.SpriteBuffer_loadSprite(var0, var1, var2)) { static IndexedSprite loadIndexedSprite(AbstractArchive var0, int var1, int var2) {
if (!Friend.doesSpriteExist(var0, var1, var2)) {
return null; return null;
} else { } else {
IndexedSprite var4 = new IndexedSprite(); IndexedSprite var4 = new IndexedSprite();

View File

@@ -64,7 +64,7 @@ public final class TilePaint {
garbageValue = "1591290793" garbageValue = "1591290793"
) )
public static Sprite[] method3062(AbstractArchive var0, int var1, int var2) { public static Sprite[] method3062(AbstractArchive var0, int var1, int var2) {
if (!Friend.SpriteBuffer_loadSprite(var0, var1, var2)) { if (!Friend.doesSpriteExist(var0, var1, var2)) {
return null; return null;
} else { } else {
Sprite[] var4 = new Sprite[class326.SpriteBuffer_spriteCount]; Sprite[] var4 = new Sprite[class326.SpriteBuffer_spriteCount];

View File

@@ -491,13 +491,13 @@ public class Timer {
} else if (Client.titleLoadingStage == 80) { } else if (Client.titleLoadingStage == 80) {
var0 = 0; var0 = 0;
if (Message.compass == null) { if (Message.compass == null) {
Message.compass = class65.SpriteBuffer_tryCreateSprite(Client.archive8, UserComparator6.spriteIds.compass, 0); Message.compass = class65.loadSprite(Client.archive8, UserComparator6.spriteIds.compass, 0);
} else { } else {
++var0; ++var0;
} }
if (UserComparator4.redHintArrowSprite == null) { if (UserComparator4.redHintArrowSprite == null) {
UserComparator4.redHintArrowSprite = class65.SpriteBuffer_tryCreateSprite(Client.archive8, UserComparator6.spriteIds.field3823, 0); UserComparator4.redHintArrowSprite = class65.loadSprite(Client.archive8, UserComparator6.spriteIds.field3823, 0);
} else { } else {
++var0; ++var0;
} }

View File

@@ -1271,7 +1271,7 @@ public class Widget extends Node {
if (var5 != null) { if (var5 != null) {
return var5; return var5;
} else { } else {
var5 = class65.SpriteBuffer_tryCreateSprite(class216.Widget_spritesArchive, var2, 0); var5 = class65.loadSprite(class216.Widget_spritesArchive, var2, 0);
if (var5 == null) { if (var5 == null) {
field2562 = true; field2562 = true;
return null; return null;
@@ -1351,7 +1351,7 @@ public class Widget extends Node {
if (var3 != null) { if (var3 != null) {
return var3; return var3;
} else { } else {
var3 = class65.SpriteBuffer_tryCreateSprite(class216.Widget_spritesArchive, var2, 0); var3 = class65.loadSprite(class216.Widget_spritesArchive, var2, 0);
if (var3 != null) { if (var3 != null) {
Widget_cachedSprites.put(var3, (long)var2); Widget_cachedSprites.put(var3, (long)var2);
} else { } else {

View File

@@ -283,7 +283,7 @@ public class WorldMapElement extends DualNode {
if (var2 != null) { if (var2 != null) {
return var2; return var2;
} else { } else {
var2 = class65.SpriteBuffer_tryCreateSprite(WorldMapElement_archive, var1, 0); var2 = class65.loadSprite(WorldMapElement_archive, var1, 0);
if (var2 != null) { if (var2 != null) {
WorldMapElement_cachedSprites.put(var2, (long)var1); WorldMapElement_cachedSprites.put(var2, (long)var1);
} }

View File

@@ -71,7 +71,7 @@ public class class215 {
public static IndexedSprite loadIndexedSpriteByName(AbstractArchive var0, String var1, String var2) { public static IndexedSprite loadIndexedSpriteByName(AbstractArchive var0, String var1, String var2) {
int var3 = var0.getGroupId(var1); int var3 = var0.getGroupId(var1);
int var4 = var0.getFileId(var3, var2); int var4 = var0.getFileId(var3, var2);
return PacketBuffer.method5474(var0, var3, var4); return PacketBuffer.loadIndexedSprite(var0, var3, var4);
} }
@ObfuscatedName("eg") @ObfuscatedName("eg")

View File

@@ -12,7 +12,7 @@ public class class287 {
int var4 = var0.getGroupId(var2); int var4 = var0.getGroupId(var2);
int var5 = var0.getFileId(var4, var3); int var5 = var0.getFileId(var4, var3);
Font var6; Font var6;
if (!Friend.SpriteBuffer_loadSprite(var0, var4, var5)) { if (!Friend.doesSpriteExist(var0, var4, var5)) {
var6 = null; var6 = null;
} else { } else {
var6 = WallDecoration.getWorldMapSprite(var1.takeFile(var4, var5)); var6 = WallDecoration.getWorldMapSprite(var1.takeFile(var4, var5));

View File

@@ -26,7 +26,7 @@ public final class class289 {
garbageValue = "1777014825" garbageValue = "1777014825"
) )
public static IndexedSprite[] method5281(AbstractArchive var0, int var1, int var2) { public static IndexedSprite[] method5281(AbstractArchive var0, int var1, int var2) {
if (!Friend.SpriteBuffer_loadSprite(var0, var1, var2)) { if (!Friend.doesSpriteExist(var0, var1, var2)) {
return null; return null;
} else { } else {
IndexedSprite[] var4 = new IndexedSprite[class326.SpriteBuffer_spriteCount]; IndexedSprite[] var4 = new IndexedSprite[class326.SpriteBuffer_spriteCount];

View File

@@ -69,9 +69,9 @@ public class class65 extends RouteStrategy {
signature = "(Lhp;III)Lly;", signature = "(Lhp;III)Lly;",
garbageValue = "300652258" garbageValue = "300652258"
) )
@Export("SpriteBuffer_tryCreateSprite") @Export("loadSprite")
public static Sprite SpriteBuffer_tryCreateSprite(AbstractArchive var0, int var1, int var2) { public static Sprite loadSprite(AbstractArchive var0, int var1, int var2) {
if (!Friend.SpriteBuffer_loadSprite(var0, var1, var2)) { if (!Friend.doesSpriteExist(var0, var1, var2)) {
return null; return null;
} else { } else {
Sprite var4 = new Sprite(); Sprite var4 = new Sprite();