59 lines
1.8 KiB
C#

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<JsonConverter>
{
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<PrizeContainer>(json, Settings);
}
}