zoom plugin: add control to reset zoom
This commit is contained in:
@@ -139,6 +139,17 @@ public final class ScriptID
|
|||||||
*/
|
*/
|
||||||
public static final int DIARY_QUEST_UPDATE_LINECOUNT = 2523;
|
public static final int DIARY_QUEST_UPDATE_LINECOUNT = 2523;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles zoom input
|
||||||
|
*
|
||||||
|
* Updates the VarClientInts (73, 74) to this same value
|
||||||
|
* <ul>
|
||||||
|
* <li> int Reset zoom position </li>
|
||||||
|
* <li> int Reset zoom position </li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
|
public static final int CAMERA_DO_ZOOM = 42;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Does nothing
|
* Does nothing
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, Jacob M <https://github.com/jacoblairm>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
* list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
package net.runelite.client.plugins.zoom;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum ControlFunction
|
||||||
|
{
|
||||||
|
NONE("None"),
|
||||||
|
CONTROL_TO_ZOOM("Hold to zoom"),
|
||||||
|
CONTROL_TO_RESET("Reset zoom");
|
||||||
|
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return getName();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -73,13 +73,28 @@ public interface ZoomConfig extends Config
|
|||||||
}
|
}
|
||||||
|
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
keyName = "requireControlDown",
|
keyName = "controlFunction",
|
||||||
name = "Require control down",
|
name = "Control Function",
|
||||||
description = "Configures if holding control is required for zooming",
|
description = "Configures the zoom function when control is pressed",
|
||||||
position = 4
|
position = 4
|
||||||
)
|
)
|
||||||
default boolean requireControlDown()
|
default ControlFunction controlFunction()
|
||||||
{
|
{
|
||||||
return false;
|
return ControlFunction.NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "ctrlZoomValue",
|
||||||
|
name = "Reset zoom position",
|
||||||
|
description = "Position of zoom when it is reset",
|
||||||
|
position = 5
|
||||||
|
)
|
||||||
|
@Range(
|
||||||
|
min = OUTER_LIMIT_MIN,
|
||||||
|
max = OUTER_LIMIT_MAX
|
||||||
|
)
|
||||||
|
default int ctrlZoomValue()
|
||||||
|
{
|
||||||
|
return 512;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,9 +30,11 @@ import com.google.inject.Inject;
|
|||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
|
import net.runelite.api.ScriptID;
|
||||||
import net.runelite.api.events.ConfigChanged;
|
import net.runelite.api.events.ConfigChanged;
|
||||||
import net.runelite.api.events.FocusChanged;
|
import net.runelite.api.events.FocusChanged;
|
||||||
import net.runelite.api.events.ScriptCallbackEvent;
|
import net.runelite.api.events.ScriptCallbackEvent;
|
||||||
|
import net.runelite.client.callback.ClientThread;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
import net.runelite.client.eventbus.Subscribe;
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
import net.runelite.client.input.KeyListener;
|
import net.runelite.client.input.KeyListener;
|
||||||
@@ -60,6 +62,9 @@ public class ZoomPlugin extends Plugin implements KeyListener
|
|||||||
@Inject
|
@Inject
|
||||||
private Client client;
|
private Client client;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ClientThread clientThread;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ZoomConfig zoomConfig;
|
private ZoomConfig zoomConfig;
|
||||||
|
|
||||||
@@ -85,7 +90,7 @@ public class ZoomPlugin extends Plugin implements KeyListener
|
|||||||
int[] intStack = client.getIntStack();
|
int[] intStack = client.getIntStack();
|
||||||
int intStackSize = client.getIntStackSize();
|
int intStackSize = client.getIntStackSize();
|
||||||
|
|
||||||
if ("scrollWheelZoom".equals(event.getEventName()) && zoomConfig.requireControlDown() && !controlDown)
|
if (!controlDown && "scrollWheelZoom".equals(event.getEventName()) && zoomConfig.controlFunction() == ControlFunction.CONTROL_TO_ZOOM)
|
||||||
{
|
{
|
||||||
intStack[intStackSize - 1] = 1;
|
intStack[intStackSize - 1] = 1;
|
||||||
}
|
}
|
||||||
@@ -180,6 +185,12 @@ public class ZoomPlugin extends Plugin implements KeyListener
|
|||||||
if (e.getKeyCode() == KeyEvent.VK_CONTROL)
|
if (e.getKeyCode() == KeyEvent.VK_CONTROL)
|
||||||
{
|
{
|
||||||
controlDown = false;
|
controlDown = false;
|
||||||
|
|
||||||
|
if (zoomConfig.controlFunction() == ControlFunction.CONTROL_TO_RESET)
|
||||||
|
{
|
||||||
|
final int zoomValue = Ints.constrainToRange(zoomConfig.ctrlZoomValue(), zoomConfig.OUTER_LIMIT_MIN, INNER_ZOOM_LIMIT);
|
||||||
|
clientThread.invokeLater(() -> client.runScript(ScriptID.CAMERA_DO_ZOOM, zoomValue, zoomValue));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user