Merge pull request #5578 from MagicfTail/ctr-zoom-rs2asm

Add option to require control to be held for zooming
This commit is contained in:
Abex
2018-10-01 21:59:08 -06:00
committed by GitHub
6 changed files with 200 additions and 87 deletions

View File

@@ -34,7 +34,8 @@ public interface ZoomConfig extends Config
@ConfigItem(
keyName = "enabled",
name = "Expand outer zoom limit",
description = "Configures whether or not the outer zoom limit is reduced"
description = "Configures whether or not the outer zoom limit is reduced",
position = 1
)
default boolean outerLimit()
{
@@ -44,7 +45,8 @@ public interface ZoomConfig extends Config
@ConfigItem(
keyName = "inner",
name = "Expand inner zoom limit",
description = "Configures whether or not the inner zoom limit is reduced"
description = "Configures whether or not the inner zoom limit is reduced",
position = 2
)
default boolean innerLimit()
{
@@ -54,10 +56,22 @@ public interface ZoomConfig extends Config
@ConfigItem(
keyName = "relaxCameraPitch",
name = "Vertical camera",
description = "Relax the camera's upper pitch limit"
description = "Relax the camera's upper pitch limit",
position = 3
)
default boolean relaxCameraPitch()
{
return false;
}
@ConfigItem(
keyName = "requireControlDown",
name = "Require control down",
description = "Configures if holding control is required for zooming",
position = 4
)
default boolean requireControlDown()
{
return false;
}
}

View File

@@ -28,10 +28,14 @@ package net.runelite.client.plugins.zoom;
import com.google.common.eventbus.Subscribe;
import com.google.inject.Inject;
import com.google.inject.Provides;
import java.awt.event.KeyEvent;
import net.runelite.api.Client;
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.FocusChanged;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
@@ -41,14 +45,19 @@ import net.runelite.client.plugins.PluginDescriptor;
tags = {"limit", "vertical"},
enabledByDefault = false
)
public class ZoomPlugin extends Plugin
public class ZoomPlugin extends Plugin implements KeyListener
{
private boolean controlDown;
@Inject
private Client client;
@Inject
private ZoomConfig zoomConfig;
@Inject
private KeyManager keyManager;
@Provides
ZoomConfig getConfig(ConfigManager configManager)
{
@@ -67,6 +76,12 @@ public class ZoomPlugin extends Plugin
int[] intStack = client.getIntStack();
int intStackSize = client.getIntStackSize();
if ("scrollWheelZoom".equals(event.getEventName()) && zoomConfig.requireControlDown() && !controlDown)
{
intStack[intStackSize - 1] = 1;
}
if (zoomConfig.outerLimit())
{
switch (event.getEventName())
@@ -117,16 +132,28 @@ public class ZoomPlugin extends Plugin
}
}
@Subscribe
public void onFocusChanged(FocusChanged event)
{
if (!event.isFocused())
{
controlDown = false;
}
}
@Override
protected void startUp()
{
client.setCameraPitchRelaxerEnabled(zoomConfig.relaxCameraPitch());
keyManager.registerKeyListener(this);
}
@Override
protected void shutDown()
{
client.setCameraPitchRelaxerEnabled(false);
keyManager.unregisterKeyListener(this);
controlDown = false;
}
@Subscribe
@@ -134,4 +161,27 @@ public class ZoomPlugin extends Plugin
{
client.setCameraPitchRelaxerEnabled(zoomConfig.relaxCameraPitch());
}
@Override
public void keyTyped(KeyEvent e)
{
}
@Override
public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_CONTROL)
{
controlDown = true;
}
}
@Override
public void keyReleased(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_CONTROL)
{
controlDown = false;
}
}
}

View File

@@ -1 +1 @@
E9536E0A6FD51C058A40D644FD0AD28A93778FD53873601DCCE04C97DD835BB0
49E9E1634C15928A1C5F03B8949E68C741D508A18B528CCB4B6D080EF29180D8

View File

@@ -1,91 +1,48 @@
.id 42
.int_stack_count 2
.id 39
.int_stack_count 1
.string_stack_count 0
.int_var_count 6
.int_var_count 4
.string_var_count 0
load_int 1
load_int 0
load_string "scrollWheelZoom"
runelite_callback
if_icmpeq LABEL18
load_int 0
iload 0
load_int 5
imul
isub
istore 1
load_int 320
istore 2
load_int 256
istore 3
get_varbit 6357
load_int 0
if_icmpeq LABEL14
jump LABEL33
LABEL14:
get_varbit 4606
load_int 0
if_icmpne LABEL4
jump LABEL5
LABEL4:
return
LABEL5:
load_int 700
load_string "fixedInnerZoomLimit"
runelite_callback
iload 0
invoke 1046
istore 0
load_int 195
load_string "fixedOuterZoomLimit"
runelite_callback
iload 0
invoke 1045
istore 0
load_int 715
load_string "resizableInnerZoomLimit"
runelite_callback
iload 1
invoke 1046
istore 1
load_int 175
load_string "resizableOuterZoomLimit"
runelite_callback
iload 1
invoke 1045
istore 1
iload 0
iload 1
set_zoom_distance
load_int 0
if_icmpne LABEL18
jump LABEL19
LABEL18:
return
LABEL19:
get_zoom_distance
istore 2
load_int 0
istore 3
get_viewport_size
iload 3
iload 1
add_percent
istore 3
iload 2
iload 1
add_percent
istore 2
iload 3
load_int 334
isub
istore 4
iload 4
load_int 0
if_icmplt LABEL39
jump LABEL42
LABEL39:
load_int 0
istore 4
jump LABEL48
LABEL42:
iload 4
load_int 100
if_icmpgt LABEL46
jump LABEL48
LABEL46:
load_int 100
istore 4
LABEL48:
iload 0
iload 1
iload 0
isub
iload 4
imul
load_int 100
idiv
iadd
istore 5
load_int 25
load_int 25
iload 5
imul
load_int 256
idiv
iadd
set_camera_focal_point_height
iload 0
iload 1
put_varc 74
put_varc 73
invoke 1049
return
iload 2
invoke 42
LABEL33:
return

View File

@@ -0,0 +1 @@
E9536E0A6FD51C058A40D644FD0AD28A93778FD53873601DCCE04C97DD835BB0

View File

@@ -0,0 +1,91 @@
.id 42
.int_stack_count 2
.string_stack_count 0
.int_var_count 6
.string_var_count 0
get_varbit 4606
load_int 0
if_icmpne LABEL4
jump LABEL5
LABEL4:
return
LABEL5:
load_int 700
load_string "fixedInnerZoomLimit"
runelite_callback
iload 0
invoke 1046
istore 0
load_int 195
load_string "fixedOuterZoomLimit"
runelite_callback
iload 0
invoke 1045
istore 0
load_int 715
load_string "resizableInnerZoomLimit"
runelite_callback
iload 1
invoke 1046
istore 1
load_int 175
load_string "resizableOuterZoomLimit"
runelite_callback
iload 1
invoke 1045
istore 1
iload 0
iload 1
set_zoom_distance
load_int 0
istore 2
load_int 0
istore 3
get_viewport_size
istore 3
istore 2
iload 3
load_int 334
isub
istore 4
iload 4
load_int 0
if_icmplt LABEL39
jump LABEL42
LABEL39:
load_int 0
istore 4
jump LABEL48
LABEL42:
iload 4
load_int 100
if_icmpgt LABEL46
jump LABEL48
LABEL46:
load_int 100
istore 4
LABEL48:
iload 0
iload 1
iload 0
isub
iload 4
imul
load_int 100
idiv
iadd
istore 5
load_int 25
load_int 25
iload 5
imul
load_int 256
idiv
iadd
set_camera_focal_point_height
iload 0
iload 1
put_varc 74
put_varc 73
invoke 1049
return