using System;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using UnityEngine;
public class SaveController : MonoBehaviour
{
private GameObject player;
private ClassSelection cS;
private SaveManager saveManager;
[SerializeField]private string saveName;
[SerializeField] private List<ClassBaseType> classes;
void Start()
{
saveManager = GetComponent<SaveManager>();
//player = GameObject.Find("Player");
//cS = player.GetComponent<ClassSelection>();
if (saveManager.HasSave(saveName)) ReadSave();
}
public void SaveGame()
{
List<ClassStats> classStats = new List<ClassStats>();
foreach(ClassBaseType c in classes)
{
classStats.Add(new ClassStats(c));
}
SaveStruct s =new SaveStruct(PlayerStatus.currency, classStats);
string json = JsonUtility.ToJson(s);
saveManager.CreateNewSave(json, saveName);
}
public void ReadSave()
{
SaveStruct t = saveManager.ReadSave(saveName);
PlayerStatus.currency = t.currency;
for (int i = 0; i < t.classStats.Count; i++)
{
classes[i].hp = (uint)t.classStats[i].maxHp;
classes[i].speedAir = (int)t.classStats[i].speedAir;
classes[i].speedGround = (int)t.classStats[i].speedGround;
classes[i].dead = t.classStats[i].dead;
}
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.P)) SaveGame();
}
}
[Serializable]
public struct ClassStats
{
public float maxHp;
public float speedGround;
public float speedAir;
public bool dead;
public ClassStats(float maxHp, float speedGround, float speedAir, bool dead)
{
this.maxHp = maxHp;
this.speedGround = speedGround;
this.speedAir = speedAir;
this.dead = dead;
}
public ClassStats(ClassBaseType cl)
{
this.maxHp = cl.hp;
this.speedGround = cl.speedGround;
this.speedAir = cl.speedAir;
this.dead = cl.dead;
}
}