party: make ping hotkey configurable
This is conflicting with shift-click swaps currently
This commit is contained in:
@@ -28,6 +28,7 @@ package net.runelite.client.plugins.party;
|
|||||||
import net.runelite.client.config.Config;
|
import net.runelite.client.config.Config;
|
||||||
import net.runelite.client.config.ConfigGroup;
|
import net.runelite.client.config.ConfigGroup;
|
||||||
import net.runelite.client.config.ConfigItem;
|
import net.runelite.client.config.ConfigItem;
|
||||||
|
import net.runelite.client.config.Keybind;
|
||||||
|
|
||||||
@ConfigGroup(PartyConfig.GROUP)
|
@ConfigGroup(PartyConfig.GROUP)
|
||||||
public interface PartyConfig extends Config
|
public interface PartyConfig extends Config
|
||||||
@@ -37,7 +38,7 @@ public interface PartyConfig extends Config
|
|||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
keyName = "pings",
|
keyName = "pings",
|
||||||
name = "Pings",
|
name = "Pings",
|
||||||
description = "Enables party pings (shift + left-click)",
|
description = "Enables party pings",
|
||||||
position = 1
|
position = 1
|
||||||
)
|
)
|
||||||
default boolean pings()
|
default boolean pings()
|
||||||
@@ -60,13 +61,24 @@ public interface PartyConfig extends Config
|
|||||||
keyName = "recolorNames",
|
keyName = "recolorNames",
|
||||||
name = "Recolor names",
|
name = "Recolor names",
|
||||||
description = "Recolor party members names based on unique color hash",
|
description = "Recolor party members names based on unique color hash",
|
||||||
position = 4
|
position = 3
|
||||||
)
|
)
|
||||||
default boolean recolorNames()
|
default boolean recolorNames()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "pingHotkey",
|
||||||
|
name = "Ping hotkey",
|
||||||
|
description = "Key to hold to send a tile ping",
|
||||||
|
position = 4
|
||||||
|
)
|
||||||
|
default Keybind pingHotkey()
|
||||||
|
{
|
||||||
|
return Keybind.NOT_SET;
|
||||||
|
}
|
||||||
|
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
keyName = "previousPartyId",
|
keyName = "previousPartyId",
|
||||||
name = "",
|
name = "",
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ import lombok.Getter;
|
|||||||
import net.runelite.api.ChatMessageType;
|
import net.runelite.api.ChatMessageType;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.GameState;
|
import net.runelite.api.GameState;
|
||||||
import net.runelite.api.KeyCode;
|
|
||||||
import net.runelite.api.MenuAction;
|
import net.runelite.api.MenuAction;
|
||||||
import net.runelite.api.MenuEntry;
|
import net.runelite.api.MenuEntry;
|
||||||
import net.runelite.api.Player;
|
import net.runelite.api.Player;
|
||||||
@@ -54,6 +53,7 @@ import net.runelite.api.SoundEffectID;
|
|||||||
import net.runelite.api.Tile;
|
import net.runelite.api.Tile;
|
||||||
import net.runelite.api.coords.WorldPoint;
|
import net.runelite.api.coords.WorldPoint;
|
||||||
import net.runelite.api.events.CommandExecuted;
|
import net.runelite.api.events.CommandExecuted;
|
||||||
|
import net.runelite.api.events.FocusChanged;
|
||||||
import net.runelite.api.events.GameStateChanged;
|
import net.runelite.api.events.GameStateChanged;
|
||||||
import net.runelite.api.events.GameTick;
|
import net.runelite.api.events.GameTick;
|
||||||
import net.runelite.api.events.MenuOptionClicked;
|
import net.runelite.api.events.MenuOptionClicked;
|
||||||
@@ -66,6 +66,7 @@ import net.runelite.client.events.ConfigChanged;
|
|||||||
import net.runelite.client.events.OverlayMenuClicked;
|
import net.runelite.client.events.OverlayMenuClicked;
|
||||||
import net.runelite.client.events.PartyChanged;
|
import net.runelite.client.events.PartyChanged;
|
||||||
import net.runelite.client.events.PartyMemberAvatar;
|
import net.runelite.client.events.PartyMemberAvatar;
|
||||||
|
import net.runelite.client.input.KeyManager;
|
||||||
import net.runelite.client.party.PartyMember;
|
import net.runelite.client.party.PartyMember;
|
||||||
import net.runelite.client.party.PartyService;
|
import net.runelite.client.party.PartyService;
|
||||||
import net.runelite.client.party.WSClient;
|
import net.runelite.client.party.WSClient;
|
||||||
@@ -87,6 +88,7 @@ import net.runelite.client.ui.overlay.OverlayManager;
|
|||||||
import net.runelite.client.ui.overlay.worldmap.WorldMapPoint;
|
import net.runelite.client.ui.overlay.worldmap.WorldMapPoint;
|
||||||
import net.runelite.client.ui.overlay.worldmap.WorldMapPointManager;
|
import net.runelite.client.ui.overlay.worldmap.WorldMapPointManager;
|
||||||
import net.runelite.client.util.ColorUtil;
|
import net.runelite.client.util.ColorUtil;
|
||||||
|
import net.runelite.client.util.HotkeyListener;
|
||||||
import net.runelite.client.util.ImageUtil;
|
import net.runelite.client.util.ImageUtil;
|
||||||
import net.runelite.client.util.Text;
|
import net.runelite.client.util.Text;
|
||||||
|
|
||||||
@@ -128,6 +130,9 @@ public class PartyPlugin extends Plugin
|
|||||||
@Inject
|
@Inject
|
||||||
private ClientToolbar clientToolbar;
|
private ClientToolbar clientToolbar;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private KeyManager keyManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named("developerMode")
|
@Named("developerMode")
|
||||||
boolean developerMode;
|
boolean developerMode;
|
||||||
@@ -145,6 +150,23 @@ public class PartyPlugin extends Plugin
|
|||||||
private String lastCharacterName = "";
|
private String lastCharacterName = "";
|
||||||
private WorldPoint lastLocation;
|
private WorldPoint lastLocation;
|
||||||
|
|
||||||
|
private final HotkeyListener hotkeyListener = new HotkeyListener(() -> config.pingHotkey())
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void hotkeyPressed()
|
||||||
|
{
|
||||||
|
hotkeyPressed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void hotkeyReleased()
|
||||||
|
{
|
||||||
|
hotkeyPressed = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private boolean hotkeyPressed = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configure(Binder binder)
|
public void configure(Binder binder)
|
||||||
{
|
{
|
||||||
@@ -168,6 +190,7 @@ public class PartyPlugin extends Plugin
|
|||||||
clientToolbar.addNavigation(navButton);
|
clientToolbar.addNavigation(navButton);
|
||||||
|
|
||||||
overlayManager.add(partyPingOverlay);
|
overlayManager.add(partyPingOverlay);
|
||||||
|
keyManager.registerKeyListener(hotkeyListener);
|
||||||
wsClient.registerMessage(SkillUpdate.class);
|
wsClient.registerMessage(SkillUpdate.class);
|
||||||
wsClient.registerMessage(TilePing.class);
|
wsClient.registerMessage(TilePing.class);
|
||||||
wsClient.registerMessage(LocationUpdate.class);
|
wsClient.registerMessage(LocationUpdate.class);
|
||||||
@@ -187,6 +210,7 @@ public class PartyPlugin extends Plugin
|
|||||||
pendingTilePings.clear();
|
pendingTilePings.clear();
|
||||||
worldMapManager.removeIf(PartyWorldMapPoint.class::isInstance);
|
worldMapManager.removeIf(PartyWorldMapPoint.class::isInstance);
|
||||||
overlayManager.remove(partyPingOverlay);
|
overlayManager.remove(partyPingOverlay);
|
||||||
|
keyManager.unregisterKeyListener(hotkeyListener);
|
||||||
wsClient.unregisterMessage(SkillUpdate.class);
|
wsClient.unregisterMessage(SkillUpdate.class);
|
||||||
wsClient.unregisterMessage(TilePing.class);
|
wsClient.unregisterMessage(TilePing.class);
|
||||||
wsClient.unregisterMessage(LocationUpdate.class);
|
wsClient.unregisterMessage(LocationUpdate.class);
|
||||||
@@ -200,6 +224,15 @@ public class PartyPlugin extends Plugin
|
|||||||
return configManager.getConfig(PartyConfig.class);
|
return configManager.getConfig(PartyConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onFocusChanged(FocusChanged focusChanged)
|
||||||
|
{
|
||||||
|
if (!focusChanged.isFocused())
|
||||||
|
{
|
||||||
|
hotkeyPressed = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onOverlayMenuClicked(OverlayMenuClicked event)
|
public void onOverlayMenuClicked(OverlayMenuClicked event)
|
||||||
{
|
{
|
||||||
@@ -229,7 +262,7 @@ public class PartyPlugin extends Plugin
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onMenuOptionClicked(MenuOptionClicked event)
|
public void onMenuOptionClicked(MenuOptionClicked event)
|
||||||
{
|
{
|
||||||
if (!client.isKeyPressed(KeyCode.KC_SHIFT) || client.isMenuOpen() || party.getMembers().isEmpty() || !config.pings())
|
if (!hotkeyPressed || client.isMenuOpen() || party.getMembers().isEmpty() || !config.pings())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user