Improves display of quests an NPC is part of

This commit is contained in:
Kristian Knarvik 2022-11-01 15:39:13 +01:00
parent 032327c0f7
commit 2504a64191

View File

@ -22,7 +22,6 @@ import org.dynmap.markers.GenericMarker;
import org.dynmap.markers.MarkerIcon;
import org.dynmap.markers.MarkerSet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@ -131,19 +130,20 @@ public class QuestsHandler extends AbstractTraitHandler {
}
//TODO: Get information about the planner (repeatable and/or limited)
if (!questKills.isEmpty()) {
markerDescription.append("<h3>Kill target for quests:</h3>");
markerDescription.append(getQuestListString(questKills));
if (!questKills.isEmpty() || !questInteractions.isEmpty() || !questDeliveries.isEmpty()) {
markerDescription.append("<h3>Involved in quests:</h3><ul>");
for (IQuest quest : new HashSet<>(questKills)) {
markerDescription.append("<li>Killed in: ").append(quest.getName()).append("</li>");
}
for (IQuest quest : new HashSet<>(questDeliveries)) {
markerDescription.append("<li>Delivery target in: ").append(quest.getName()).append("</li>");
}
for (IQuest quest : new HashSet<>(questInteractions)) {
markerDescription.append("<li>Interacted with in quest: ").append(quest.getName()).append("</li>");
}
if (!questInteractions.isEmpty()) {
markerDescription.append("<h3>Interaction target for quests:</h3>");
markerDescription.append(getQuestListString(questInteractions));
}
if (!questDeliveries.isEmpty()) {
markerDescription.append("<h3>Delivery target for quests:</h3>");
markerDescription.append(getQuestListString(questDeliveries));
markerDescription.append("</ul>");
}
addNPCMarker(npcId, getMarkerTitle(info.getQuestNPCType()), markerDescription.toString(), icon, questMarkerSet);
@ -267,21 +267,6 @@ public class QuestsHandler extends AbstractTraitHandler {
return rewardInfo.toString();
}
/**
* Gets a comma-separated list of the given quests' names
*
* @param quests <p>The quests to get a list string for</p>
* @return <p>The names of the given quests</p>
*/
private String getQuestListString(List<IQuest> quests) {
List<String> questNames = new ArrayList<>();
//Note: The list is cast to a set to remove duplicates
for (IQuest quest : new HashSet<>(quests)) {
questNames.add(quest.getName());
}
return String.join(", ", questNames);
}
/**
* Gets the marker title to use for the given quest NPC type
*