From 445395992f7664fab6b7f4cd2427f35825e055c1 Mon Sep 17 00:00:00 2001 From: Malik Rafsanjani <pro.malikakbar2357@gmail.com> Date: Fri, 14 Apr 2023 13:29:46 +0700 Subject: [PATCH] stash temp load feature --- Assets/Scripts/Managers/GlobalManager.cs | 27 +++++++++++++++++++-- Assets/Scripts/SaveLoad/SaveLoadManager.cs | 22 ++++++++++++++++- Assets/Scripts/SaveLoad/SavePlace.cs | 21 ++++++++++++++-- Assets/Scripts/States/GlobalStateManager.cs | 4 +-- 4 files changed, 67 insertions(+), 7 deletions(-) diff --git a/Assets/Scripts/Managers/GlobalManager.cs b/Assets/Scripts/Managers/GlobalManager.cs index 224d446..0a47dc4 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 a6e5312..184b4ca 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 68cc706..a4a46c7 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 d74b7b1..ac3075f 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 -- GitLab