Fix starting party without everyone

This commit is contained in:
bjornenalfa
2019-03-10 13:05:05 +01:00
parent a950763a92
commit a865079862
2 changed files with 16 additions and 14 deletions

View File

@@ -51,6 +51,7 @@ public class RaidsPartyOverlay extends Overlay
{ {
public static final String PARTY_OVERLAY_DEBUG = "Debug"; public static final String PARTY_OVERLAY_DEBUG = "Debug";
public static final String PARTY_OVERLAY_RESET = "Reset missing"; public static final String PARTY_OVERLAY_RESET = "Reset missing";
public static final String PARTY_OVERLAY_REFRESH = "Refresh party";
@Inject @Inject
private Client client; private Client client;
@@ -69,6 +70,7 @@ public class RaidsPartyOverlay extends Overlay
getMenuEntries().add(new OverlayMenuEntry(MenuAction.RUNELITE_OVERLAY_CONFIG, OPTION_CONFIGURE, "Raids party overlay")); getMenuEntries().add(new OverlayMenuEntry(MenuAction.RUNELITE_OVERLAY_CONFIG, OPTION_CONFIGURE, "Raids party overlay"));
getMenuEntries().add(new OverlayMenuEntry(MenuAction.RUNELITE_OVERLAY, PARTY_OVERLAY_DEBUG, "Raids party overlay")); getMenuEntries().add(new OverlayMenuEntry(MenuAction.RUNELITE_OVERLAY, PARTY_OVERLAY_DEBUG, "Raids party overlay"));
getMenuEntries().add(new OverlayMenuEntry(MenuAction.RUNELITE_OVERLAY, PARTY_OVERLAY_RESET, "Raids party overlay")); getMenuEntries().add(new OverlayMenuEntry(MenuAction.RUNELITE_OVERLAY, PARTY_OVERLAY_RESET, "Raids party overlay"));
getMenuEntries().add(new OverlayMenuEntry(MenuAction.RUNELITE_OVERLAY, PARTY_OVERLAY_REFRESH, "Raids party overlay"));
} }
@Override @Override

View File

@@ -235,8 +235,8 @@ public class RaidsPlugin extends Plugin
startingPartyMembers.clear(); startingPartyMembers.clear();
missingPartyMembers.clear(); missingPartyMembers.clear();
partyMembers.addAll(Lists.transform(players, Player::getName)); startingPartyMembers.addAll(Lists.transform(players, Player::getName));
startingPartyMembers.addAll(partyMembers); partyMembers.addAll(startingPartyMembers);
} }
} }
@@ -296,15 +296,21 @@ public class RaidsPlugin extends Plugin
switch (entry.getOption()) { switch (entry.getOption()) {
case RaidsPartyOverlay.PARTY_OVERLAY_DEBUG: case RaidsPartyOverlay.PARTY_OVERLAY_DEBUG:
System.out.println("Starting players: "); System.out.println("Starting players: ");
getPartyMembers().stream().map(player -> "* " + player).forEach(System.out::println); getStartingPartyMembers().stream().map(player -> "* " + player).forEach(System.out::println);
System.out.println("Current players: "); System.out.println("Current players: ");
getPartyMembers().stream().map(player -> "* " + player).forEach(System.out::println); getPartyMembers().stream().map(player -> "* " + player).forEach(System.out::println);
System.out.println("Missing players: "); System.out.println("Missing players: ");
getMissingPartyMembers().stream().map(player -> "* " + player).forEach(System.out::println); getMissingPartyMembers().stream().map(player -> "* " + player).forEach(System.out::println);
break; break;
case RaidsPartyOverlay.PARTY_OVERLAY_RESET: case RaidsPartyOverlay.PARTY_OVERLAY_RESET:
startingPartyMembers.clear();
updatePartyMembers(true); updatePartyMembers(true);
startingPartyMembers.addAll(partyMembers);
missingPartyMembers.clear();
break; break;
case RaidsPartyOverlay.PARTY_OVERLAY_REFRESH:
updatePartyMembers(true);
break;
default: default:
break; break;
} }
@@ -317,14 +323,8 @@ public class RaidsPlugin extends Plugin
return; return;
} }
if (force) { if (startingPartyMembers.size() == partySize && !force) {
partyMembers.clear(); // Skip update if the part is as big as when we started
startingPartyMembers.clear();
missingPartyMembers.clear();
}
if (startingPartyMembers.size() == partySize) {
// Skip update if we have a list of starting party members the same size as current party
return; return;
} }
@@ -334,7 +334,7 @@ public class RaidsPlugin extends Plugin
try { try {
widgets = client.getWidget(WidgetInfo.RAIDING_PARTY).getStaticChildren()[2].getStaticChildren()[3].getDynamicChildren(); widgets = client.getWidget(WidgetInfo.RAIDING_PARTY).getStaticChildren()[2].getStaticChildren()[3].getDynamicChildren();
} catch (NullPointerException e) { } catch (NullPointerException e) {
return; // Raid widget not (fully) loaded yet return; // Raid widget not loaded
} }
partyMembers.clear(); partyMembers.clear();
@@ -349,8 +349,8 @@ public class RaidsPlugin extends Plugin
} }
} }
// If there are more people now than there were, update starting members // If we don't have any starting members, update starting members
if (partySize > startingPartyMembers.size()) { if (startingPartyMembers.size() == 0 || force) {
missingPartyMembers.clear(); missingPartyMembers.clear();
startingPartyMembers.clear(); startingPartyMembers.clear();
startingPartyMembers.addAll(partyMembers); startingPartyMembers.addAll(partyMembers);