RiftMayhem/Assets/Scripts/Items/PlayerDataHandler.cs
Pedro Gomes 2e12515870 Multiple fix and updates
- Fix parentscript missing from npc's
- Reworked save/load data
- Character data, player coins, character inventory and equipped items now properly saved and loaded
2024-05-18 01:38:28 +01:00

130 lines
4.4 KiB
C#

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<PlayerDataHandler>();
// 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<PlayerDataHandler>();
}
}
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<CharacterData>(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<CoinData>(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<EquipmentData>(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<InventoryData>(inventoryDataKey);
return inventoryData;
}
else return null;
}
public void SaveCharacterInventoryData(string characterName, InventoryData inventoryData)
{
inventoryDataKey = GameConstants.PlayerPrefsKeys.GetCharacterInventoryDataKey(characterName);
GameStatePersistenceManager.Instance.SaveData(inventoryDataKey, inventoryData);
}
}