camera plugin: add Look South/East/West option to compass
This commit is contained in:
@@ -147,4 +147,15 @@ public interface CameraConfig extends Config
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "compassLook",
|
||||||
|
name = "Compass options",
|
||||||
|
description = "Adds Look South, East, and West options to the compass",
|
||||||
|
position = 10
|
||||||
|
)
|
||||||
|
default boolean compassLook()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import com.google.common.primitives.Ints;
|
|||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.util.Arrays;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
@@ -39,6 +40,7 @@ import net.runelite.api.ScriptID;
|
|||||||
import net.runelite.api.VarPlayer;
|
import net.runelite.api.VarPlayer;
|
||||||
import net.runelite.api.events.ClientTick;
|
import net.runelite.api.events.ClientTick;
|
||||||
import net.runelite.api.events.FocusChanged;
|
import net.runelite.api.events.FocusChanged;
|
||||||
|
import net.runelite.api.events.MenuEntryAdded;
|
||||||
import net.runelite.api.events.ScriptCallbackEvent;
|
import net.runelite.api.events.ScriptCallbackEvent;
|
||||||
import net.runelite.client.callback.ClientThread;
|
import net.runelite.client.callback.ClientThread;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
@@ -60,6 +62,10 @@ import net.runelite.client.plugins.PluginDescriptor;
|
|||||||
public class CameraPlugin extends Plugin implements KeyListener, MouseListener
|
public class CameraPlugin extends Plugin implements KeyListener, MouseListener
|
||||||
{
|
{
|
||||||
private static final int DEFAULT_ZOOM_INCREMENT = 25;
|
private static final int DEFAULT_ZOOM_INCREMENT = 25;
|
||||||
|
private static final String LOOK_NORTH = "Look North";
|
||||||
|
private static final String LOOK_SOUTH = "Look South";
|
||||||
|
private static final String LOOK_EAST = "Look East";
|
||||||
|
private static final String LOOK_WEST = "Look West";
|
||||||
|
|
||||||
private boolean controlDown;
|
private boolean controlDown;
|
||||||
// flags used to store the mousedown states
|
// flags used to store the mousedown states
|
||||||
@@ -111,6 +117,39 @@ public class CameraPlugin extends Plugin implements KeyListener, MouseListener
|
|||||||
controlDown = false;
|
controlDown = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onMenuEntryAdded(MenuEntryAdded menuEntryAdded)
|
||||||
|
{
|
||||||
|
if (menuEntryAdded.getType() == MenuAction.WIDGET_DEFAULT.getId() && menuEntryAdded.getOption().equals(LOOK_NORTH) && config.compassLook())
|
||||||
|
{
|
||||||
|
MenuEntry[] menuEntries = client.getMenuEntries();
|
||||||
|
int len = menuEntries.length;
|
||||||
|
MenuEntry north = menuEntries[len - 1];
|
||||||
|
|
||||||
|
menuEntries = Arrays.copyOf(menuEntries, len + 3);
|
||||||
|
|
||||||
|
// The handling for these entries is done in ToplevelCompassOp.rs2asm
|
||||||
|
menuEntries[--len] = createCameraLookEntry(menuEntryAdded, 4, LOOK_WEST);
|
||||||
|
menuEntries[++len] = createCameraLookEntry(menuEntryAdded, 3, LOOK_EAST);
|
||||||
|
menuEntries[++len] = createCameraLookEntry(menuEntryAdded, 2, LOOK_SOUTH);
|
||||||
|
menuEntries[++len] = north;
|
||||||
|
|
||||||
|
client.setMenuEntries(menuEntries);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private MenuEntry createCameraLookEntry(MenuEntryAdded lookNorth, int identifier, String option)
|
||||||
|
{
|
||||||
|
MenuEntry m = new MenuEntry();
|
||||||
|
m.setOption(option);
|
||||||
|
m.setTarget(lookNorth.getTarget());
|
||||||
|
m.setIdentifier(identifier);
|
||||||
|
m.setType(MenuAction.WIDGET_DEFAULT.getId());
|
||||||
|
m.setParam0(lookNorth.getActionParam0());
|
||||||
|
m.setParam1(lookNorth.getActionParam1());
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onScriptCallbackEvent(ScriptCallbackEvent event)
|
public void onScriptCallbackEvent(ScriptCallbackEvent event)
|
||||||
{
|
{
|
||||||
|
|||||||
1
runelite-client/src/main/scripts/ToplevelCompassOp.hash
Normal file
1
runelite-client/src/main/scripts/ToplevelCompassOp.hash
Normal file
@@ -0,0 +1 @@
|
|||||||
|
6A53DA1D918405E3F314E4350A9CF4002988E5C45E06D37A00AA725003FAD064
|
||||||
55
runelite-client/src/main/scripts/ToplevelCompassOp.rs2asm
Normal file
55
runelite-client/src/main/scripts/ToplevelCompassOp.rs2asm
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
.id 1050
|
||||||
|
.int_stack_count 1
|
||||||
|
.string_stack_count 0
|
||||||
|
.int_var_count 2 ; +1 for saving target angle
|
||||||
|
.string_var_count 0
|
||||||
|
; Remove check of op index
|
||||||
|
; iload 0
|
||||||
|
; iconst 1
|
||||||
|
; if_icmpne LABEL10
|
||||||
|
get_varbit 542
|
||||||
|
iconst 1
|
||||||
|
if_icmpeq LABEL10
|
||||||
|
get_varbit 4606
|
||||||
|
iconst 0
|
||||||
|
if_icmpne LABEL10
|
||||||
|
jump LABEL11
|
||||||
|
LABEL10:
|
||||||
|
return
|
||||||
|
LABEL11:
|
||||||
|
; switch on op index
|
||||||
|
iload 0
|
||||||
|
switch
|
||||||
|
1: LOOK_NORTH
|
||||||
|
2: LOOK_SOUTH
|
||||||
|
3: LOOK_EAST
|
||||||
|
4: LOOK_WEST
|
||||||
|
jump LABEL10
|
||||||
|
LOOK_NORTH:
|
||||||
|
iconst 0
|
||||||
|
istore 1
|
||||||
|
jump LOOK
|
||||||
|
LOOK_SOUTH:
|
||||||
|
iconst 1024
|
||||||
|
istore 1
|
||||||
|
jump LOOK
|
||||||
|
LOOK_EAST:
|
||||||
|
iconst 1536
|
||||||
|
istore 1
|
||||||
|
jump LOOK
|
||||||
|
LOOK_WEST:
|
||||||
|
iconst 512
|
||||||
|
istore 1
|
||||||
|
jump LOOK
|
||||||
|
LOOK:
|
||||||
|
iconst 2266
|
||||||
|
iconst 1
|
||||||
|
iconst 0
|
||||||
|
sound_synth
|
||||||
|
iconst 225
|
||||||
|
iconst 5
|
||||||
|
randominc
|
||||||
|
add
|
||||||
|
iload 1 ; load target angle
|
||||||
|
cam_forceangle
|
||||||
|
return
|
||||||
Reference in New Issue
Block a user