hmm
This commit is contained in:
@@ -1,19 +1,24 @@
|
|||||||
package net.runelite.client.plugins.dpscounter;
|
package net.runelite.client.plugins.dpscounter;
|
||||||
|
|
||||||
import com.google.inject.Binder;
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
import com.google.inject.Provides;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.Actor;
|
import net.runelite.api.Actor;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
|
import net.runelite.api.MenuAction;
|
||||||
import net.runelite.api.NPC;
|
import net.runelite.api.NPC;
|
||||||
import net.runelite.api.Player;
|
import net.runelite.api.Player;
|
||||||
import net.runelite.api.Skill;
|
import net.runelite.api.Skill;
|
||||||
import net.runelite.api.events.ExperienceChanged;
|
import net.runelite.api.events.ExperienceChanged;
|
||||||
import net.runelite.api.events.InteractingChanged;
|
import net.runelite.api.events.InteractingChanged;
|
||||||
|
import net.runelite.api.events.NpcDespawned;
|
||||||
|
import net.runelite.client.config.ConfigManager;
|
||||||
import net.runelite.client.eventbus.Subscribe;
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
|
import net.runelite.client.events.OverlayMenuClicked;
|
||||||
import net.runelite.client.plugins.Plugin;
|
import net.runelite.client.plugins.Plugin;
|
||||||
import net.runelite.client.plugins.PluginDescriptor;
|
import net.runelite.client.plugins.PluginDescriptor;
|
||||||
import net.runelite.client.ui.overlay.OverlayManager;
|
import net.runelite.client.ui.overlay.OverlayManager;
|
||||||
@@ -24,8 +29,8 @@ import net.runelite.client.ws.WSClient;
|
|||||||
@PluginDescriptor(
|
@PluginDescriptor(
|
||||||
name = "DPS Counter",
|
name = "DPS Counter",
|
||||||
description = "counts dps?"
|
description = "counts dps?"
|
||||||
//
|
|
||||||
)
|
)
|
||||||
|
@Slf4j
|
||||||
public class DpsCounterPlugin extends Plugin
|
public class DpsCounterPlugin extends Plugin
|
||||||
{
|
{
|
||||||
private int lastXp = -1;
|
private int lastXp = -1;
|
||||||
@@ -50,10 +55,10 @@ public class DpsCounterPlugin extends Plugin
|
|||||||
@Getter(AccessLevel.PACKAGE)
|
@Getter(AccessLevel.PACKAGE)
|
||||||
private final Map<String, DpsMember> members = new ConcurrentHashMap<>();
|
private final Map<String, DpsMember> members = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
@Override
|
@Provides
|
||||||
public void configure(Binder binder)
|
DpsConfig provideConfig(ConfigManager configManager)
|
||||||
{
|
{
|
||||||
//super.configure(binder);
|
return configManager.getConfig(DpsConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -61,7 +66,6 @@ public class DpsCounterPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
overlayManager.add(dpsOverlay);
|
overlayManager.add(dpsOverlay);
|
||||||
wsClient.registerMessage(DpsUpdate.class);
|
wsClient.registerMessage(DpsUpdate.class);
|
||||||
//super.startUp();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -70,25 +74,28 @@ public class DpsCounterPlugin extends Plugin
|
|||||||
wsClient.unregisterMessage(DpsUpdate.class);
|
wsClient.unregisterMessage(DpsUpdate.class);
|
||||||
overlayManager.remove(dpsOverlay);
|
overlayManager.remove(dpsOverlay);
|
||||||
boss = null;
|
boss = null;
|
||||||
//super.shutDown();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onInteractingChanged(InteractingChanged interactingChanged) {
|
public void onInteractingChanged(InteractingChanged interactingChanged)
|
||||||
|
{
|
||||||
Actor source = interactingChanged.getSource();
|
Actor source = interactingChanged.getSource();
|
||||||
Actor target = interactingChanged.getTarget();
|
Actor target = interactingChanged.getTarget();
|
||||||
|
|
||||||
if (source != client.getLocalPlayer()) {
|
if (source != client.getLocalPlayer())
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target instanceof NPC) {
|
if (target instanceof NPC)
|
||||||
|
{
|
||||||
int npcId = ((NPC) target).getId();
|
int npcId = ((NPC) target).getId();
|
||||||
Boss boss = Boss.findBoss(npcId);
|
Boss boss = Boss.findBoss(npcId);
|
||||||
if (boss != null) {
|
if (boss != null)
|
||||||
|
{
|
||||||
this.boss = boss;
|
this.boss = boss;
|
||||||
npc = (NPC) target;
|
npc = (NPC) target;
|
||||||
// boss = Boss.ABYSSAL_SIRE;
|
// boss = Boss.ABYSSAL_SIRE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -110,7 +117,6 @@ public class DpsCounterPlugin extends Plugin
|
|||||||
|
|
||||||
final int delta = xp - lastXp;
|
final int delta = xp - lastXp;
|
||||||
final int hit = getHit(boss.getModifier(), delta);
|
final int hit = getHit(boss.getModifier(), delta);
|
||||||
// final int hit = getHit(1.0f, delta);
|
|
||||||
lastXp = xp;
|
lastXp = xp;
|
||||||
|
|
||||||
// Update local member
|
// Update local member
|
||||||
@@ -120,7 +126,6 @@ public class DpsCounterPlugin extends Plugin
|
|||||||
final String name = localMember == null ? player.getName() : localMember.getName();
|
final String name = localMember == null ? player.getName() : localMember.getName();
|
||||||
DpsMember dpsMember = members.computeIfAbsent(name, n -> new DpsMember(name));
|
DpsMember dpsMember = members.computeIfAbsent(name, n -> new DpsMember(name));
|
||||||
dpsMember.addDamage(hit);
|
dpsMember.addDamage(hit);
|
||||||
// System.out.println("HIT "+ hit);
|
|
||||||
|
|
||||||
if (hit > 0 && !partyService.getMembers().isEmpty())
|
if (hit > 0 && !partyService.getMembers().isEmpty())
|
||||||
{
|
{
|
||||||
@@ -135,7 +140,8 @@ public class DpsCounterPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onDpsUpdate(DpsUpdate dpsUpdate) {
|
public void onDpsUpdate(DpsUpdate dpsUpdate)
|
||||||
|
{
|
||||||
if (partyService.getLocalMember().getMemberId().equals(dpsUpdate.getMemberId()))
|
if (partyService.getLocalMember().getMemberId().equals(dpsUpdate.getMemberId()))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -147,9 +153,36 @@ public class DpsCounterPlugin extends Plugin
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hmm - not attacking the same boss I am
|
||||||
|
if (npc == null || dpsUpdate.getNpcId() != npc.getId())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
DpsMember dpsMember = members.computeIfAbsent(name, DpsMember::new);
|
DpsMember dpsMember = members.computeIfAbsent(name, DpsMember::new);
|
||||||
dpsMember.addDamage(dpsUpdate.getHit());
|
dpsMember.addDamage(dpsUpdate.getHit());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onOverlayMenuClicked(OverlayMenuClicked event)
|
||||||
|
{
|
||||||
|
if (event.getEntry().getMenuAction() == MenuAction.RUNELITE_OVERLAY &&
|
||||||
|
event.getEntry().getTarget().equals("Reset") &&
|
||||||
|
event.getEntry().getOption().equals("DPS counter"))
|
||||||
|
{
|
||||||
|
members.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onNpcDespawned(NpcDespawned npcDespawned)
|
||||||
|
{
|
||||||
|
if (npc == null || npcDespawned.getNpc() != npc || !npc.isDead())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
log.debug("Boss has died!");
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getHit(float modifier, int deltaExperience)
|
private int getHit(float modifier, int deltaExperience)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ class DpsMember
|
|||||||
{
|
{
|
||||||
private final String name;
|
private final String name;
|
||||||
private Instant start = Instant.now();
|
private Instant start = Instant.now();
|
||||||
|
private Instant end;
|
||||||
private int damage;
|
private int damage;
|
||||||
|
|
||||||
void addDamage(int amount)
|
void addDamage(int amount)
|
||||||
@@ -17,10 +18,20 @@ class DpsMember
|
|||||||
damage += amount;
|
damage += amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
int getDps()
|
float getDps()
|
||||||
{
|
{
|
||||||
int diff = (int) (Instant.now().toEpochMilli() - start.toEpochMilli()) / 1000;
|
Instant now = end == null ? Instant.now() : end;
|
||||||
if (diff == 0) return 0;
|
int diff = (int) (now.toEpochMilli() - start.toEpochMilli()) / 1000;
|
||||||
return (int) ((float) damage / (float) diff);
|
if (diff == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (float) damage / (float) diff;
|
||||||
|
}
|
||||||
|
|
||||||
|
void pause()
|
||||||
|
{
|
||||||
|
end = Instant.now();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,12 @@ package net.runelite.client.plugins.dpscounter;
|
|||||||
|
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
|
import java.text.DecimalFormat;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG;
|
||||||
import net.runelite.client.ui.overlay.Overlay;
|
import net.runelite.client.ui.overlay.Overlay;
|
||||||
|
import net.runelite.client.ui.overlay.OverlayMenuEntry;
|
||||||
import net.runelite.client.ui.overlay.components.LineComponent;
|
import net.runelite.client.ui.overlay.components.LineComponent;
|
||||||
import net.runelite.client.ui.overlay.components.PanelComponent;
|
import net.runelite.client.ui.overlay.components.PanelComponent;
|
||||||
import net.runelite.client.ui.overlay.components.TitleComponent;
|
import net.runelite.client.ui.overlay.components.TitleComponent;
|
||||||
@@ -12,62 +15,52 @@ import net.runelite.client.ws.PartyService;
|
|||||||
|
|
||||||
public class DpsOverlay extends Overlay
|
public class DpsOverlay extends Overlay
|
||||||
{
|
{
|
||||||
|
private static final DecimalFormat DPS_FORMAT = new DecimalFormat("#0.0");
|
||||||
|
|
||||||
private final DpsCounterPlugin dpsCounterPlugin;
|
private final DpsCounterPlugin dpsCounterPlugin;
|
||||||
|
private final DpsConfig dpsConfig;
|
||||||
private final PartyService partyService;
|
private final PartyService partyService;
|
||||||
|
|
||||||
private final PanelComponent panelComponent = new PanelComponent();
|
private final PanelComponent panelComponent = new PanelComponent();
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
DpsOverlay(DpsCounterPlugin dpsCounterPlugin, PartyService partyService)
|
DpsOverlay(DpsCounterPlugin dpsCounterPlugin, DpsConfig dpsConfig, PartyService partyService)
|
||||||
{
|
{
|
||||||
super(dpsCounterPlugin);
|
super(dpsCounterPlugin);
|
||||||
this.dpsCounterPlugin = dpsCounterPlugin;
|
this.dpsCounterPlugin = dpsCounterPlugin;
|
||||||
|
this.dpsConfig = dpsConfig;
|
||||||
this.partyService = partyService;
|
this.partyService = partyService;
|
||||||
//setPosition(OverlayPosition.TOP_LEFT);
|
getMenuEntries().add(new OverlayMenuEntry(RUNELITE_OVERLAY_CONFIG, "Reset", "DPS counter"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Dimension render(Graphics2D graphics)
|
public Dimension render(Graphics2D graphics)
|
||||||
{
|
{
|
||||||
Map<String, DpsMember> dpsMembers = dpsCounterPlugin.getMembers();
|
Map<String, DpsMember> dpsMembers = dpsCounterPlugin.getMembers();
|
||||||
|
if (dpsMembers.isEmpty())
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean inParty = !partyService.getMembers().isEmpty();
|
||||||
|
boolean showDamage = dpsConfig.showDamage();
|
||||||
|
|
||||||
panelComponent.getChildren().clear();
|
panelComponent.getChildren().clear();
|
||||||
|
|
||||||
panelComponent.getChildren().add(
|
panelComponent.getChildren().add(
|
||||||
TitleComponent.builder()
|
TitleComponent.builder()
|
||||||
.text("DPS")
|
.text(inParty ? "Party DPS" : "DPS")
|
||||||
//olor(HIGHLIGHT_COLOR)
|
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
// panelComponent.getChildren().add(
|
for (DpsMember dpsMember : dpsMembers.values())
|
||||||
// LineComponent.builder()
|
{
|
||||||
// .left("Player")
|
|
||||||
// // .leftColor(HIGHLIGHT_COLOR)
|
|
||||||
// .right("DPS")
|
|
||||||
// // .rightColor(HIGHLIGHT_COLOR)
|
|
||||||
// .build());
|
|
||||||
|
|
||||||
for (DpsMember dpsMember : dpsMembers.values()) {
|
|
||||||
panelComponent.getChildren().add(
|
panelComponent.getChildren().add(
|
||||||
LineComponent.builder()
|
LineComponent.builder()
|
||||||
.left(dpsMember.getName())
|
.left(dpsMember.getName())
|
||||||
.right(Integer.toString(dpsMember.getDps()))
|
.right(showDamage ? Integer.toString(dpsMember.getDamage()) : DPS_FORMAT.format(dpsMember.getDps()))
|
||||||
//.right(Integer.toString(playerSkillLevel) + "/" + Integer.toString(opponentSkillLevel))
|
|
||||||
//.rightColor(comparisonStatColor(playerSkillLevel, opponentSkillLevel))
|
|
||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
//partyService.getMemberByName()
|
|
||||||
// for (PartyMember member : partyService.getMembers()) {
|
|
||||||
// DpsMember dpsMember = dpsMembers.get(member.getName());
|
|
||||||
// if (dpsMember == null) continue;
|
|
||||||
// panelComponent.getChildren().add(
|
|
||||||
// LineComponent.builder()
|
|
||||||
// .left(member.getName())
|
|
||||||
// .right(Integer.toString(dpsMember.getDps()))
|
|
||||||
// //.right(Integer.toString(playerSkillLevel) + "/" + Integer.toString(opponentSkillLevel))
|
|
||||||
// //.rightColor(comparisonStatColor(playerSkillLevel, opponentSkillLevel))
|
|
||||||
// .build());
|
|
||||||
// }
|
|
||||||
return panelComponent.render(graphics);
|
return panelComponent.render(graphics);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user