summaryrefslogtreecommitdiff
path: root/src/StardewModdingAPI/Framework/Serialisation
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <github@jplamondonw.com>2017-07-21 01:51:05 -0400
committerJesse Plamondon-Willard <github@jplamondonw.com>2017-07-23 12:14:33 -0400
commitc20b21bcaa799a9961799316b7f4b7d8f929ca3f (patch)
tree6455574bc9332c9d9676a572bbfa38e5fe7b5607 /src/StardewModdingAPI/Framework/Serialisation
parent1bf8e2b95ccb614580da08cded655ffc67b84651 (diff)
downloadSMAPI-c20b21bcaa799a9961799316b7f4b7d8f929ca3f.tar.gz
SMAPI-c20b21bcaa799a9961799316b7f4b7d8f929ca3f.tar.bz2
SMAPI-c20b21bcaa799a9961799316b7f4b7d8f929ca3f.zip
add support for disambiguating IDs in mod compatibility list
Diffstat (limited to 'src/StardewModdingAPI/Framework/Serialisation')
-rw-r--r--src/StardewModdingAPI/Framework/Serialisation/SFieldConverter.cs19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/StardewModdingAPI/Framework/Serialisation/SFieldConverter.cs b/src/StardewModdingAPI/Framework/Serialisation/SFieldConverter.cs
index 9dc62b6a..11ffdccb 100644
--- a/src/StardewModdingAPI/Framework/Serialisation/SFieldConverter.cs
+++ b/src/StardewModdingAPI/Framework/Serialisation/SFieldConverter.cs
@@ -24,7 +24,10 @@ namespace StardewModdingAPI.Framework.Serialisation
/// <param name="objectType">The object type.</param>
public override bool CanConvert(Type objectType)
{
- return objectType == typeof(ISemanticVersion) || objectType == typeof(IManifestDependency[]);
+ return
+ objectType == typeof(ISemanticVersion)
+ || objectType == typeof(IManifestDependency[])
+ || objectType == typeof(ModCompatibilityID[]);
}
/// <summary>Reads the JSON representation of the object.</summary>
@@ -83,6 +86,20 @@ namespace StardewModdingAPI.Framework.Serialisation
return result.ToArray();
}
+ // mod compatibility ID
+ if (objectType == typeof(ModCompatibilityID[]))
+ {
+ List<ModCompatibilityID> result = new List<ModCompatibilityID>();
+ foreach (JToken child in JArray.Load(reader).Children())
+ {
+ result.Add(child is JValue value
+ ? new ModCompatibilityID(value.Value<string>())
+ : child.ToObject<ModCompatibilityID>()
+ );
+ }
+ return result.ToArray();
+ }
+
// unknown
throw new NotSupportedException($"Unknown type '{objectType?.FullName}'.");
}