- Fix parentscript missing from npc's - Reworked save/load data - Character data, player coins, character inventory and equipped items now properly saved and loaded
130 lines
4.4 KiB
C#
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);
|
|
}
|
|
}
|