using Kryz.CharacterStats.Examples; using Photon.Pun; using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerDataHandler : MonoBehaviour { #region Singleton private static PlayerDataHandler _instance; // Public reference to the singleton instance public static PlayerDataHandler Instance { get { // If the instance doesn't exist, try to find it in the scene if (_instance == null) { _instance = FindObjectOfType(); // If it's still null, create a new GameObject and add the component if (_instance == null) { GameObject singletonObject = new GameObject(typeof(PlayerDataHandler).Name); _instance = singletonObject.AddComponent(); } } return _instance; } } #endregion CharacterData characterData = new CharacterData(); string characterDataKey; CoinData coinData = new CoinData(); string playerCoinKey; EquipmentData equipmentData = new EquipmentData(); string equipmentDataKey; InventoryData inventoryData = new InventoryData(); string inventoryDataKey; private void Awake() { DontDestroyOnLoad(this); } // Character Data (Level, exp etc) public CharacterData LoadCharacterData(string characterName) { characterDataKey = GameConstants.PlayerPrefsKeys.GetCharacterDataKey(characterName); if (GameStatePersistenceManager.Instance.HasDataForKey(characterDataKey)) { characterData = GameStatePersistenceManager.Instance.LoadData(characterDataKey); return characterData; } else return null; } public void SaveCharacterData(string characterName, CharacterData characterData) { characterDataKey = GameConstants.PlayerPrefsKeys.GetCharacterDataKey(characterName); GameStatePersistenceManager.Instance.SaveData(characterDataKey, characterData); } // Player Coin Data (global coin amount) public CoinData LoadPlayerCoinData(string characterName) { playerCoinKey = GameConstants.PlayerPrefsKeys.GetPlayerCoinKey(characterName); if (GameStatePersistenceManager.Instance.HasDataForKey(playerCoinKey)) { coinData = GameStatePersistenceManager.Instance.LoadData(playerCoinKey); return coinData; } else return null; } public void SavePlayerCoinData(string characterName, CoinData coinData) { playerCoinKey = GameConstants.PlayerPrefsKeys.GetPlayerCoinKey(characterName); GameStatePersistenceManager.Instance.SaveData(playerCoinKey, coinData); } // Character Equipment Data (equipped items) public EquipmentData LoadCharacterEquipmentData(string characterName) { equipmentDataKey = GameConstants.PlayerPrefsKeys.GetCharacterEquipmentDataKey(characterName); if (GameStatePersistenceManager.Instance.HasDataForKey(equipmentDataKey)) { equipmentData = GameStatePersistenceManager.Instance.LoadData(equipmentDataKey); return equipmentData; } else return null; } public void SaveCharacterEquipmentData(string characterName, EquipmentData equipmentData) { equipmentDataKey = GameConstants.PlayerPrefsKeys.GetCharacterEquipmentDataKey(characterName); GameStatePersistenceManager.Instance.SaveData(equipmentDataKey, equipmentData); } // Character Inventory Data (items on inventory) public InventoryData LoadCharacterInventoryData(string characterName) { inventoryDataKey = GameConstants.PlayerPrefsKeys.GetCharacterInventoryDataKey(characterName); if (GameStatePersistenceManager.Instance.HasDataForKey(inventoryDataKey)) { inventoryData = GameStatePersistenceManager.Instance.LoadData(inventoryDataKey); return inventoryData; } else return null; } public void SaveCharacterInventoryData(string characterName, InventoryData inventoryData) { inventoryDataKey = GameConstants.PlayerPrefsKeys.GetCharacterInventoryDataKey(characterName); GameStatePersistenceManager.Instance.SaveData(inventoryDataKey, inventoryData); } }