From 04634bc5b9bf12add6af1a5e12712e63265c3fe4 Mon Sep 17 00:00:00 2001 From: Jonatino Date: Sun, 21 Mar 2021 13:46:37 -0400 Subject: [PATCH] Added some refactoring around cache path logic --- runescape-client/src/main/java/Client.java | 4 +-- .../java/DesktopPlatformInfoProvider.java | 8 ++--- .../src/main/java/GZipDecompressor.java | 5 +-- .../src/main/java/JagexCache.java | 5 +-- .../src/main/java/Projectile.java | 33 ++++++++++--------- runescape-client/src/main/java/Timer.java | 5 +-- runescape-client/src/main/java/Varcs.java | 11 ++++--- runescape-client/src/main/java/class224.java | 6 ++-- runescape-client/src/main/java/class23.java | 7 ++-- runescape-client/src/main/java/class3.java | 5 +-- 10 files changed, 49 insertions(+), 40 deletions(-) diff --git a/runescape-client/src/main/java/Client.java b/runescape-client/src/main/java/Client.java index 798fe8b676..4f8ebb49ae 100644 --- a/runescape-client/src/main/java/Client.java +++ b/runescape-client/src/main/java/Client.java @@ -2000,7 +2000,7 @@ public final class Client extends GameEngine implements Usernamed { byte var9 = 0; // L: 775 try { - Projectile.method2255("oldschool", var8, var9, 21); // L: 777 + Projectile.findAndLoadCache("oldschool", var8, var9, 21); // L: 777 } catch (Exception var10) { // L: 779 SequenceDefinition.RunException_sendStackTrace((String)null, var10); // L: 780 } @@ -5984,4 +5984,4 @@ public final class Client extends GameEngine implements Usernamed { } } } -} +} \ No newline at end of file diff --git a/runescape-client/src/main/java/DesktopPlatformInfoProvider.java b/runescape-client/src/main/java/DesktopPlatformInfoProvider.java index 65c6029681..849b5b3cb0 100644 --- a/runescape-client/src/main/java/DesktopPlatformInfoProvider.java +++ b/runescape-client/src/main/java/DesktopPlatformInfoProvider.java @@ -31,11 +31,11 @@ public class DesktopPlatformInfoProvider implements PlatformInfoProvider { @Export("get") public PlatformInfo get() { byte var1; - if (GZipDecompressor.field4046.startsWith("win")) { // L: 15 + if (GZipDecompressor.formattedOperatingSystemName.startsWith("win")) { // L: 15 var1 = 1; - } else if (GZipDecompressor.field4046.startsWith("mac")) { // L: 16 + } else if (GZipDecompressor.formattedOperatingSystemName.startsWith("mac")) { // L: 16 var1 = 2; - } else if (GZipDecompressor.field4046.startsWith("linux")) { + } else if (GZipDecompressor.formattedOperatingSystemName.startsWith("linux")) { var1 = 3; } else { var1 = 4; // L: 18 @@ -210,4 +210,4 @@ public class DesktopPlatformInfoProvider implements PlatformInfoProvider { public static StudioGame[] method6478() { return new StudioGame[]{StudioGame.stellardawn, StudioGame.game5, StudioGame.oldscape, StudioGame.game4, StudioGame.runescape, StudioGame.game3}; // L: 17 } -} +} \ No newline at end of file diff --git a/runescape-client/src/main/java/GZipDecompressor.java b/runescape-client/src/main/java/GZipDecompressor.java index a24dd0d9a5..628887632a 100644 --- a/runescape-client/src/main/java/GZipDecompressor.java +++ b/runescape-client/src/main/java/GZipDecompressor.java @@ -8,7 +8,8 @@ import net.runelite.mapping.ObfuscatedSignature; @Implements("GZipDecompressor") public class GZipDecompressor { @ObfuscatedName("t") - public static String field4046; + @Export("formattedOperatingSystemName") + public static String formattedOperatingSystemName; @ObfuscatedName("n") @Export("inflater") Inflater inflater; @@ -49,4 +50,4 @@ public class GZipDecompressor { throw new RuntimeException(""); } } // L: 27 -} +} \ No newline at end of file diff --git a/runescape-client/src/main/java/JagexCache.java b/runescape-client/src/main/java/JagexCache.java index d39fc53654..41afb54e66 100644 --- a/runescape-client/src/main/java/JagexCache.java +++ b/runescape-client/src/main/java/JagexCache.java @@ -56,7 +56,8 @@ public class JagexCache { @Export("cacheGamebuild") static int cacheGamebuild; @ObfuscatedName("p") - static String field2065; + @Export("operatingSystemName") + static String operatingSystemName; @ObfuscatedName("m") @Export("userHomeDirectory") static String userHomeDirectory; @@ -225,4 +226,4 @@ public class JagexCache { return 2; // L: 2643 } } -} +} \ No newline at end of file diff --git a/runescape-client/src/main/java/Projectile.java b/runescape-client/src/main/java/Projectile.java index 3aef04557d..534a2bc413 100644 --- a/runescape-client/src/main/java/Projectile.java +++ b/runescape-client/src/main/java/Projectile.java @@ -246,17 +246,18 @@ public final class Projectile extends Renderable { descriptor = "(Ljava/lang/String;Ljava/lang/String;IIB)V", garbageValue = "23" ) - public static void method2255(String var0, String var1, int var2, int var3) throws IOException { + @Export("findAndLoadCache") + public static void findAndLoadCache(String var0, String var1, int var2, int var3) throws IOException { JagexCache.idxCount = var3; // L: 40 JagexCache.cacheGamebuild = var2; // L: 41 try { - JagexCache.field2065 = System.getProperty("os.name"); // L: 43 + JagexCache.operatingSystemName = System.getProperty("os.name"); // L: 43 } catch (Exception var28) { // L: 45 - JagexCache.field2065 = "Unknown"; // L: 46 + JagexCache.operatingSystemName = "Unknown"; // L: 46 } - GZipDecompressor.field4046 = JagexCache.field2065.toLowerCase(); // L: 48 + GZipDecompressor.formattedOperatingSystemName = JagexCache.operatingSystemName.toLowerCase(); // L: 48 try { JagexCache.userHomeDirectory = System.getProperty("user.home"); // L: 50 @@ -267,7 +268,7 @@ public final class Projectile extends Renderable { } try { - if (GZipDecompressor.field4046.startsWith("win")) { // L: 55 + if (GZipDecompressor.formattedOperatingSystemName.startsWith("win")) { // L: 55 if (JagexCache.userHomeDirectory == null) { // L: 56 JagexCache.userHomeDirectory = System.getenv("USERPROFILE"); } @@ -285,8 +286,8 @@ public final class Projectile extends Renderable { JagexCache.userHomeDirectory = "~/"; } - class224.field2576 = new String[]{"c:/rscache/", "/rscache/", "c:/windows/", "c:/winnt/", "c:/", JagexCache.userHomeDirectory, "/tmp/", ""}; // L: 65 - Timer.field3621 = new String[]{".jagex_cache_" + JagexCache.cacheGamebuild, ".file_store_" + JagexCache.cacheGamebuild}; // L: 66 + class224.cacheParentPaths = new String[]{"c:/rscache/", "/rscache/", "c:/windows/", "c:/winnt/", "c:/", JagexCache.userHomeDirectory, "/tmp/", ""}; // L: 65 + Timer.cacheSubPaths = new String[]{".jagex_cache_" + JagexCache.cacheGamebuild, ".file_store_" + JagexCache.cacheGamebuild}; // L: 66 int var18 = 0; label250: @@ -347,7 +348,7 @@ public final class Projectile extends Renderable { if (var7 != null) { // L: 109 var33 = new File(var7, "test.dat"); // L: 110 - if (!class23.method235(var33, true)) { // L: 111 + if (!class23.isWriteable(var33, true)) { // L: 111 var7 = null; // L: 112 } } @@ -355,10 +356,10 @@ public final class Projectile extends Renderable { if (var7 == null && var18 == 0) { // L: 116 label225: - for (int var19 = 0; var19 < Timer.field3621.length; ++var19) { // L: 117 - for (int var20 = 0; var20 < class224.field2576.length; ++var20) { // L: 118 - File var21 = new File(class224.field2576[var20] + Timer.field3621[var19] + File.separatorChar + var0 + File.separatorChar); // L: 119 - if (var21.exists() && class23.method235(new File(var21, "test.dat"), true)) { // L: 120 121 + for (int var19 = 0; var19 < Timer.cacheSubPaths.length; ++var19) { // L: 117 + for (int var20 = 0; var20 < class224.cacheParentPaths.length; ++var20) { // L: 118 + File var21 = new File(class224.cacheParentPaths[var20] + Timer.cacheSubPaths[var19] + File.separatorChar + var0 + File.separatorChar); // L: 119 + if (var21.exists() && class23.isWriteable(new File(var21, "test.dat"), true)) { // L: 120 121 var7 = var21.toString(); // L: 122 var9 = true; // L: 123 break label225; // L: 124 @@ -429,7 +430,7 @@ public final class Projectile extends Renderable { for (int var23 = 0; var23 < var34.length; ++var23) { // L: 184 File var24 = var34[var23]; // L: 185 - if (!class23.method235(var24, false)) { // L: 187 + if (!class23.isWriteable(var24, false)) { // L: 187 ++var18; // L: 67 continue label250; } @@ -438,8 +439,8 @@ public final class Projectile extends Renderable { break; } - class3.method36(JagexCache.cacheDir); // L: 194 - Varcs.method2346(); // L: 195 + class3.assetCacheDirExists(JagexCache.cacheDir); // L: 194 + Varcs.findOrCreateRandomDatFile(); // L: 195 JagexCache.JagexCache_dat2File = new BufferedFile(new AccessFile(GraphicsObject.getFile("main_file_cache.dat2"), "rw", 1048576000L), 5200, 0); // L: 196 JagexCache.JagexCache_idx255File = new BufferedFile(new AccessFile(GraphicsObject.getFile("main_file_cache.idx255"), "rw", 1048576L), 6000, 0); // L: 197 WorldMapEvent.JagexCache_idxFiles = new BufferedFile[JagexCache.idxCount]; // L: 198 @@ -690,4 +691,4 @@ public final class Projectile extends Renderable { } } // L: 9183 -} +} \ No newline at end of file diff --git a/runescape-client/src/main/java/Timer.java b/runescape-client/src/main/java/Timer.java index e31fe9f89a..08bf4d9b90 100644 --- a/runescape-client/src/main/java/Timer.java +++ b/runescape-client/src/main/java/Timer.java @@ -8,7 +8,8 @@ import net.runelite.mapping.ObfuscatedSignature; @Implements("Timer") public class Timer { @ObfuscatedName("f") - static String[] field3621; + @Export("cacheSubPaths") + static String[] cacheSubPaths; @ObfuscatedName("n") @ObfuscatedGetter( longValue = -2999131098664295081L @@ -175,4 +176,4 @@ public class Timer { var1.writeShort(this.field3613); // L: 76 var1.writeShort(this.field3619); // L: 77 } // L: 78 -} +} \ No newline at end of file diff --git a/runescape-client/src/main/java/Varcs.java b/runescape-client/src/main/java/Varcs.java index 5e154f2138..a695b7c88c 100644 --- a/runescape-client/src/main/java/Varcs.java +++ b/runescape-client/src/main/java/Varcs.java @@ -398,7 +398,8 @@ public class Varcs { descriptor = "(B)V", garbageValue = "0" ) - static void method2346() { + @Export("findOrCreateRandomDatFile") + static void findOrCreateRandomDatFile() { try { File var0 = new File(JagexCache.userHomeDirectory, "random.dat"); // L: 250 int var2; @@ -406,9 +407,9 @@ public class Varcs { JagexCache.JagexCache_randomDat = new BufferedFile(new AccessFile(var0, "rw", 25L), 24, 0); // L: 252 } else { label39: - for (int var1 = 0; var1 < Timer.field3621.length; ++var1) { // L: 255 - for (var2 = 0; var2 < class224.field2576.length; ++var2) { // L: 256 - File var3 = new File(class224.field2576[var2] + Timer.field3621[var1] + File.separatorChar + "random.dat"); // L: 257 + for (int var1 = 0; var1 < Timer.cacheSubPaths.length; ++var1) { // L: 255 + for (var2 = 0; var2 < class224.cacheParentPaths.length; ++var2) { // L: 256 + File var3 = new File(class224.cacheParentPaths[var2] + Timer.cacheSubPaths[var1] + File.separatorChar + "random.dat"); // L: 257 if (var3.exists()) { // L: 258 JagexCache.JagexCache_randomDat = new BufferedFile(new AccessFile(var3, "rw", 25L), 24, 0); // L: 259 break label39; // L: 260 @@ -430,4 +431,4 @@ public class Varcs { } } // L: 276 -} +} \ No newline at end of file diff --git a/runescape-client/src/main/java/class224.java b/runescape-client/src/main/java/class224.java index 8c73e5b23c..202a5d350e 100644 --- a/runescape-client/src/main/java/class224.java +++ b/runescape-client/src/main/java/class224.java @@ -1,3 +1,4 @@ +import net.runelite.mapping.Export; import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedSignature; @@ -12,7 +13,8 @@ public class class224 { @ObfuscatedName("c") public static final short[][] field2574; @ObfuscatedName("x") - static String[] field2576; + @Export("cacheParentPaths") + static String[] cacheParentPaths; static { field2577 = new short[]{6798, 8741, 25238, 4626, 4550}; // L: 4 @@ -90,4 +92,4 @@ public class class224 { FileSystem.rasterProvider.apply(); // L: 5814 } // L: 5815 -} +} \ No newline at end of file diff --git a/runescape-client/src/main/java/class23.java b/runescape-client/src/main/java/class23.java index ca75bbb9f3..53d0bc055c 100644 --- a/runescape-client/src/main/java/class23.java +++ b/runescape-client/src/main/java/class23.java @@ -13,7 +13,8 @@ public class class23 { descriptor = "(Ljava/io/File;ZI)Z", garbageValue = "-1646838359" ) - static boolean method235(File var0, boolean var1) { + @Export("isWriteable") + static boolean isWriteable(File var0, boolean deleteAfterWrite) { try { RandomAccessFile var2 = new RandomAccessFile(var0, "rw"); // L: 206 int var3 = var2.read(); // L: 207 @@ -21,7 +22,7 @@ public class class23 { var2.write(var3); // L: 209 var2.seek(0L); // L: 210 var2.close(); // L: 211 - if (var1) { // L: 212 + if (deleteAfterWrite) { // L: 212 var0.delete(); } @@ -136,4 +137,4 @@ public class class23 { } } // L: 2665 -} +} \ No newline at end of file diff --git a/runescape-client/src/main/java/class3.java b/runescape-client/src/main/java/class3.java index e0284db0a9..b51285c477 100644 --- a/runescape-client/src/main/java/class3.java +++ b/runescape-client/src/main/java/class3.java @@ -119,7 +119,8 @@ public class class3 implements Enumerated { descriptor = "(Ljava/io/File;B)V", garbageValue = "1" ) - static void method36(File var0) { + @Export("assetCacheDirExists") + static void assetCacheDirExists(File var0) { FileSystem.FileSystem_cacheDir = var0; // L: 16 if (!FileSystem.FileSystem_cacheDir.exists()) { // L: 17 throw new RuntimeException(""); @@ -212,4 +213,4 @@ public class class3 implements Enumerated { return var2; // L: 100 } -} +} \ No newline at end of file