From 403616b07c6da6479ce77fd45b41f622e9972915 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sun, 28 Feb 2021 12:39:37 -0500 Subject: fix mods with suppressed warnings counted for showing the log section --- src/SMAPI/Framework/ModLoading/ModMetadata.cs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'src/SMAPI/Framework/ModLoading/ModMetadata.cs') diff --git a/src/SMAPI/Framework/ModLoading/ModMetadata.cs b/src/SMAPI/Framework/ModLoading/ModMetadata.cs index 18d2b112..b4de3d6c 100644 --- a/src/SMAPI/Framework/ModLoading/ModMetadata.cs +++ b/src/SMAPI/Framework/ModLoading/ModMetadata.cs @@ -13,6 +13,13 @@ namespace StardewModdingAPI.Framework.ModLoading /// Metadata for a mod. internal class ModMetadata : IModMetadata { + /********* + ** Fields + *********/ + /// The non-error issues with the mod, including warnings suppressed by the data record. + private ModWarning ActualWarnings = ModWarning.None; + + /********* ** Accessors *********/ @@ -41,7 +48,7 @@ namespace StardewModdingAPI.Framework.ModLoading public ModFailReason? FailReason { get; private set; } /// - public ModWarning Warnings { get; private set; } + public ModWarning Warnings => this.ActualWarnings & ~(this.DataRecord?.DataRecord.SuppressWarnings ?? ModWarning.None); /// public string Error { get; private set; } @@ -116,7 +123,7 @@ namespace StardewModdingAPI.Framework.ModLoading /// public IModMetadata SetWarning(ModWarning warning) { - this.Warnings |= warning; + this.ActualWarnings |= warning; return this; } @@ -218,12 +225,10 @@ namespace StardewModdingAPI.Framework.ModLoading } /// - public bool HasUnsuppressedWarnings(params ModWarning[] warnings) + public bool HasWarnings(params ModWarning[] warnings) { - return warnings.Any(warning => - this.Warnings.HasFlag(warning) - && (this.DataRecord?.DataRecord == null || !this.DataRecord.DataRecord.SuppressWarnings.HasFlag(warning)) - ); + ModWarning curWarnings = this.Warnings; + return warnings.Any(warning => curWarnings.HasFlag(warning)); } /// -- cgit