Merge pull request #1721 from Lucwousin/anti-crossdressing

antidrag: improvements/fixes
This commit is contained in:
Lucwousin
2019-10-06 12:37:10 +02:00
committed by GitHub
3 changed files with 95 additions and 110 deletions

View File

@@ -101,14 +101,14 @@ public interface AntiDragConfig extends Config
} }
@ConfigItem( @ConfigItem(
keyName = "reqfocus", keyName = "reqFocus",
name = "Reset on focus loss", name = "Reset on focus loss",
description = "Disable antidrag when losing focus (like alt tabbing)", description = "Disable antidrag when losing focus (like alt tabbing)",
position = 5, position = 5,
hidden = true, hidden = true,
unhide = "toggleKeyBind || holdKeyBind" unhide = "toggleKeyBind || holdKeyBind"
) )
default boolean reqfocus() default boolean reqFocus()
{ {
return false; return false;
} }

View File

@@ -31,6 +31,8 @@ import java.awt.Dimension;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Point; import java.awt.Point;
import java.awt.Rectangle; import java.awt.Rectangle;
import lombok.AccessLevel;
import lombok.Setter;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayLayer;
@@ -43,12 +45,13 @@ public class AntiDragOverlay extends Overlay
private static final int RADIUS = 20; private static final int RADIUS = 20;
private final Client client; private final Client client;
private final AntiDragPlugin plugin;
@Setter(AccessLevel.PACKAGE)
private Color color;
@Inject @Inject
private AntiDragOverlay(final Client client, final AntiDragPlugin plugin) private AntiDragOverlay(final Client client)
{ {
this.plugin = plugin;
this.client = client; this.client = client;
setPosition(OverlayPosition.TOOLTIP); setPosition(OverlayPosition.TOOLTIP);
setPriority(OverlayPriority.HIGHEST); setPriority(OverlayPriority.HIGHEST);
@@ -58,7 +61,6 @@ public class AntiDragOverlay extends Overlay
@Override @Override
public Dimension render(Graphics2D g) public Dimension render(Graphics2D g)
{ {
final Color color = plugin.getColor();
g.setColor(color); g.setColor(color);
final net.runelite.api.Point mouseCanvasPosition = client.getMouseCanvasPosition(); final net.runelite.api.Point mouseCanvasPosition = client.getMouseCanvasPosition();

View File

@@ -26,12 +26,10 @@
package net.runelite.client.plugins.antidrag; package net.runelite.client.plugins.antidrag;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.awt.Color;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import lombok.AccessLevel;
import lombok.Getter;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState;
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.GameStateChanged; import net.runelite.api.events.GameStateChanged;
@@ -58,8 +56,6 @@ public class AntiDragPlugin extends Plugin
{ {
private static final int DEFAULT_DELAY = 5; private static final int DEFAULT_DELAY = 5;
private boolean toggleDrag;
@Inject @Inject
private Client client; private Client client;
@@ -90,30 +86,25 @@ public class AntiDragPlugin extends Plugin
return configManager.getConfig(AntiDragConfig.class); return configManager.getConfig(AntiDragConfig.class);
} }
private boolean alwaysOn; private boolean toggleDrag;
private boolean toggleKeyBind;
private boolean holdKeyBind;
private Keybind key;
private int dragDelay;
private boolean reqfocus;
@Getter(AccessLevel.PACKAGE)
private boolean configOverlay; private boolean configOverlay;
@Getter(AccessLevel.PACKAGE)
private Color color;
private boolean changeCursor; private boolean changeCursor;
private CustomCursor selectedCursor; private CustomCursor selectedCursor;
private Keybind key;
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlay.setColor(config.color());
addSubscriptions(); addSubscriptions();
updateConfig(); updateConfig();
updateKeyListeners();
if (this.toggleKeyBind || this.holdKeyBind) if (config.alwaysOn())
{ {
keyManager.registerKeyListener(hotkeyListener); client.setInventoryDragDelay(config.dragDelay());
} }
client.setInventoryDragDelay(this.alwaysOn ? this.dragDelay : DEFAULT_DELAY);
} }
@Override @Override
@@ -122,7 +113,8 @@ public class AntiDragPlugin extends Plugin
eventBus.unregister(this); eventBus.unregister(this);
client.setInventoryDragDelay(DEFAULT_DELAY); client.setInventoryDragDelay(DEFAULT_DELAY);
keyManager.unregisterKeyListener(hotkeyListener); keyManager.unregisterKeyListener(holdListener);
keyManager.unregisterKeyListener(toggleListener);
toggleDrag = false; toggleDrag = false;
overlayManager.remove(overlay); overlayManager.remove(overlay);
clientUI.resetCursor(); clientUI.resetCursor();
@@ -141,92 +133,87 @@ public class AntiDragPlugin extends Plugin
{ {
updateConfig(); updateConfig();
if (event.getKey().equals("toggleKeyBind")) switch (event.getKey())
{ {
if (this.toggleKeyBind) case "toggleKeyBind":
{ case "holdKeyBind":
keyManager.registerKeyListener(hotkeyListener); updateKeyListeners();
} break;
else case "alwaysOn":
{ client.setInventoryDragDelay(config.alwaysOn() ? config.dragDelay() : DEFAULT_DELAY);
keyManager.unregisterKeyListener(hotkeyListener); break;
} case "dragDelay":
} if (config.alwaysOn())
if {
(event.getKey().equals("holdKeyBind")) client.setInventoryDragDelay(config.dragDelay());
{ }
if (this.holdKeyBind) break;
{ case ("changeCursor"):
keyManager.registerKeyListener(hotkeyListener); clientUI.resetCursor();
} break;
else case ("color"):
{ overlay.setColor(config.color());
keyManager.unregisterKeyListener(hotkeyListener); break;
}
}
if (event.getKey().equals("alwaysOn"))
{
client.setInventoryDragDelay(this.alwaysOn ? this.dragDelay : DEFAULT_DELAY);
}
if (event.getKey().equals("dragDelay") && this.alwaysOn)
{
client.setInventoryDragDelay(this.dragDelay);
}
if (event.getKey().equals(("changeCursor")))
{
clientUI.resetCursor();
} }
} }
} }
private void onGameStateChanged(GameStateChanged event) private void onGameStateChanged(GameStateChanged event)
{ {
switch (event.getGameState()) if (event.getGameState() == GameState.LOGIN_SCREEN)
{ {
case LOGGED_IN: keyManager.unregisterKeyListener(toggleListener);
if (toggleKeyBind || holdKeyBind) keyManager.unregisterKeyListener(holdListener);
{ }
keyManager.registerKeyListener(hotkeyListener); else if (event.getGameState() == GameState.LOGGING_IN)
} {
break; updateKeyListeners();
case LOGIN_SCREEN:
keyManager.unregisterKeyListener(hotkeyListener);
} }
} }
private void updateConfig() private void updateConfig()
{ {
this.alwaysOn = config.alwaysOn();
this.toggleKeyBind = config.toggleKeyBind();
this.holdKeyBind = config.holdKeyBind();
this.key = config.key(); this.key = config.key();
this.dragDelay = config.dragDelay();
this.reqfocus = config.reqfocus();
this.configOverlay = config.overlay(); this.configOverlay = config.overlay();
this.color = config.color();
this.changeCursor = config.changeCursor(); this.changeCursor = config.changeCursor();
this.selectedCursor = config.selectedCursor(); this.selectedCursor = config.selectedCursor();
} }
private void onFocusChanged(FocusChanged focusChanged) private void onFocusChanged(FocusChanged focusChanged)
{ {
if (!this.alwaysOn && !focusChanged.isFocused() && this.reqfocus) if (!focusChanged.isFocused() && config.reqFocus() && !config.alwaysOn())
{ {
client.setInventoryDragDelay(DEFAULT_DELAY); client.setInventoryDragDelay(DEFAULT_DELAY);
overlayManager.remove(overlay); overlayManager.remove(overlay);
} }
} }
private final HotkeyListener hotkeyListener = new HotkeyListener(() -> this.key) private void updateKeyListeners()
{
if (config.holdKeyBind())
{
keyManager.registerKeyListener(holdListener);
}
else
{
keyManager.unregisterKeyListener(holdListener);
}
if (config.toggleKeyBind())
{
keyManager.registerKeyListener(toggleListener);
}
else
{
keyManager.unregisterKeyListener(toggleListener);
}
}
private final HotkeyListener toggleListener = new HotkeyListener(() -> this.key)
{ {
@Override @Override
public void hotkeyPressed() public void hotkeyPressed()
{ {
if (alwaysOn)
{
return;
}
toggleDrag = !toggleDrag; toggleDrag = !toggleDrag;
if (toggleDrag) if (toggleDrag)
{ {
@@ -239,37 +226,7 @@ public class AntiDragPlugin extends Plugin
clientUI.setCursor(selectedCursor.getCursorImage(), selectedCursor.toString()); clientUI.setCursor(selectedCursor.getCursorImage(), selectedCursor.toString());
} }
client.setInventoryDragDelay(dragDelay); client.setInventoryDragDelay(config.dragDelay());
}
else
{
overlayManager.remove(overlay);
client.setInventoryDragDelay(DEFAULT_DELAY);
clientUI.resetCursor();
}
}
@Override
public void hotkeyReleased()
{
if (alwaysOn)
{
return;
}
toggleDrag = !toggleDrag;
if (toggleDrag)
{
if (configOverlay)
{
overlayManager.add(overlay);
}
if (changeCursor)
{
clientUI.setCursor(selectedCursor.getCursorImage(), selectedCursor.toString());
}
client.setInventoryDragDelay(dragDelay);
} }
else else
{ {
@@ -279,4 +236,30 @@ public class AntiDragPlugin extends Plugin
} }
} }
}; };
private final HotkeyListener holdListener = new HotkeyListener(() -> this.key)
{
@Override
public void hotkeyPressed()
{
if (configOverlay)
{
overlayManager.add(overlay);
}
if (changeCursor)
{
clientUI.setCursor(selectedCursor.getCursorImage(), selectedCursor.toString());
}
client.setInventoryDragDelay(config.dragDelay());
}
@Override
public void hotkeyReleased()
{
overlayManager.remove(overlay);
client.setInventoryDragDelay(DEFAULT_DELAY);
clientUI.resetCursor();
}
};
} }