diff --git a/Pulsar4X/GameEngine/Modding/ModInstruction.cs b/Pulsar4X/GameEngine/Modding/ModInstruction.cs index ff9870264..c27fa1a42 100644 --- a/Pulsar4X/GameEngine/Modding/ModInstruction.cs +++ b/Pulsar4X/GameEngine/Modding/ModInstruction.cs @@ -108,7 +108,21 @@ public override bool CanConvert(Type objectType) public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) { - throw new NotImplementedException(); + if (value == null) + { + writer.WriteNull(); + return; + } + + ModInstruction modInstruction = (ModInstruction)value; + + JObject jObject = new JObject + { + { "Type", modInstruction.Type.ToString() }, + { "Payload", JObject.FromObject(modInstruction.Data) } + }; + + jObject.WriteTo(writer); } } diff --git a/Pulsar4X/Pulsar4X.Client/ModFileEditing/BluePrintsUI.cs b/Pulsar4X/Pulsar4X.Client/ModFileEditing/BluePrintsUI.cs index a41f7a379..9dfe2ecb4 100644 --- a/Pulsar4X/Pulsar4X.Client/ModFileEditing/BluePrintsUI.cs +++ b/Pulsar4X/Pulsar4X.Client/ModFileEditing/BluePrintsUI.cs @@ -6,6 +6,7 @@ using ImGuiNET; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using Pulsar4X.Blueprints; using Pulsar4X.DataStructures; using Pulsar4X.Interfaces; @@ -187,16 +188,21 @@ protected override void Save() { using (StreamWriter outputFile = new StreamWriter(Path.Combine(_fileDialogPath, _fileName))) { - - var tcb = new Tcb() {}; - tcb.Payload = new List(); + JArray output = new JArray(); foreach (TechCategoryBlueprint bpt in _itemBlueprints) { - tcb.Payload.Add(bpt); + ModInstruction modInstruction = new ModInstruction(); + modInstruction.Type = ModInstruction.DataType.TechCategory; + modInstruction.Data = bpt; + + var json = JsonConvert.SerializeObject( + modInstruction, + Formatting.Indented, + new JsonSerializerSettings { Converters = new List { new ModInstructionJsonConverter() } }); + output.Add(json); } - var json = JsonConvert.SerializeObject(tcb, Formatting.Indented); - outputFile.WriteLine(json); - + + outputFile.Write(output); /* Dictionary> dic = new Dictionary>();