using System.Linq; using Newtonsoft.Json; using StardewModdingAPI.Framework.Serialisation; namespace StardewModdingAPI.Framework.Models { /// Metadata about a mod from SMAPI's internal data. internal class ModDataRecord { /********* ** Accessors *********/ /// The unique mod identifier. [JsonConverter(typeof(SFieldConverter))] public ModDataID ID { get; set; } /// The mod name. public string Name { get; set; } /// The URLs the user can check for a newer version. public string[] UpdateUrls { get; set; } /// The compatibility of given mod versions (if any). [JsonConverter(typeof(SFieldConverter))] public ModCompatibility[] Compatibility { get; set; } = new ModCompatibility[0]; /********* ** Public methods *********/ /// Get the compatibility record for a given version, if any. /// The mod version to check. public ModCompatibility GetCompatibility(ISemanticVersion version) { return this.Compatibility.FirstOrDefault(p => p.MatchesVersion(version)); } } }