diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/zoom/ZoomConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/zoom/ZoomConfig.java index a76fc33955..af742013c8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/zoom/ZoomConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/zoom/ZoomConfig.java @@ -42,11 +42,22 @@ public interface ZoomConfig extends Config return false; } + @ConfigItem( + keyName = "outerLimit", + name = "Expand outer zoom limit", + description = "Configures how much the outer zoom limit is increased, 0 is off", + position = 2 + ) + default int outerLimit() + { + return 0; + } + @ConfigItem( keyName = "relaxCameraPitch", name = "Vertical camera", description = "Relax the camera's upper pitch limit", - position = 2 + position = 3 ) default boolean relaxCameraPitch() { @@ -57,7 +68,7 @@ public interface ZoomConfig extends Config keyName = "requireControlDown", name = "Require control down", description = "Configures if holding control is required for zooming", - position = 3 + position = 4 ) default boolean requireControlDown() { 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 d60a903a60..893e1210df 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 @@ -54,6 +54,9 @@ public class ZoomPlugin extends Plugin implements KeyListener */ private static final int INNER_ZOOM_LIMIT = 1004; + private static final int OUTER_CONFIG_ZOOM_LIMIT_MIN = 0; + private static final int OUTER_CONFIG_ZOOM_LIMIT_MAX = 400; + private boolean controlDown; @Inject @@ -95,6 +98,14 @@ public class ZoomPlugin extends Plugin implements KeyListener return; } + if ("outerZoomLimit".equals(event.getEventName())) + { + int outerLimit = Math.max(OUTER_CONFIG_ZOOM_LIMIT_MIN, Math.min(OUTER_CONFIG_ZOOM_LIMIT_MAX, zoomConfig.outerLimit())); + int outerZoomLimit = 128 - outerLimit; + intStack[intStackSize - 1] = outerZoomLimit; + return; + } + if (zoomConfig.innerLimit()) { // This lets the options panel's slider have an exponential rate diff --git a/runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm b/runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm index a7d3773284..bb6da79dd8 100644 --- a/runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm +++ b/runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm @@ -276,6 +276,8 @@ LABEL253: 6202 get_varc 73 load_int 128 + load_string "outerZoomLimit" + runelite_callback if_icmpge LABEL262 jump LABEL278 LABEL262: @@ -288,6 +290,8 @@ LABEL262: LABEL266: get_varc 74 load_int 128 + load_string "outerZoomLimit" + runelite_callback if_icmpge LABEL270 jump LABEL278 LABEL270: diff --git a/runelite-client/src/main/scripts/OptionsPanelZoomMouseListener.rs2asm b/runelite-client/src/main/scripts/OptionsPanelZoomMouseListener.rs2asm index cb1d9c868e..35bc2c04d4 100644 --- a/runelite-client/src/main/scripts/OptionsPanelZoomMouseListener.rs2asm +++ b/runelite-client/src/main/scripts/OptionsPanelZoomMouseListener.rs2asm @@ -38,12 +38,16 @@ LABEL5: load_string "innerZoomLimit" runelite_callback load_int 128 + load_string "outerZoomLimit" + runelite_callback isub istore 6 ; resizable delta load_int 896 load_string "innerZoomLimit" runelite_callback load_int 128 + load_string "outerZoomLimit" + runelite_callback isub istore 7 ; fixed delta iload 2 @@ -56,6 +60,8 @@ LABEL5: runelite_callback pop_int load_int 128 + load_string "outerZoomLimit" + runelite_callback iadd istore 3 iload 2 @@ -68,6 +74,8 @@ LABEL5: runelite_callback pop_int load_int 128 + load_string "outerZoomLimit" + runelite_callback iadd istore 4 iload 4 diff --git a/runelite-client/src/main/scripts/OptionsPanelZoomUpdater.rs2asm b/runelite-client/src/main/scripts/OptionsPanelZoomUpdater.rs2asm index b56ce6ba8f..ae8b33dd98 100644 --- a/runelite-client/src/main/scripts/OptionsPanelZoomUpdater.rs2asm +++ b/runelite-client/src/main/scripts/OptionsPanelZoomUpdater.rs2asm @@ -11,12 +11,16 @@ load_string "innerZoomLimit" runelite_callback load_int 128 + load_string "outerZoomLimit" + runelite_callback isub istore 0 load_int 896 load_string "innerZoomLimit" runelite_callback load_int 128 + load_string "outerZoomLimit" + runelite_callback isub istore 1 load_int 17104910 @@ -41,6 +45,8 @@ LABEL27: get_varc 74 load_int 128 + load_string "outerZoomLimit" + runelite_callback isub iload 0 load_string "zoomExpToLin" @@ -55,6 +61,8 @@ LABEL27: LABEL36: get_varc 73 load_int 128 + load_string "outerZoomLimit" + runelite_callback isub iload 0 load_string "zoomExpToLin" diff --git a/runelite-client/src/main/scripts/ZoomHandler.rs2asm b/runelite-client/src/main/scripts/ZoomHandler.rs2asm index 21fd9b5614..b19086168e 100644 --- a/runelite-client/src/main/scripts/ZoomHandler.rs2asm +++ b/runelite-client/src/main/scripts/ZoomHandler.rs2asm @@ -17,6 +17,8 @@ LABEL5: invoke 1046 istore 0 load_int 128 + load_string "outerZoomLimit" + runelite_callback iload 0 invoke 1045 istore 0 @@ -27,6 +29,8 @@ LABEL5: invoke 1046 istore 1 load_int 128 + load_string "outerZoomLimit" + runelite_callback iload 1 invoke 1045 istore 1