From 5a152f0514525bb87f3df0b0d76c5dbbe9fa166f Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Fri, 3 Aug 2018 10:40:24 +0200 Subject: [PATCH] Move isOverlayOutdated to IndexDatabase Instead of creating new callback and then simply setting boolean on RuneLite to dump it somewhere, expose this boolean from IndexDatabase and remove injection of RuneLite. Signed-off-by: Tomas Slusny --- .../java/net/runelite/api/IndexDataBase.java | 4 ++++ .../java/net/runelite/api/hooks/Callbacks.java | 9 --------- .../main/java/net/runelite/client/RuneLite.java | 5 ----- .../java/net/runelite/client/callback/Hooks.java | 8 -------- .../runelite/client/plugins/zoom/ZoomPlugin.java | 6 +----- .../runelite/mixins/RSIndexDataBaseMixin.java | 16 ++++++++++++---- 6 files changed, 17 insertions(+), 31 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java b/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java index d58d5dde70..5503cb6885 100644 --- a/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java +++ b/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java @@ -29,4 +29,8 @@ package net.runelite.api; */ public interface IndexDataBase { + /** + * Returns true if any cache overlay in this index is outdated due to hash mismatch + */ + boolean isOverlayOutdated(); } diff --git a/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java b/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java index cfe457bbec..9a1a6eb3cb 100644 --- a/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java +++ b/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java @@ -28,7 +28,6 @@ import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; -import net.runelite.api.IndexDataBase; import net.runelite.api.MainBufferProvider; /** @@ -164,12 +163,4 @@ public interface Callbacks * @param keyEvent the key event */ void keyTyped(KeyEvent keyEvent); - - /** - * Called whenever a cache overlay fails to load due to a hash mismatch - * @param indexDataBase - * @param archiveId - * @param fileId - */ - void overlayLoadFailed(IndexDataBase indexDataBase, int archiveId, int fileId); } diff --git a/runelite-client/src/main/java/net/runelite/client/RuneLite.java b/runelite-client/src/main/java/net/runelite/client/RuneLite.java index 9f164f104e..bbc0039f98 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java @@ -43,7 +43,6 @@ import joptsimple.OptionParser; import joptsimple.OptionSet; import joptsimple.util.EnumConverter; import lombok.Getter; -import lombok.Setter; import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import net.runelite.client.account.SessionManager; @@ -146,10 +145,6 @@ public class RuneLite @Nullable private Client client; - @Getter - @Setter - private boolean overlayOutdated; - public static void main(String[] args) throws Exception { Locale.setDefault(Locale.ENGLISH); diff --git a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java index 3dd864f1bb..260065a55b 100644 --- a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java +++ b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java @@ -42,7 +42,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; -import net.runelite.api.IndexDataBase; import net.runelite.api.MainBufferProvider; import net.runelite.api.RenderOverview; import net.runelite.api.WorldMapManager; @@ -275,13 +274,6 @@ public class Hooks implements Callbacks keyManager.processKeyTyped(keyEvent); } - @Override - public void overlayLoadFailed(IndexDataBase indexDataBase, int archiveId, int fileId) - { - RuneLite runeLite = injector.getInstance(RuneLite.class); - runeLite.setOverlayOutdated(true); - } - @Override public void draw(MainBufferProvider mainBufferProvider, Graphics graphics, int x, int y) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/zoom/ZoomPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/zoom/ZoomPlugin.java index 313614cff4..9324591889 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/zoom/ZoomPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/zoom/ZoomPlugin.java @@ -32,7 +32,6 @@ import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.ScriptCallbackEvent; -import net.runelite.client.RuneLite; import net.runelite.client.config.ConfigManager; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @@ -46,9 +45,6 @@ import net.runelite.client.plugins.PluginDescriptor; @Slf4j public class ZoomPlugin extends Plugin { - @Inject - private RuneLite runeLite; - @Inject private Client client; @@ -64,7 +60,7 @@ public class ZoomPlugin extends Plugin @Subscribe public void onScriptEvent(ScriptCallbackEvent event) { - if (runeLite.isOverlayOutdated()) + if (client.getIndexScripts().isOverlayOutdated()) { // if any cache overlay fails to load then assume at least one of the zoom scripts is outdated // and prevent zoom extending entirely. diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSIndexDataBaseMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSIndexDataBaseMixin.java index 4ebaed8be1..c2c6806802 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSIndexDataBaseMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSIndexDataBaseMixin.java @@ -32,8 +32,8 @@ import com.google.common.io.CharStreams; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import net.runelite.api.hooks.Callbacks; import net.runelite.api.mixins.Copy; +import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.Mixin; import net.runelite.api.mixins.Replace; import net.runelite.api.mixins.Shadow; @@ -49,6 +49,16 @@ public abstract class RSIndexDataBaseMixin implements RSIndexDataBase @Shadow("clientInstance") private static RSClient client; + @Inject + private boolean overlayOutdated; + + @Inject + @Override + public boolean isOverlayOutdated() + { + return overlayOutdated; + } + @Copy("getConfigData") abstract byte[] rs$getConfigData(int archiveId, int fileId); @@ -117,9 +127,7 @@ public abstract class RSIndexDataBaseMixin implements RSIndexDataBase log.warn("Mismatch in overlaid cache archive hash for {}/{}: {} != {}", indexData.getIndex(), archiveId, replaceHash, rsHash); - - Callbacks callbacks = client.getCallbacks(); - callbacks.overlayLoadFailed(this, archiveId, fileId); + overlayOutdated = true; } catch (IOException ex) {