From e7b088db99898d11bb587a738a56830bcc9107f1 Mon Sep 17 00:00:00 2001 From: algebro Date: Wed, 25 Sep 2024 11:58:25 -0400 Subject: [PATCH] filter out inactive factions when determining capitals for personnel market generation --- .../campaign/market/PersonnelMarket.java | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/MekHQ/src/mekhq/campaign/market/PersonnelMarket.java b/MekHQ/src/mekhq/campaign/market/PersonnelMarket.java index 6e91528fdc..27bc7cc700 100644 --- a/MekHQ/src/mekhq/campaign/market/PersonnelMarket.java +++ b/MekHQ/src/mekhq/campaign/market/PersonnelMarket.java @@ -89,7 +89,7 @@ public PersonnelMarket(Campaign c) { /** * Sets the method for generating potential recruits for the personnel market. - * + * * @param key The lookup name of the market type to use. */ public void setType(String key) { @@ -108,19 +108,20 @@ public void handleCampaignOptionsEvent(OptionsChangedEvent ev) { * Generate new personnel to be added to the * market availability pool */ - public void generatePersonnelForDay(Campaign c) { + public void generatePersonnelForDay(Campaign campaign) { List capitals = Factions.getInstance().getFactions().stream() - .map(faction -> faction.getStartingPlanet(c.getLocalDate())) + .filter(faction -> faction.validIn(campaign.getLocalDate())) + .map(faction -> faction.getStartingPlanet(campaign.getLocalDate())) .collect(Collectors.toList()); - String currentSystem = c.getCurrentSystem().getId(); + String currentSystem = campaign.getCurrentSystem().getId(); boolean updated = false; if (!personnel.isEmpty()) { - removePersonnelForDay(c); - if (c.getCampaignOptions().isUsePersonnelHireHiringHallOnly() - && !c.getAtBConfig().isHiringHall(currentSystem, c.getLocalDate()) + removePersonnelForDay(campaign); + if (campaign.getCampaignOptions().isUsePersonnelHireHiringHallOnly() + && !campaign.getAtBConfig().isHiringHall(currentSystem, campaign.getLocalDate()) && !capitals.contains(currentSystem)) { removeAll(); } @@ -129,10 +130,10 @@ public void generatePersonnelForDay(Campaign c) { if (null != method) { List newPersonnel = new ArrayList<>(); - if (!c.getCampaignOptions().isUsePersonnelHireHiringHallOnly() - || c.getAtBConfig().isHiringHall(currentSystem, c.getLocalDate()) + if (!campaign.getCampaignOptions().isUsePersonnelHireHiringHallOnly() + || campaign.getAtBConfig().isHiringHall(currentSystem, campaign.getLocalDate()) || capitals.contains(currentSystem)) { - newPersonnel = method.generatePersonnelForDay(c); + newPersonnel = method.generatePersonnelForDay(campaign); } if ((null != newPersonnel) && !newPersonnel.isEmpty()) { @@ -142,13 +143,13 @@ public void generatePersonnelForDay(Campaign c) { } } - if (updated && c.getCampaignOptions().isPersonnelMarketReportRefresh()) { + if (updated && campaign.getCampaignOptions().isPersonnelMarketReportRefresh()) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("Personnel market updated"); - if (c.getCampaignOptions().getPersonnelMarketName().equals("Campaign Ops") && !personnel.isEmpty()) { + if (campaign.getCampaignOptions().getPersonnelMarketName().equals("Campaign Ops") && !personnel.isEmpty()) { stringBuilder.append(':'); Person person = personnel.get(0); - String expLevel = SkillType.getExperienceLevelName(person.getExperienceLevel(c, false)); + String expLevel = SkillType.getExperienceLevelName(person.getExperienceLevel(campaign, false)); stringBuilder.append("
A ") .append(" ") .append(expLevel) @@ -159,7 +160,7 @@ public void generatePersonnelForDay(Campaign c) { .append(person.getFullName()) .append(" is available."); } - c.addReport(stringBuilder.toString()); + campaign.addReport(stringBuilder.toString()); } } @@ -211,7 +212,7 @@ public void removePerson(Person p) { /** * Assign an Entity to a recruit - * + * * @param pid The recruit's id * @param en The Entity to assign */ @@ -221,7 +222,7 @@ public void addAttachedEntity(UUID pid, Entity en) { /** * Get the Entity associated with a recruit, if any - * + * * @param p The recruit * @return The Entity associated with the recruit, or null if there is none */ @@ -231,7 +232,7 @@ public Entity getAttachedEntity(Person p) { /** * Get the Entity associated with a recruit, if any - * + * * @param pid The id of the recruit * @return The Entity associated with the recruit, or null if there is none */ @@ -241,7 +242,7 @@ public Entity getAttachedEntity(UUID pid) { /** * Clears the Entity associated with a recruit - * + * * @param pid The recruit's id */ public void removeAttachedEntity(UUID pid) {