diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-02-07 20:50:41 -0500 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-02-07 20:50:41 -0500 |
commit | 95a93a05b39d2b27b538ecdb0e6a18f28096c5c2 (patch) | |
tree | d225096d50f0b952c8ca80bac80a34209ee85ea4 /src/StardewModdingAPI/Framework/Serialisation | |
parent | 99d0450b2cb291d565cb836de9f132ca657472c1 (diff) | |
download | SMAPI-95a93a05b39d2b27b538ecdb0e6a18f28096c5c2.tar.gz SMAPI-95a93a05b39d2b27b538ecdb0e6a18f28096c5c2.tar.bz2 SMAPI-95a93a05b39d2b27b538ecdb0e6a18f28096c5c2.zip |
remove oldest deprecated code (#231)
Since Stardew Valley 1.2 breaks most mods anyway, this commits removes the oldest deprecations and fixes the issues that are easiest for mods to update. See documentation for details.
Diffstat (limited to 'src/StardewModdingAPI/Framework/Serialisation')
-rw-r--r-- | src/StardewModdingAPI/Framework/Serialisation/SemanticVersionConverter.cs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/StardewModdingAPI/Framework/Serialisation/SemanticVersionConverter.cs b/src/StardewModdingAPI/Framework/Serialisation/SemanticVersionConverter.cs new file mode 100644 index 00000000..52ec999e --- /dev/null +++ b/src/StardewModdingAPI/Framework/Serialisation/SemanticVersionConverter.cs @@ -0,0 +1,51 @@ +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace StardewModdingAPI.Framework.Serialisation +{ + /// <summary>Overrides how SMAPI reads and writes <see cref="ISemanticVersion"/>.</summary> + internal class SemanticVersionConverter : JsonConverter + { + /********* + ** Accessors + *********/ + /// <summary>Whether this converter can write JSON.</summary> + public override bool CanWrite => false; + + + /********* + ** Public methods + *********/ + /// <summary>Get whether this instance can convert the specified object type.</summary> + /// <param name="objectType">The object type.</param> + public override bool CanConvert(Type objectType) + { + return objectType == typeof(ISemanticVersion); + } + + /// <summary>Reads the JSON representation of the object.</summary> + /// <param name="reader">The JSON reader.</param> + /// <param name="objectType">The object type.</param> + /// <param name="existingValue">The object being read.</param> + /// <param name="serializer">The calling serializer.</param> + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + JObject obj = JObject.Load(reader); + int major = obj.Value<int>("MajorVersion"); + int minor = obj.Value<int>("MinorVersion"); + int patch = obj.Value<int>("PatchVersion"); + string build = obj.Value<string>("Build"); + return new SemanticVersion(major, minor, patch, build); + } + + /// <summary>Writes the JSON representation of the object.</summary> + /// <param name="writer">The JSON writer.</param> + /// <param name="value">The value.</param> + /// <param name="serializer">The calling serializer.</param> + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + throw new InvalidOperationException("This converter does not write JSON."); + } + } +} |