auto pause

This commit is contained in:
Adam
2019-05-11 15:43:27 -04:00
parent eb0aa94ddb
commit d590c64697

View File

@@ -16,6 +16,7 @@ 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.api.events.NpcDespawned;
import net.runelite.api.events.NpcSpawned;
import net.runelite.client.config.ConfigManager; 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.events.OverlayMenuClicked;
@@ -25,6 +26,7 @@ import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ws.PartyMember; import net.runelite.client.ws.PartyMember;
import net.runelite.client.ws.PartyService; import net.runelite.client.ws.PartyService;
import net.runelite.client.ws.WSClient; import net.runelite.client.ws.WSClient;
import org.apache.commons.lang3.ArrayUtils;
@PluginDescriptor( @PluginDescriptor(
name = "DPS Counter", name = "DPS Counter",
@@ -33,8 +35,6 @@ import net.runelite.client.ws.WSClient;
@Slf4j @Slf4j
public class DpsCounterPlugin extends Plugin public class DpsCounterPlugin extends Plugin
{ {
private int lastXp = -1;
@Inject @Inject
private Client client; private Client client;
@@ -51,7 +51,8 @@ public class DpsCounterPlugin extends Plugin
private DpsOverlay dpsOverlay; private DpsOverlay dpsOverlay;
private Boss boss; private Boss boss;
private NPC npc; private NPC bossNpc;
private int lastHpExp = -1;
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private final Map<String, DpsMember> members = new ConcurrentHashMap<>(); private final Map<String, DpsMember> members = new ConcurrentHashMap<>();
@@ -89,13 +90,13 @@ public class DpsCounterPlugin extends Plugin
if (target instanceof NPC) if (target instanceof NPC)
{ {
int npcId = ((NPC) target).getId(); NPC npc = (NPC) target;
int npcId = npc.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; bossNpc = (NPC) target;
// boss = Boss.ABYSSAL_SIRE;
} }
} }
} }
@@ -109,15 +110,15 @@ public class DpsCounterPlugin extends Plugin
} }
final int xp = client.getSkillExperience(Skill.HITPOINTS); final int xp = client.getSkillExperience(Skill.HITPOINTS);
if (boss == null || lastXp < 0 || xp < lastXp) if (boss == null || lastHpExp < 0 || xp < lastHpExp)
{ {
lastXp = xp; lastHpExp = xp;
return; return;
} }
final int delta = xp - lastXp; final int delta = xp - lastHpExp;
final int hit = getHit(boss.getModifier(), delta); final int hit = getHit(boss.getModifier(), delta);
lastXp = xp; lastHpExp = xp;
// Update local member // Update local member
PartyMember localMember = partyService.getLocalMember(); PartyMember localMember = partyService.getLocalMember();
@@ -130,9 +131,9 @@ public class DpsCounterPlugin extends Plugin
if (hit > 0 && !partyService.getMembers().isEmpty()) if (hit > 0 && !partyService.getMembers().isEmpty())
{ {
// Check the player is attacking the boss // Check the player is attacking the boss
if (npc != null && player.getInteracting() == npc) if (bossNpc != null && player.getInteracting() == bossNpc)
{ {
final DpsUpdate specialCounterUpdate = new DpsUpdate(npc.getId(), hit); final DpsUpdate specialCounterUpdate = new DpsUpdate(bossNpc.getId(), hit);
specialCounterUpdate.setMemberId(partyService.getLocalMember().getMemberId()); specialCounterUpdate.setMemberId(partyService.getLocalMember().getMemberId());
wsClient.send(specialCounterUpdate); wsClient.send(specialCounterUpdate);
} }
@@ -154,7 +155,7 @@ public class DpsCounterPlugin extends Plugin
} }
// Hmm - not attacking the same boss I am // Hmm - not attacking the same boss I am
if (npc == null || dpsUpdate.getNpcId() != npc.getId()) if (bossNpc == null || dpsUpdate.getNpcId() != bossNpc.getId())
{ {
return; return;
} }
@@ -175,14 +176,47 @@ public class DpsCounterPlugin extends Plugin
} }
@Subscribe @Subscribe
public void onNpcDespawned(NpcDespawned npcDespawned) public void onNpcSpawned(NpcSpawned npcSpawned)
{ {
if (npc == null || npcDespawned.getNpc() != npc || !npc.isDead()) if (boss == null)
{ {
return; return;
} }
log.debug("Boss has died!"); NPC npc = npcSpawned.getNpc();
int npcId = npc.getId();
if (!ArrayUtils.contains(boss.getIds(), npcId))
{
return;
}
log.debug("Boss has spawned!");
bossNpc = npc;
}
@Subscribe
public void onNpcDespawned(NpcDespawned npcDespawned)
{
if (bossNpc == null || npcDespawned.getNpc() != bossNpc)
{
return;
}
if (bossNpc.isDead())
{
log.debug("Boss has died!");
pause();
}
bossNpc = null;
}
private void pause()
{
for (DpsMember dpsMember : members.values())
{
dpsMember.pause();
}
} }
private int getHit(float modifier, int deltaExperience) private int getHit(float modifier, int deltaExperience)