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; } }