using System; using Newtonsoft.Json; namespace StardewModdingAPI { /// Wraps so it can implement without breaking backwards compatibility. [Obsolete("Use " + nameof(IManifest) + " or " + nameof(Mod) + "." + nameof(Mod.ModManifest) + " instead")] internal class ManifestImpl : Manifest, IManifest { /// The mod version. [JsonProperty("Version", ObjectCreationHandling = ObjectCreationHandling.Auto/* avoids issue where Json.NET can't determine concrete type for interface */)] public new ISemanticVersion Version { get { return base.Version; } set { base.Version = (Version)value; } } } /// A manifest which describes a mod for SMAPI. public class Manifest { /********* ** Accessors *********/ /// The mod name. public string Name { get; set; } /// A brief description of the mod. public string Description { get; set; } /// The mod author's name. public string Author { get; set; } /// The mod version. public Version Version { get; set; } = new Version(0, 0, 0, "", suppressDeprecationWarning: true); /// The minimum SMAPI version required by this mod, if any. public string MinimumApiVersion { get; set; } /// The name of the DLL in the directory that has the method. public string EntryDll { get; set; } /// The unique mod ID. public string UniqueID { get; set; } /**** ** Obsolete ****/ /// Whether the manifest defined the deprecated field. [JsonIgnore] internal bool UsedAuthourField { get; private set; } /// Obsolete. [Obsolete("Use " + nameof(Manifest) + "." + nameof(Manifest.Author) + ".")] public virtual string Authour { get { return this.Author; } set { this.UsedAuthourField = true; this.Author = value; } } /// Whether the mod uses per-save config files. [Obsolete("Use " + nameof(Mod) + "." + nameof(Mod.Helper) + "." + nameof(IModHelper.ReadConfig) + " instead")] public bool PerSaveConfigs { get; set; } } }