From d932a11f51392cd42ab501185982af971f954c8d Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Tue, 24 Dec 2019 13:51:21 -0500 Subject: list broken dependencies first in 'skipped mods' list --- src/SMAPI/Framework/ModLoading/ModMetadata.cs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/SMAPI/Framework/ModLoading') diff --git a/src/SMAPI/Framework/ModLoading/ModMetadata.cs b/src/SMAPI/Framework/ModLoading/ModMetadata.cs index 7f788d17..0e90362e 100644 --- a/src/SMAPI/Framework/ModLoading/ModMetadata.cs +++ b/src/SMAPI/Framework/ModLoading/ModMetadata.cs @@ -188,6 +188,27 @@ namespace StardewModdingAPI.Framework.ModLoading } } + /// Get the mod IDs that must be installed to load this mod. + /// Whether to include optional dependencies. + public IEnumerable GetRequiredModIds(bool includeOptional = false) + { + HashSet required = new HashSet(StringComparer.InvariantCultureIgnoreCase); + + // yield dependencies + if (this.Manifest?.Dependencies != null) + { + foreach (var entry in this.Manifest?.Dependencies) + { + if ((entry.IsRequired || includeOptional) && required.Add(entry.UniqueID)) + yield return entry.UniqueID; + } + } + + // yield content pack parent + if (this.Manifest?.ContentPackFor?.UniqueID != null && required.Add(this.Manifest.ContentPackFor.UniqueID)) + yield return this.Manifest.ContentPackFor.UniqueID; + } + /// Whether the mod has at least one valid update key set. public bool HasValidUpdateKeys() { -- cgit