using StardewModdingAPI.Framework.Models; namespace StardewModdingAPI.Framework.ModLoading { /// Metadata for a mod. internal class ModMetadata : IModMetadata { /********* ** Accessors *********/ /// The mod's display name. public string DisplayName { get; } /// The mod's full directory path. public string DirectoryPath { get; } /// The mod manifest. public IManifest Manifest { get; } /// Optional metadata about a mod version that SMAPI should assume is compatible or broken, regardless of whether it detects incompatible code. public ModCompatibility Compatibility { get; } /// The metadata resolution status. public ModMetadataStatus Status { get; private set; } /// The reason the metadata is invalid, if any. public string Error { get; private set; } /********* ** Public methods *********/ /// Construct an instance. /// The mod's display name. /// The mod's full directory path. /// The mod manifest. /// Optional metadata about a mod version that SMAPI should assume is compatible or broken, regardless of whether it detects incompatible code. public ModMetadata(string displayName, string directoryPath, IManifest manifest, ModCompatibility compatibility) { this.DisplayName = displayName; this.DirectoryPath = directoryPath; this.Manifest = manifest; this.Compatibility = compatibility; } /// Set the mod status. /// The metadata resolution status. /// The reason the metadata is invalid, if any. /// Return the instance for chaining. public IModMetadata SetStatus(ModMetadataStatus status, string error = null) { this.Status = status; this.Error = error; return this; } } }