Made plugins reload when display mode changes

This commit is contained in:
Ceikry 2022-12-02 07:47:29 -06:00
parent e9e9775ace
commit 50d43b0a2f
3 changed files with 25 additions and 0 deletions

View file

@ -5,6 +5,10 @@ import plugin.api.MiniMenuEntry;
import plugin.api.MiniMenuType;
import rt4.*;
import java.awt.event.KeyAdapter;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseListener;
import java.awt.event.MouseWheelListener;
import java.io.*;
import java.net.URL;
import java.net.URLClassLoader;
@ -29,6 +33,19 @@ public class PluginRepository {
public static int lastMiniMenu;
public static void reloadPlugins() {
for (KeyAdapter k : API.registeredKeyListeners) {
GameShell.canvas.removeKeyListener(k);
}
for (MouseAdapter m : API.registeredMouseListeners) {
GameShell.canvas.removeMouseListener(m);
GameShell.canvas.removeMouseMotionListener(m);
}
for (MouseWheelListener mw : API.registeredWheelListeners) {
GameShell.canvas.removeMouseWheelListener(mw);
}
API.registeredWheelListeners.clear();
API.registeredMouseListeners.clear();
API.registeredKeyListeners.clear();
loadedPlugins.clear();
Init();
}

View file

@ -18,6 +18,9 @@ import static rt4.MathUtils.clamp;
public class API {
public static Runnable[] miniMenuCustomActions = new Runnable[10];
public static int customMiniMenuIndex = 0;
public static ArrayList<KeyAdapter> registeredKeyListeners = new ArrayList<>();
public static ArrayList<MouseAdapter> registeredMouseListeners = new ArrayList<>();
public static ArrayList<MouseWheelListener> registeredWheelListeners = new ArrayList<>();
public static void DrawText(FontType fontType, FontColor color, TextModifier mod, String text, int screenX, int screenY) {
JagString js = JagString.of(text);
@ -127,14 +130,17 @@ public class API {
public static void AddMouseListener(MouseAdapter m) {
GameShell.canvas.addMouseListener(m);
GameShell.canvas.addMouseMotionListener(m);
registeredMouseListeners.add(m);
}
public static void AddMouseWheelListener(MouseWheelListener mw) {
GameShell.canvas.addMouseWheelListener(mw);
registeredWheelListeners.add(mw);
}
public static void AddKeyboardListener(KeyAdapter k) {
GameShell.canvas.addKeyListener(k);
registeredKeyListeners.add(k);
}
public static void SetCameraYaw(double targetYaw) {

View file

@ -4,6 +4,7 @@ import org.openrs2.deob.annotation.OriginalArg;
import org.openrs2.deob.annotation.OriginalClass;
import org.openrs2.deob.annotation.OriginalMember;
import org.openrs2.deob.annotation.Pc;
import plugin.PluginRepository;
import java.awt.*;
@ -235,6 +236,7 @@ public final class DisplayMode {
InterfaceList.aBooleanArray100[local466] = true;
}
GameShell.fullRedraw = true;
PluginRepository.reloadPlugins();
}
@OriginalMember(owner = "client!ab", name = "c", descriptor = "(B)[Lclient!od;")