diff --git a/MekHQ/src/mekhq/campaign/mission/AtBContract.java b/MekHQ/src/mekhq/campaign/mission/AtBContract.java index 477e1ef2c5..1bd588e19f 100644 --- a/MekHQ/src/mekhq/campaign/mission/AtBContract.java +++ b/MekHQ/src/mekhq/campaign/mission/AtBContract.java @@ -73,7 +73,6 @@ import java.time.LocalDate; import java.util.List; import java.util.*; -import java.util.stream.Collectors; import static java.lang.Math.round; import static megamek.client.ratgenerator.ModelRecord.NETWORK_NONE; @@ -246,15 +245,19 @@ public static Camouflage pickRandomCamouflage(int currentYear, String factionCod // Define the root directory and get the faction-specific camouflage directory final String ROOT_DIRECTORY = "data/images/camo/"; - String camouflageDirectory = getCamouflageDirectory(currentYear, factionCode); + String camouflageDirectory = "Standard Camouflage"; + + if (factionCode != null) { + camouflageDirectory = getCamouflageDirectory(currentYear, factionCode); + } // Gather all files List allPaths = null; try { allPaths = Files.find(Paths.get(ROOT_DIRECTORY + camouflageDirectory + '/'), Integer.MAX_VALUE, - (path, bfa) -> {return bfa.isRegularFile();}) - .collect(Collectors.toList()); + (path, bfa) -> bfa.isRegularFile()) + .toList(); } catch (IOException e) { logger.error("Error getting list of camouflages", e); } @@ -265,7 +268,7 @@ public static Camouflage pickRandomCamouflage(int currentYear, String factionCod String fileName = randomPath.getFileName().toString(); String fileCategory = randomPath.getParent().toString() - .replaceAll("\\\\", "/"); // Is this necessary on windows machines? + .replaceAll("\\\\", "/"); // This is necessary for windows machines fileCategory = fileCategory.replaceAll(ROOT_DIRECTORY, ""); return new Camouflage(fileCategory, fileName); diff --git a/MekHQ/src/mekhq/campaign/stratcon/StratconContractInitializer.java b/MekHQ/src/mekhq/campaign/stratcon/StratconContractInitializer.java index 303564e5e3..7aa08e9068 100644 --- a/MekHQ/src/mekhq/campaign/stratcon/StratconContractInitializer.java +++ b/MekHQ/src/mekhq/campaign/stratcon/StratconContractInitializer.java @@ -18,25 +18,21 @@ */ package mekhq.campaign.stratcon; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - import megamek.common.Compute; import megamek.logging.MMLogger; import mekhq.campaign.Campaign; import mekhq.campaign.force.Force; -import mekhq.campaign.mission.AtBContract; -import mekhq.campaign.mission.AtBDynamicScenario; -import mekhq.campaign.mission.Mission; -import mekhq.campaign.mission.Scenario; +import mekhq.campaign.mission.*; import mekhq.campaign.mission.ScenarioForceTemplate.ForceAlignment; -import mekhq.campaign.mission.ScenarioTemplate; import mekhq.campaign.mission.atb.AtBScenarioModifier; import mekhq.campaign.mission.enums.ContractCommandRights; import mekhq.campaign.stratcon.StratconContractDefinition.ObjectiveParameters; import mekhq.campaign.stratcon.StratconContractDefinition.StrategicObjectiveType; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + /** * This class handles StratCon state initialization when a contract is signed. */ @@ -402,12 +398,11 @@ private static StratconCoords getUnoccupiedCoords(StratconTrackState trackState) * such as pointers from StratCon scenario objects to AtB scenario objects. */ public static void restoreTransientStratconInformation(Mission m, Campaign campaign) { - if (m instanceof AtBContract) { + if (m instanceof AtBContract atbContract) { // Having loaded scenarios and such, we now need to go through any StratCon // scenarios for this contract // and set their backing scenario pointers to the existing scenarios stored in // the campaign for this contract - AtBContract atbContract = (AtBContract) m; if (atbContract.getStratconCampaignState() != null) { for (StratconTrackState track : atbContract.getStratconCampaignState().getTracks()) { for (StratconScenario scenario : track.getScenarios().values()) {