diff --git a/Assets/Scripts/Managers/GlobalManager.cs b/Assets/Scripts/Managers/GlobalManager.cs index 224d446b8b75b3f0ed0df7cdbad76a418caf11dd..0a47dc4bed04a1cc449812534b2e39f76cb5f1d1 100644 --- a/Assets/Scripts/Managers/GlobalManager.cs +++ b/Assets/Scripts/Managers/GlobalManager.cs @@ -6,7 +6,7 @@ using System.IO; public class GlobalManager : MonoBehaviour { public static GlobalManager Instance; - private GlobalStateManager globalState; + private GlobalStateManager globalStateManager; private string playerName; public string PlayerName { @@ -17,6 +17,24 @@ public class GlobalManager : MonoBehaviour } } + private int idxLoadSlot = -1; + public int IdxLoadSlot + { + get => idxLoadSlot; + set + { + idxLoadSlot = value; + stateSave = SaveLoadManager.Instance.GetStateFromFile(idxLoadSlot); + OnLoad(); + } + } + + private StateSave stateSave = null; + public StateSave StateSave + { + get => stateSave; + } + private void Awake() { if (Instance != null) @@ -26,10 +44,15 @@ public class GlobalManager : MonoBehaviour } Instance = this; - globalState = GlobalStateManager.Instance; + globalStateManager = GlobalStateManager.Instance; DontDestroyOnLoad(gameObject); } + private void OnLoad() + { + playerName = stateSave.playerStateSave.playerName; + } + // Start is called before the first frame update void Start() { diff --git a/Assets/Scripts/SaveLoad/SaveLoadManager.cs b/Assets/Scripts/SaveLoad/SaveLoadManager.cs index a6e5312bb208343635cf5a0f0be42b3a61b94523..184b4caefd0a2cf9987d99c7acb2fa8c8f064810 100644 --- a/Assets/Scripts/SaveLoad/SaveLoadManager.cs +++ b/Assets/Scripts/SaveLoad/SaveLoadManager.cs @@ -61,7 +61,7 @@ public class SaveLoadManager : MonoBehaviour public void LoadState(int Id) { - var file = SaveLoadConfig.files[Id]; +/* var file = SaveLoadConfig.files[Id]; var path = Application.persistentDataPath + "/" + file + ".json"; if (File.Exists(path)) { @@ -69,6 +69,26 @@ public class SaveLoadManager : MonoBehaviour Debug.Log("JSON:" + json); StateSave state = JsonUtility.FromJson<StateSave>(json); GlobalStateManager.Instance.SetState(state); + }*/ + var state = GetStateFromFile(Id); + if (state != null) + { + GlobalStateManager.Instance.SetState(state); + } + } + + public StateSave GetStateFromFile(int id) + { + var file = SaveLoadConfig.files[id]; + var path = Application.persistentDataPath + "/" + file + ".json"; + if (File.Exists(path)) + { + string json = File.ReadAllText(path); + Debug.Log("JSON:" + json); + StateSave state = JsonUtility.FromJson<StateSave>(json); + return state; } + + return null; } } diff --git a/Assets/Scripts/SaveLoad/SavePlace.cs b/Assets/Scripts/SaveLoad/SavePlace.cs index 68cc706bd8289d44c282f5eda5af617d913291c4..a4a46c719a471590653b0e2b1345ae3eaf1ed896 100644 --- a/Assets/Scripts/SaveLoad/SavePlace.cs +++ b/Assets/Scripts/SaveLoad/SavePlace.cs @@ -5,6 +5,20 @@ using UnityEngine; public class SavePlace : MonoBehaviour { private bool onArea = false; + private Temple temple; + + private bool IsOnQuest + { + get + { + return temple.OnQuest; + } + } + + private void Awake() + { + temple = FindObjectOfType<Temple>(); + } // Start is called before the first frame update void Start() @@ -15,7 +29,7 @@ public class SavePlace : MonoBehaviour // Update is called once per frame void Update() { - if (onArea && Input.GetKeyDown(KeyCode.B)) + if (onArea && !IsOnQuest && Input.GetKeyDown(KeyCode.B)) { Debug.Log("SAVING"); if (SaveLoadManager.Instance == null ) @@ -35,7 +49,10 @@ public class SavePlace : MonoBehaviour { if (other.CompareTag("Player")) { - ToastManager.Instance.ShowToast("Press B to save", 3); + if (!IsOnQuest) + { + ToastManager.Instance.ShowToast("Press B to save", 3); + } onArea = true; } } diff --git a/Assets/Scripts/States/GlobalStateManager.cs b/Assets/Scripts/States/GlobalStateManager.cs index d74b7b1351640c6e253f1dfab89aea88aff33545..ac3075f7259519f5e1244dc7426576b37cf898f4 100644 --- a/Assets/Scripts/States/GlobalStateManager.cs +++ b/Assets/Scripts/States/GlobalStateManager.cs @@ -132,7 +132,7 @@ public class GlobalStateManager : MonoBehaviour // TODO: set meta player save - GlobalManager.Instance.PlayerName = state.playerStateSave.playerName; +/* GlobalManager.Instance.PlayerName = state.playerStateSave.playerName; playerHealth.currentHealth = state.playerStateSave.health; GameControl.control.currency = state.playerStateSave.money; temple.IdxCurrentQuest = state.playerStateSave.idxQuest; @@ -147,7 +147,7 @@ public class GlobalStateManager : MonoBehaviour playerWeapons.UnlockWeapon(type); playerWeapons.SetLevel(type, level); } - } + }*/ // TODO: set player state save