statusbars: Add option to hide outside of combat
This commit is contained in:
@@ -27,11 +27,14 @@ package net.runelite.client.plugins.statusbars;
|
|||||||
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.Units;
|
||||||
import net.runelite.client.plugins.statusbars.config.BarMode;
|
import net.runelite.client.plugins.statusbars.config.BarMode;
|
||||||
|
|
||||||
@ConfigGroup("statusbars")
|
@ConfigGroup(StatusBarsConfig.GROUP)
|
||||||
public interface StatusBarsConfig extends Config
|
public interface StatusBarsConfig extends Config
|
||||||
{
|
{
|
||||||
|
String GROUP = "statusbars";
|
||||||
|
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
keyName = "enableCounter",
|
keyName = "enableCounter",
|
||||||
name = "Show counters",
|
name = "Show counters",
|
||||||
@@ -81,4 +84,15 @@ public interface StatusBarsConfig extends Config
|
|||||||
{
|
{
|
||||||
return BarMode.PRAYER;
|
return BarMode.PRAYER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "hideAfterCombatDelay",
|
||||||
|
name = "Hide after combat delay",
|
||||||
|
description = "Amount of ticks before hiding status bars after no longer in combat. 0 = always show status bars."
|
||||||
|
)
|
||||||
|
@Units(Units.TICKS)
|
||||||
|
default int hideAfterCombatDelay()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ class StatusBarsOverlay extends Overlay
|
|||||||
private static final int MAX_RUN_ENERGY_VALUE = 100;
|
private static final int MAX_RUN_ENERGY_VALUE = 100;
|
||||||
|
|
||||||
private final Client client;
|
private final Client client;
|
||||||
|
private final StatusBarsPlugin plugin;
|
||||||
private final StatusBarsConfig config;
|
private final StatusBarsConfig config;
|
||||||
private final ItemStatChangesService itemStatService;
|
private final ItemStatChangesService itemStatService;
|
||||||
private final SpriteManager spriteManager;
|
private final SpriteManager spriteManager;
|
||||||
@@ -94,11 +95,12 @@ class StatusBarsOverlay extends Overlay
|
|||||||
private final Map<BarMode, BarRenderer> barRenderers = new EnumMap<>(BarMode.class);
|
private final Map<BarMode, BarRenderer> barRenderers = new EnumMap<>(BarMode.class);
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private StatusBarsOverlay(Client client, StatusBarsConfig config, SkillIconManager skillIconManager, ItemStatChangesService itemstatservice, SpriteManager spriteManager)
|
private StatusBarsOverlay(Client client, StatusBarsPlugin plugin, StatusBarsConfig config, SkillIconManager skillIconManager, ItemStatChangesService itemstatservice, SpriteManager spriteManager)
|
||||||
{
|
{
|
||||||
setPosition(OverlayPosition.DYNAMIC);
|
setPosition(OverlayPosition.DYNAMIC);
|
||||||
setLayer(OverlayLayer.ABOVE_WIDGETS);
|
setLayer(OverlayLayer.ABOVE_WIDGETS);
|
||||||
this.client = client;
|
this.client = client;
|
||||||
|
this.plugin = plugin;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
this.itemStatService = itemstatservice;
|
this.itemStatService = itemstatservice;
|
||||||
this.spriteManager = spriteManager;
|
this.spriteManager = spriteManager;
|
||||||
@@ -216,6 +218,11 @@ class StatusBarsOverlay extends Overlay
|
|||||||
@Override
|
@Override
|
||||||
public Dimension render(Graphics2D g)
|
public Dimension render(Graphics2D g)
|
||||||
{
|
{
|
||||||
|
if (!plugin.isBarsDisplayed())
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
Viewport curViewport = null;
|
Viewport curViewport = null;
|
||||||
Widget curWidget = null;
|
Widget curWidget = null;
|
||||||
|
|
||||||
|
|||||||
@@ -26,12 +26,24 @@ package net.runelite.client.plugins.statusbars;
|
|||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
|
import lombok.AccessLevel;
|
||||||
|
import lombok.Getter;
|
||||||
|
import net.runelite.api.Actor;
|
||||||
|
import net.runelite.api.Client;
|
||||||
|
import net.runelite.api.NPC;
|
||||||
|
import net.runelite.api.Player;
|
||||||
|
import net.runelite.api.Varbits;
|
||||||
|
import net.runelite.api.events.GameTick;
|
||||||
|
import net.runelite.client.callback.ClientThread;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
|
import net.runelite.client.events.ConfigChanged;
|
||||||
import net.runelite.client.plugins.Plugin;
|
import net.runelite.client.plugins.Plugin;
|
||||||
import net.runelite.client.plugins.PluginDependency;
|
import net.runelite.client.plugins.PluginDependency;
|
||||||
import net.runelite.client.plugins.PluginDescriptor;
|
import net.runelite.client.plugins.PluginDescriptor;
|
||||||
import net.runelite.client.plugins.itemstats.ItemStatPlugin;
|
import net.runelite.client.plugins.itemstats.ItemStatPlugin;
|
||||||
import net.runelite.client.ui.overlay.OverlayManager;
|
import net.runelite.client.ui.overlay.OverlayManager;
|
||||||
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
|
||||||
@PluginDescriptor(
|
@PluginDescriptor(
|
||||||
name = "Status Bars",
|
name = "Status Bars",
|
||||||
@@ -47,9 +59,24 @@ public class StatusBarsPlugin extends Plugin
|
|||||||
@Inject
|
@Inject
|
||||||
private OverlayManager overlayManager;
|
private OverlayManager overlayManager;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private Client client;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private StatusBarsConfig config;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ClientThread clientThread;
|
||||||
|
|
||||||
|
@Getter(AccessLevel.PACKAGE)
|
||||||
|
private boolean barsDisplayed;
|
||||||
|
|
||||||
|
private int lastCombatActionTickCount;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void startUp() throws Exception
|
protected void startUp() throws Exception
|
||||||
{
|
{
|
||||||
|
clientThread.invokeLater(this::checkStatusBars);
|
||||||
overlayManager.add(overlay);
|
overlayManager.add(overlay);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,6 +84,7 @@ public class StatusBarsPlugin extends Plugin
|
|||||||
protected void shutDown() throws Exception
|
protected void shutDown() throws Exception
|
||||||
{
|
{
|
||||||
overlayManager.remove(overlay);
|
overlayManager.remove(overlay);
|
||||||
|
barsDisplayed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@@ -64,4 +92,45 @@ public class StatusBarsPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
return configManager.getConfig(StatusBarsConfig.class);
|
return configManager.getConfig(StatusBarsConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onGameTick(GameTick gameTick)
|
||||||
|
{
|
||||||
|
checkStatusBars();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onConfigChanged(ConfigChanged event)
|
||||||
|
{
|
||||||
|
if (StatusBarsConfig.GROUP.equals(event.getGroup()) && event.getKey().equals("hideAfterCombatDelay"))
|
||||||
|
{
|
||||||
|
clientThread.invokeLater(this::checkStatusBars);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkStatusBars()
|
||||||
|
{
|
||||||
|
final Player localPlayer = client.getLocalPlayer();
|
||||||
|
if (localPlayer == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final Actor interacting = localPlayer.getInteracting();
|
||||||
|
|
||||||
|
if (config.hideAfterCombatDelay() == 0)
|
||||||
|
{
|
||||||
|
barsDisplayed = true;
|
||||||
|
}
|
||||||
|
else if ((interacting instanceof NPC && ArrayUtils.contains(((NPC) interacting).getComposition().getActions(), "Attack"))
|
||||||
|
|| (interacting instanceof Player && client.getVar(Varbits.PVP_SPEC_ORB) == 1))
|
||||||
|
{
|
||||||
|
lastCombatActionTickCount = client.getTickCount();
|
||||||
|
barsDisplayed = true;
|
||||||
|
}
|
||||||
|
else if (client.getTickCount() - lastCombatActionTickCount >= config.hideAfterCombatDelay())
|
||||||
|
{
|
||||||
|
barsDisplayed = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user