summaryrefslogtreecommitdiff
path: root/src/SMAPI/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'src/SMAPI/Framework')
-rw-r--r--src/SMAPI/Framework/IModMetadata.cs14
-rw-r--r--src/SMAPI/Framework/ModLoading/ModMetadata.cs23
-rw-r--r--src/SMAPI/Framework/ModUpdateChecking/ModUpdateStatus.cs37
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()
+ {
+ }
+ }
+}