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.ConfigGroup;
|
||||
import net.runelite.client.config.ConfigItem;
|
||||
import net.runelite.client.config.Keybind;
|
||||
|
||||
@ConfigGroup(PartyConfig.GROUP)
|
||||
public interface PartyConfig extends Config
|
||||
@@ -37,7 +38,7 @@ public interface PartyConfig extends Config
|
||||
@ConfigItem(
|
||||
keyName = "pings",
|
||||
name = "Pings",
|
||||
description = "Enables party pings (shift + left-click)",
|
||||
description = "Enables party pings",
|
||||
position = 1
|
||||
)
|
||||
default boolean pings()
|
||||
@@ -60,13 +61,24 @@ public interface PartyConfig extends Config
|
||||
keyName = "recolorNames",
|
||||
name = "Recolor names",
|
||||
description = "Recolor party members names based on unique color hash",
|
||||
position = 4
|
||||
position = 3
|
||||
)
|
||||
default boolean recolorNames()
|
||||
{
|
||||
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(
|
||||
keyName = "previousPartyId",
|
||||
name = "",
|
||||
|
||||
@@ -45,7 +45,6 @@ import lombok.Getter;
|
||||
import net.runelite.api.ChatMessageType;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.GameState;
|
||||
import net.runelite.api.KeyCode;
|
||||
import net.runelite.api.MenuAction;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import net.runelite.api.Player;
|
||||
@@ -54,6 +53,7 @@ import net.runelite.api.SoundEffectID;
|
||||
import net.runelite.api.Tile;
|
||||
import net.runelite.api.coords.WorldPoint;
|
||||
import net.runelite.api.events.CommandExecuted;
|
||||
import net.runelite.api.events.FocusChanged;
|
||||
import net.runelite.api.events.GameStateChanged;
|
||||
import net.runelite.api.events.GameTick;
|
||||
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.PartyChanged;
|
||||
import net.runelite.client.events.PartyMemberAvatar;
|
||||
import net.runelite.client.input.KeyManager;
|
||||
import net.runelite.client.party.PartyMember;
|
||||
import net.runelite.client.party.PartyService;
|
||||
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.WorldMapPointManager;
|
||||
import net.runelite.client.util.ColorUtil;
|
||||
import net.runelite.client.util.HotkeyListener;
|
||||
import net.runelite.client.util.ImageUtil;
|
||||
import net.runelite.client.util.Text;
|
||||
|
||||
@@ -128,6 +130,9 @@ public class PartyPlugin extends Plugin
|
||||
@Inject
|
||||
private ClientToolbar clientToolbar;
|
||||
|
||||
@Inject
|
||||
private KeyManager keyManager;
|
||||
|
||||
@Inject
|
||||
@Named("developerMode")
|
||||
boolean developerMode;
|
||||
@@ -145,6 +150,23 @@ public class PartyPlugin extends Plugin
|
||||
private String lastCharacterName = "";
|
||||
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
|
||||
public void configure(Binder binder)
|
||||
{
|
||||
@@ -168,6 +190,7 @@ public class PartyPlugin extends Plugin
|
||||
clientToolbar.addNavigation(navButton);
|
||||
|
||||
overlayManager.add(partyPingOverlay);
|
||||
keyManager.registerKeyListener(hotkeyListener);
|
||||
wsClient.registerMessage(SkillUpdate.class);
|
||||
wsClient.registerMessage(TilePing.class);
|
||||
wsClient.registerMessage(LocationUpdate.class);
|
||||
@@ -187,6 +210,7 @@ public class PartyPlugin extends Plugin
|
||||
pendingTilePings.clear();
|
||||
worldMapManager.removeIf(PartyWorldMapPoint.class::isInstance);
|
||||
overlayManager.remove(partyPingOverlay);
|
||||
keyManager.unregisterKeyListener(hotkeyListener);
|
||||
wsClient.unregisterMessage(SkillUpdate.class);
|
||||
wsClient.unregisterMessage(TilePing.class);
|
||||
wsClient.unregisterMessage(LocationUpdate.class);
|
||||
@@ -200,6 +224,15 @@ public class PartyPlugin extends Plugin
|
||||
return configManager.getConfig(PartyConfig.class);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onFocusChanged(FocusChanged focusChanged)
|
||||
{
|
||||
if (!focusChanged.isFocused())
|
||||
{
|
||||
hotkeyPressed = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onOverlayMenuClicked(OverlayMenuClicked event)
|
||||
{
|
||||
@@ -229,7 +262,7 @@ public class PartyPlugin extends Plugin
|
||||
@Subscribe
|
||||
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user