42 lines
1.4 KiB
C#
42 lines
1.4 KiB
C#
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
// Handles scene-persistent player data
|
|
public class PlayerManager : MonoBehaviour
|
|
{
|
|
public int CurrentToolIndex;
|
|
|
|
#region Player Data Save/Load
|
|
public void SavePlayerData(ref PlayerSaveData data)
|
|
{
|
|
data.activeToolIndex = GameManager.Instance.PlayerManager.CurrentToolIndex;
|
|
data.camRotation = GameManager.Instance.PlayerController.cameraController.camTargetRotation;
|
|
data.dougPosition = GameManager.Instance.PlayerController.transform.position;
|
|
data.currentScene = SceneManager.GetActiveScene().name;
|
|
}
|
|
|
|
public void LoadPlayerData(PlayerSaveData data)
|
|
{
|
|
if (data.currentScene != null && data.currentScene != SceneManager.GetActiveScene().name)
|
|
{
|
|
GameManager.Instance.GoToMapPoint(new MapPoint(data.currentScene, data.dougPosition), true);
|
|
}
|
|
else
|
|
{
|
|
GameManager.Instance.PlayerManager.CurrentToolIndex = data.activeToolIndex;
|
|
GameManager.Instance.PlayerController.cameraController.SnapToRotation(data.camRotation);
|
|
GameManager.Instance.PlayerController.transform.position = data.dougPosition;
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
[System.Serializable]
|
|
public struct PlayerSaveData
|
|
{
|
|
public int activeToolIndex;
|
|
public float camRotation;
|
|
public Vector3 dougPosition;
|
|
public string currentScene;
|
|
}
|