diff options
author | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2018-06-19 19:13:19 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-19 19:13:19 -0400 |
commit | 4a05cd09b66a9ec37522aa656ab0814095ab6d23 (patch) | |
tree | 1264a442c5a8c9e6977e017166bdc489e9e51322 /src/SMAPI/Framework | |
parent | 645a64cd24146edba44b89f7493ba5ea9950c3c8 (diff) | |
parent | 468eea751dff9c7c70f0eb33eb91adf98b79cf9d (diff) | |
download | SMAPI-4a05cd09b66a9ec37522aa656ab0814095ab6d23.tar.gz SMAPI-4a05cd09b66a9ec37522aa656ab0814095ab6d23.tar.bz2 SMAPI-4a05cd09b66a9ec37522aa656ab0814095ab6d23.zip |
Merge pull request #543 from danvolchek/optional-update-checking
Add version info to IModMetadata, Change update checks to consider preview versions
Diffstat (limited to 'src/SMAPI/Framework')
-rw-r--r-- | src/SMAPI/Framework/IModMetadata.cs | 14 | ||||
-rw-r--r-- | src/SMAPI/Framework/ModLoading/ModMetadata.cs | 23 | ||||
-rw-r--r-- | src/SMAPI/Framework/ModUpdateChecking/ModUpdateStatus.cs | 37 |
3 files changed, 74 insertions, 0 deletions
diff --git a/src/SMAPI/Framework/IModMetadata.cs b/src/SMAPI/Framework/IModMetadata.cs index c0d6408d..b71c8056 100644 --- a/src/SMAPI/Framework/IModMetadata.cs +++ b/src/SMAPI/Framework/IModMetadata.cs @@ -1,5 +1,6 @@ using StardewModdingAPI.Framework.ModData; using StardewModdingAPI.Framework.ModLoading; +using StardewModdingAPI.Framework.ModUpdateChecking; namespace StardewModdingAPI.Framework { @@ -45,6 +46,11 @@ namespace StardewModdingAPI.Framework /// <summary>Whether the mod is a content pack.</summary> bool IsContentPack { get; } + /// <summary>The update status of this mod (if any).</summary> + ModUpdateStatus UpdateStatus { get; } + + /// <summary>The preview update status of this mod (if any).</summary> + ModUpdateStatus PreviewUpdateStatus { get; } /********* ** Public methods @@ -72,6 +78,14 @@ namespace StardewModdingAPI.Framework /// <param name="api">The mod-provided API.</param> IModMetadata SetApi(object api); + /// <summary>Set the update status.</summary> + /// <param name="updateStatus">The mod update status.</param> + IModMetadata SetUpdateStatus(ModUpdateStatus updateStatus); + + /// <summary>Set the preview update status.</summary> + /// <param name="previewUpdateStatus">The mod preview update status.</param> + IModMetadata SetPreviewUpdateStatus(ModUpdateStatus previewUpdateStatus); + /// <summary>Whether the mod manifest was loaded (regardless of whether the mod itself was loaded).</summary> bool HasManifest(); diff --git a/src/SMAPI/Framework/ModLoading/ModMetadata.cs b/src/SMAPI/Framework/ModLoading/ModMetadata.cs index e4ec7e3b..88d2770c 100644 --- a/src/SMAPI/Framework/ModLoading/ModMetadata.cs +++ b/src/SMAPI/Framework/ModLoading/ModMetadata.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using StardewModdingAPI.Framework.ModData; +using StardewModdingAPI.Framework.ModUpdateChecking; namespace StardewModdingAPI.Framework.ModLoading { @@ -43,6 +44,12 @@ namespace StardewModdingAPI.Framework.ModLoading /// <summary>The mod-provided API (if any).</summary> public object Api { get; private set; } + /// <summary>The update status of this mod (if any).</summary> + public ModUpdateStatus UpdateStatus { get; private set; } + + /// <summary>The preview update status of this mod (if any).</summary> + public ModUpdateStatus PreviewUpdateStatus { get; private set; } + /// <summary>Whether the mod is a content pack.</summary> public bool IsContentPack => this.Manifest?.ContentPackFor != null; @@ -115,6 +122,22 @@ namespace StardewModdingAPI.Framework.ModLoading return this; } + /// <summary>Set the update status.</summary> + /// <param name="updateStatus">The mod update status.</param> + public IModMetadata SetUpdateStatus(ModUpdateStatus updateStatus) + { + this.UpdateStatus = updateStatus; + return this; + } + + /// <summary>Set the preview update status.</summary> + /// <param name="previewUpdateStatus">The mod preview update status.</param> + public IModMetadata SetPreviewUpdateStatus(ModUpdateStatus previewUpdateStatus) + { + this.PreviewUpdateStatus = previewUpdateStatus; + return this; + } + /// <summary>Whether the mod manifest was loaded (regardless of whether the mod itself was loaded).</summary> public bool HasManifest() { diff --git a/src/SMAPI/Framework/ModUpdateChecking/ModUpdateStatus.cs b/src/SMAPI/Framework/ModUpdateChecking/ModUpdateStatus.cs new file mode 100644 index 00000000..efb32aef --- /dev/null +++ b/src/SMAPI/Framework/ModUpdateChecking/ModUpdateStatus.cs @@ -0,0 +1,37 @@ +namespace StardewModdingAPI.Framework.ModUpdateChecking +{ + /// <summary>Update status for a mod.</summary> + internal class ModUpdateStatus + { + /********* + ** Accessors + *********/ + /// <summary>The version that this mod can be updated to (if any).</summary> + public ISemanticVersion Version { get; } + + /// <summary>The error checking for updates of this mod (if any).</summary> + public string Error { get; } + + /********* + ** Public methods + *********/ + /// <summary>Construct an instance.</summary> + /// <param name="version">The version that this mod can be update to.</param> + public ModUpdateStatus(ISemanticVersion version) + { + this.Version = version; + } + + /// <summary>Construct an instance.</summary> + /// <param name="error">The error checking for updates of this mod.</param> + public ModUpdateStatus(string error) + { + this.Error = error; + } + + /// <summary>Construct an instance.</summary> + public ModUpdateStatus() + { + } + } +} |