using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System.Collections.Generic; using System.IO; using UnityEngine; namespace PrizeSystem { public static class PrizeSerializer { private static readonly JsonSerializerSettings Settings = new JsonSerializerSettings { Formatting = Formatting.Indented, NullValueHandling = NullValueHandling.Ignore, Converters = new List { new StringEnumConverter(), // Для красивой сериализации enum'ов new PrizeConverter() } }; private static string FILE_PATH => Path.Combine(Application.persistentDataPath, "Prizes.json"); private static PrizeContainer DefaultPrizeContainer; public static void Initialize(PrizeContainer defaultPrizeContainer) => DefaultPrizeContainer = defaultPrizeContainer; public static void SaveToFile() { var container = PrizeSystemManager.PrizeContainer; var json = SerializeContainer(container); File.WriteAllText(FILE_PATH, json); } public static PrizeContainer LoadFromFile() { PrizeContainer container; if (!File.Exists(FILE_PATH)) { container = DefaultPrizeContainer; } else { var json = File.ReadAllText(FILE_PATH); container = DeserializeContainer(json); } return container; } private static string SerializeContainer(PrizeContainer container) => JsonConvert.SerializeObject(container, Settings); private static PrizeContainer DeserializeContainer(string json) => JsonConvert.DeserializeObject(json, Settings); } }