97 lines
2.6 KiB
C#
97 lines
2.6 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.IO;
|
||
using System.Text;
|
||
using UnityEngine;
|
||
|
||
public static class PrizeSerializer
|
||
{
|
||
const string CHARACTERS_PRIZES = "CharPrizes.prizRR";
|
||
static string FILE_PATH => Path.Combine(Application.persistentDataPath, CHARACTERS_PRIZES);
|
||
|
||
static int CharactersAmount => 5;
|
||
|
||
public static List<Prize> GetPrizes()
|
||
{
|
||
if (!File.Exists(FILE_PATH))
|
||
{
|
||
Debug.Log("Не записаны призы беру дефолт");
|
||
return GetDefaultPrizes();
|
||
}
|
||
|
||
string fileString = File.ReadAllText(FILE_PATH);
|
||
return DeserializePrizes(fileString);
|
||
}
|
||
|
||
public static void SetPrizes(List<Prize> prizes)
|
||
{
|
||
string serialized = SerializePrizes(prizes);
|
||
Debug.Log($"serialized: {serialized}");
|
||
File.WriteAllText(FILE_PATH, serialized);
|
||
}
|
||
|
||
|
||
public static string SerializePrizes(List<Prize> prizes)
|
||
{
|
||
StringBuilder sb = new();
|
||
|
||
for (int i = 0; i < CharactersAmount; i++)
|
||
{
|
||
sb.Append(prizes[i].ToString());
|
||
|
||
if (i < CharactersAmount - 1)
|
||
sb.Append("\n");
|
||
}
|
||
string result = sb.ToString();
|
||
Debug.Log($"Serialized: {result}");
|
||
return result;
|
||
}
|
||
|
||
public static List<Prize> DeserializePrizes(string serialized)
|
||
{
|
||
string[] lines = serialized.Split('\n');
|
||
|
||
if (lines.Length != CharactersAmount)
|
||
{
|
||
Debug.Log("Не совпадаем");
|
||
return GetDefaultPrizes();
|
||
}
|
||
|
||
List<Prize> prizes = new();
|
||
for (int i = 0; i < CharactersAmount; i++)
|
||
{
|
||
string[] elements = lines[i].Split(':');
|
||
|
||
PrizeType prizeType = (PrizeType)Enum.Parse(typeof(PrizeType), elements[0]);
|
||
|
||
int prizeAmount = int.Parse(elements[1]);
|
||
|
||
Prize prize = new Prize(prizeType, prizeAmount);
|
||
prizes.Add(prize);
|
||
Debug.Log($"deserizlized Prize{i}. {prize}");
|
||
}
|
||
|
||
return prizes;
|
||
}
|
||
|
||
|
||
//делает список пустых призов, последний индекс - приз с хоппера
|
||
public static List<Prize> GetDefaultPrizes()
|
||
{
|
||
List<Prize> prizes = new();
|
||
|
||
for (int i = 0; i < CharactersAmount-1; i++)
|
||
{
|
||
prizes.Add(new Prize(prizeType: PrizeType.None,
|
||
amount: 0));
|
||
}
|
||
prizes.Add(new Prize(prizeType: PrizeType.Hopper,
|
||
amount: 1));
|
||
|
||
SerializePrizes(prizes);
|
||
|
||
return prizes;
|
||
}
|
||
}
|
||
|