From 2ab4051c6fe720dc47e99b0c305a0d779ee02d51 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Sun, 19 May 2019 17:58:42 +0200 Subject: Moved Gamelogic to DSALib --- DSALib/DSA_Game/Save/Properties.cs | 80 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 DSALib/DSA_Game/Save/Properties.cs (limited to 'DSALib/DSA_Game/Save/Properties.cs') diff --git a/DSALib/DSA_Game/Save/Properties.cs b/DSALib/DSA_Game/Save/Properties.cs new file mode 100644 index 0000000..7eba911 --- /dev/null +++ b/DSALib/DSA_Game/Save/Properties.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using DSACore.Audio; +using DSACore.Auxiliary; +using Newtonsoft.Json; + +namespace DSACore.DSA_Game.Save +{ + public static class Properties + { + public static Dictionary objects; + + static Properties() + { + objects = new Dictionary(); + /*this.objects.Add("Sounds", new List()); + this.objects.Add("CommandInfos", new List());*/ + } + + public static List CommandInfos + { + get => objects["CommandInfo"] as List; + set => objects["CommandInfo"] = value; + } // use Properties.Commandinfos to access the abstract Object array + + public static List Sounds + { + get => objects["Sound"] as List; + set => objects["Sound"] = value; + } + + public static void Deserialize(string path = @"Properties") + { + var files = Directory.GetFiles(path, "*.json"); + + foreach (var file in files) + try + { + var name = file.Split('\\').Last().Split('.')[0].Replace('-', '.'); + var data = File.ReadAllText(file); + var type = Type.GetType(name); + if (data.StartsWith("[")) type = typeof(List<>).MakeGenericType(type); + + var o = JsonConvert.DeserializeObject(data, type); + objects.Add(name.Split('.').Last(), o); + } + catch (Exception e) + { + // ignored + Console.WriteLine($"Laden von Save-File {file} fehlgeschlagen." + e); + } + } + + public static void Serialize(string path = @"..\..\Properties\") + { + try + { + foreach (var o in objects) + { + var assembly = o.Value is IList list + ? list[0]?.GetType().FullName + : o.Value.GetType().FullName; + + var name = path + assembly.Replace('.', '-') + ".json"; + File.WriteAllText(name, + JsonConvert.SerializeObject(o.Value, + Formatting.Indented)); // Deserialize Data and create CommandInfo Struct + } + } + catch (Exception e) + { + // ignored + Console.WriteLine("Speichern von Save-File fehlgeschlagen." + e); + } + } + } +} \ No newline at end of file -- cgit v1.2.3-54-g00ecf