mirror of
https://github.com/AlexMacocian/MonoGame.Extended.git
synced 2026-07-15 15:09:29 +00:00
Merge pull request #833 from craftworkgames/rectanglef_serializer
Rectanglef serializer
This commit is contained in:
@@ -14,6 +14,7 @@ namespace MonoGame.Extended.Serialization
|
||||
Converters.Add(new RangeJsonConverter<float>());
|
||||
Converters.Add(new RangeJsonConverter<HslColor>());
|
||||
Converters.Add(new ThicknessJsonConverter());
|
||||
Converters.Add(new RectangleFJsonConverter());
|
||||
Converters.Add(new TextureAtlasJsonConverter(contentManager, contentPath));
|
||||
Converters.Add(new Size2JsonConverter());
|
||||
|
||||
@@ -22,4 +23,4 @@ namespace MonoGame.Extended.Serialization
|
||||
Formatting = Formatting.Indented;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace MonoGame.Extended.Serialization;
|
||||
|
||||
public class RectangleFJsonConverter: JsonConverter
|
||||
{
|
||||
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
||||
{
|
||||
var rect = (RectangleF)value;
|
||||
writer.WriteValue($"{rect.Left} {rect.Top} {rect.Width} {rect.Height}");
|
||||
}
|
||||
|
||||
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
||||
{
|
||||
var values = reader.ReadAsMultiDimensional<float>();
|
||||
return new RectangleF(values[0], values[1], values[2], values[3]);
|
||||
}
|
||||
|
||||
public override bool CanConvert(Type objectType)
|
||||
{
|
||||
return objectType == typeof(RectangleF);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
using System.IO;
|
||||
using MonoGame.Extended.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using Xunit;
|
||||
|
||||
namespace MonoGame.Extended.Tests.Serialization;
|
||||
|
||||
public class RectangleFJsonConverterTest
|
||||
{
|
||||
|
||||
public class TestContent
|
||||
{
|
||||
public RectangleF Box { get; set; }
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ConstructorTest()
|
||||
{
|
||||
var jsonData = @"
|
||||
{
|
||||
box: ""1 1 10 10""
|
||||
}
|
||||
";
|
||||
var serializer = new JsonSerializer();
|
||||
serializer.Converters.Add(new RectangleFJsonConverter());
|
||||
var content = serializer.Deserialize<TestContent>(new JsonTextReader(new StringReader(jsonData)));
|
||||
|
||||
Assert.Equal(1, content.Box.Left);
|
||||
Assert.Equal(1, content.Box.Top);
|
||||
Assert.Equal(10, content.Box.Width);
|
||||
Assert.Equal(10, content.Box.Height);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user