Gondwana Game Engine Development (master) - 2.6.1
Gondwana is a cross-platform 2.5D game and rendering engine written in C#/.NET 8. It provides fine-grained control over rendering, timing, and scene composition, with built-in support for parallax, z-ordering, pixel overhang, collision detection, and particle effects. Gondwana targets desktop and web platforms using SkiaSharp for graphics and pluggable audio backends for desktop and browser targets.
Loading...
Searching...
No Matches
FrameJsonConverter.cs
2using Newtonsoft.Json;
3using Newtonsoft.Json.Linq;
4
5namespace Gondwana.Drawing;
6
11internal sealed class FrameJsonConverter : JsonConverter<Frame>
12{
19 public override void WriteJson(JsonWriter writer,
20 Frame value,
21 JsonSerializer serializer)
22 {
23 if (value.Tilesheet is null)
24 {
25 writer.WriteNull();
26 return;
27 }
28
29 writer.WriteStartObject();
30
31 writer.WritePropertyName("tilesheet");
32 writer.WriteValue(value.Tilesheet.Name);
33
34 writer.WritePropertyName("regionName");
35 writer.WriteValue(value.RegionName);
36
37 writer.WritePropertyName("xTile");
38 writer.WriteValue(value.XTile);
39
40 writer.WritePropertyName("yTile");
41 writer.WriteValue(value.YTile);
42
43 writer.WriteEndObject();
44 }
45
55 public override Frame ReadJson(JsonReader reader,
56 Type objectType,
57 Frame existingValue,
58 bool hasExistingValue,
59 JsonSerializer serializer)
60 {
61 if (reader.TokenType == JsonToken.Null)
62 return default;
63
64 var obj = JObject.Load(reader);
65
66 var tilesheetName = obj.Value<string>("tilesheet");
67 var regionName = obj.Value<string>("regionName") ?? TilesheetRegion.DefaultRegionName;
68
69 var xTile = obj.Value<int?>("xTile") ?? 0;
70 var yTile = obj.Value<int?>("yTile") ?? 0;
71
72 if (string.IsNullOrWhiteSpace(tilesheetName))
73 throw new JsonSerializationException("Frame is missing required tilesheet name.");
74
75 var tilesheet = TilesheetRegistry.Instance.GetOrNull(tilesheetName);
76
77 if (tilesheet is null)
78 {
79 throw new JsonSerializationException(
80 $"Could not resolve Tilesheet '{tilesheetName}' while deserializing Frame.");
81 }
82
83 return new Frame(tilesheet, regionName, xTile, yTile);
84 }
85}
readonly int YTile
The vertical tile coordinate (row index) within the tilesheet.
Definition Frame.cs:31
readonly Tilesheet Tilesheet
The tilesheet that contains the source bitmap for this frame.
Definition Frame.cs:16
readonly string RegionName
The tilesheet region that contains the source bitmap for this frame.
Definition Frame.cs:21
readonly int XTile
The horizontal tile coordinate (column index) within the tilesheet.
Definition Frame.cs:26