2020-02-27 18:56:49 +01:00
|
|
|
using System;
|
|
|
|
using System.Globalization;
|
|
|
|
using Microsoft.Xna.Framework;
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
|
|
|
namespace MLEM.Data.Json {
|
2021-11-22 19:25:18 +01:00
|
|
|
/// <summary>
|
|
|
|
/// Converts a <see cref="Rectangle"/> to and from JSON
|
|
|
|
/// </summary>
|
2020-02-27 18:56:49 +01:00
|
|
|
public class RectangleConverter : JsonConverter<Rectangle> {
|
|
|
|
|
2021-11-22 19:25:18 +01:00
|
|
|
/// <summary>Writes the JSON representation of the object.</summary>
|
|
|
|
/// <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter" /> to write to.</param>
|
|
|
|
/// <param name="value">The value.</param>
|
|
|
|
/// <param name="serializer">The calling serializer.</param>
|
2020-02-27 18:56:49 +01:00
|
|
|
public override void WriteJson(JsonWriter writer, Rectangle value, JsonSerializer serializer) {
|
|
|
|
writer.WriteValue(
|
|
|
|
value.X.ToString(CultureInfo.InvariantCulture) + " " + value.Y.ToString(CultureInfo.InvariantCulture) + " " +
|
|
|
|
value.Width.ToString(CultureInfo.InvariantCulture) + " " + value.Height.ToString(CultureInfo.InvariantCulture));
|
|
|
|
}
|
|
|
|
|
2021-11-22 19:25:18 +01:00
|
|
|
/// <summary>Reads the JSON representation of the object.</summary>
|
|
|
|
/// <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader" /> to read from.</param>
|
|
|
|
/// <param name="objectType">Type of the object.</param>
|
|
|
|
/// <param name="existingValue">The existing value of object being read. If there is no existing value then <c>null</c> will be used.</param>
|
|
|
|
/// <param name="hasExistingValue">The existing value has a value.</param>
|
|
|
|
/// <param name="serializer">The calling serializer.</param>
|
|
|
|
/// <returns>The object value.</returns>
|
2020-02-27 18:56:49 +01:00
|
|
|
public override Rectangle ReadJson(JsonReader reader, Type objectType, Rectangle existingValue, bool hasExistingValue, JsonSerializer serializer) {
|
|
|
|
var value = reader.Value.ToString().Split(' ');
|
|
|
|
return new Rectangle(
|
|
|
|
int.Parse(value[0], CultureInfo.InvariantCulture), int.Parse(value[1], CultureInfo.InvariantCulture),
|
|
|
|
int.Parse(value[2], CultureInfo.InvariantCulture), int.Parse(value[3], CultureInfo.InvariantCulture));
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2022-06-17 18:23:47 +02:00
|
|
|
}
|