camera plugin: add Look South/East/West option to compass

This commit is contained in:
Adam
2020-01-03 09:52:20 -05:00
parent 49a7c18ad6
commit da0f507ffb
4 changed files with 106 additions and 0 deletions

View File

@@ -147,4 +147,15 @@ public interface CameraConfig extends Config
{
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;
}
}

View File

@@ -30,6 +30,7 @@ import com.google.common.primitives.Ints;
import com.google.inject.Provides;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.util.Arrays;
import javax.inject.Inject;
import javax.swing.SwingUtilities;
import net.runelite.api.Client;
@@ -39,6 +40,7 @@ import net.runelite.api.ScriptID;
import net.runelite.api.VarPlayer;
import net.runelite.api.events.ClientTick;
import net.runelite.api.events.FocusChanged;
import net.runelite.api.events.MenuEntryAdded;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager;
@@ -60,6 +62,10 @@ import net.runelite.client.plugins.PluginDescriptor;
public class CameraPlugin extends Plugin implements KeyListener, MouseListener
{
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;
// flags used to store the mousedown states
@@ -111,6 +117,39 @@ public class CameraPlugin extends Plugin implements KeyListener, MouseListener
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
public void onScriptCallbackEvent(ScriptCallbackEvent event)
{

View File

@@ -0,0 +1 @@
6A53DA1D918405E3F314E4350A9CF4002988E5C45E06D37A00AA725003FAD064

View 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