Newer
Older
HardPoint-Project-Abertay-University-Unity3D / Assets / Scripts / Systems / SaveSystem / SaveController.cs
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;
    }
}