import net.runelite.mapping.Export; import net.runelite.mapping.Implements; import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedSignature; @ObfuscatedName("db") @Implements("Texture") public class Texture extends Node { @ObfuscatedName("v") @Export("Texture_animatedPixels") static int[] Texture_animatedPixels; @ObfuscatedName("k") @Export("averageRGB") int averageRGB; @ObfuscatedName("l") boolean field1624; @ObfuscatedName("b") @Export("fileIds") int[] fileIds; @ObfuscatedName("i") int[] field1626; @ObfuscatedName("c") int[] field1627; @ObfuscatedName("f") int[] field1619; @ObfuscatedName("m") @Export("animationDirection") int animationDirection; @ObfuscatedName("u") @Export("animationSpeed") int animationSpeed; @ObfuscatedName("x") @Export("pixels") int[] pixels; @ObfuscatedName("r") @Export("isLoaded") boolean isLoaded; @ObfuscatedSignature( signature = "(Lkf;)V" ) Texture(Buffer var1) { this.isLoaded = false; this.averageRGB = var1.readUnsignedShort(); this.field1624 = var1.readUnsignedByte() == 1; int var2 = var1.readUnsignedByte(); if (var2 < 1 || var2 > 4) { throw new RuntimeException(); } this.fileIds = new int[var2]; int var3; for (var3 = 0; var3 < var2; ++var3) { this.fileIds[var3] = var1.readUnsignedShort(); } if (var2 > 1) { this.field1626 = new int[var2 - 1]; for (var3 = 0; var3 < var2 - 1; ++var3) { this.field1626[var3] = var1.readUnsignedByte(); } this.field1627 = new int[var2 - 1]; for (var3 = 0; var3 < var2 - 1; ++var3) { this.field1627[var3] = var1.readUnsignedByte(); } } this.field1619 = new int[var2]; for (var3 = 0; var3 < var2; ++var3) { this.field1619[var3] = var1.readInt(); } this.animationDirection = var1.readUnsignedByte(); this.animationSpeed = var1.readUnsignedByte(); this.pixels = null; } @ObfuscatedName("q") @ObfuscatedSignature( signature = "(DILhp;)Z" ) @Export("load") boolean load(double brightness, int size, AbstractArchive var4) { for (int var5 = 0; var5 < this.fileIds.length; ++var5) { if (var4.getFileFlat(this.fileIds[var5]) == null) { return false; } } int var5 = size * size; this.pixels = new int[var5]; for (int var6 = 0; var6 < this.fileIds.length; ++var6) { int var8 = this.fileIds[var6]; IndexedSprite var7; if (!PlayerAppearance.SpriteBuffer_bufferFileFlat(var4, var8)) { var7 = null; } else { IndexedSprite var10 = new IndexedSprite(); var10.width = SpriteBuffer.SpriteBuffer_spriteWidth; var10.height = SpriteBuffer.SpriteBuffer_spriteHeight; var10.xOffset = Varps.SpriteBuffer_xOffsets[0]; var10.yOffset = SpriteBuffer.SpriteBuffer_yOffsets[0]; var10.subWidth = SpriteBuffer.SpriteBuffer_spriteWidths[0]; var10.subHeight = class216.SpriteBuffer_spriteHeights[0]; var10.palette = Frames.SpriteBuffer_spritePalette; var10.pixels = SpriteBuffer.SpriteBuffer_pixels[0]; class16.SpriteBuffer_clear(); var7 = var10; } var7.normalize(); byte[] var17 = var7.pixels; int[] var11 = var7.palette; int var12 = this.field1619[var6]; if ((var12 & 0xff000000) == 0x1000000) { } if ((var12 & 0xff000000) == 0x2000000) { } if ((var12 & 0xff000000) == 0x3000000) { int var13 = var12 & 0xff00ff; int var14 = var12 >> 8 & 255; for (int var15 = 0; var15 < var11.length; ++var15) { int var16 = var11[var15]; if (var16 >> 8 == (var16 & 0xffff)) { var16 &= 255; var11[var15] = var13 * var16 >> 8 & 0xff00ff | var14 * var16 & 0xff00; } } } for (int var13 = 0; var13 < var11.length; ++var13) { var11[var13] = Rasterizer3D.Rasterizer3D_brighten(var11[var13], brightness); } int var13 = 0; if (var6 != 0) { var13 = this.field1626[var6 - 1]; } if (var13 == 0) { if (size == var7.subWidth) { for (int var14 = 0; var14 < var5; ++var14) { this.pixels[var14] = var11[var17[var14] & 255]; } } else if (var7.subWidth == 64 && size == 128) { int var14 = 0; for (int var15 = 0; var15 < size; ++var15) { for (int var16 = 0; var16 < size; ++var16) { this.pixels[var14++] = var11[var17[(var15 >> 1 << 6) + (var16 >> 1)] & 255]; } } } else if (var7.subWidth == 128 && size == 64) { int var14 = 0; for (int var15 = 0; var15 < size; ++var15) { for (int var16 = 0; var16 < size; ++var16) { this.pixels[var14++] = var11[var17[(var16 << 1) + (var15 << 1 << 7)] & 255]; } } } else { throw new RuntimeException(); } } if (var13 == 1) { } if (var13 == 2) { } if (var13 == 3) { } } return true; } @ObfuscatedName("w") @Export("reset") void reset() { this.pixels = null; } @ObfuscatedName("e") @Export("animate") void animate(int var1) { if (this.pixels == null) { return; } short var2; int var3; int var4; int var5; int var6; int var7; int[] var10; if (this.animationDirection == 1 || this.animationDirection == 3) { if (Texture_animatedPixels == null || Texture_animatedPixels.length < this.pixels.length) { Texture_animatedPixels = new int[this.pixels.length]; } if (this.pixels.length == 4096) { var2 = 64; } else { var2 = 128; } var3 = this.pixels.length; var4 = var2 * this.animationSpeed * var1; var5 = var3 - 1; if (this.animationDirection == 1) { var4 = -var4; } for (var6 = 0; var6 < var3; ++var6) { var7 = var6 + var4 & var5; Texture_animatedPixels[var6] = this.pixels[var7]; } var10 = this.pixels; this.pixels = Texture_animatedPixels; Texture_animatedPixels = var10; } if (this.animationDirection == 2 || this.animationDirection == 4) { if (Texture_animatedPixels == null || Texture_animatedPixels.length < this.pixels.length) { Texture_animatedPixels = new int[this.pixels.length]; } if (this.pixels.length == 4096) { var2 = 64; } else { var2 = 128; } var3 = this.pixels.length; var4 = this.animationSpeed * var1; var5 = var2 - 1; if (this.animationDirection == 2) { var4 = -var4; } for (var6 = 0; var6 < var3; var6 += var2) { for (var7 = 0; var7 < var2; ++var7) { int var8 = var6 + var7; int var9 = var6 + (var7 + var4 & var5); Texture_animatedPixels[var8] = this.pixels[var9]; } } var10 = this.pixels; this.pixels = Texture_animatedPixels; Texture_animatedPixels = var10; } } }