64 lines
1.6 KiB
C#
64 lines
1.6 KiB
C#
using UnityEngine;
|
|
|
|
namespace OnlyScove.Scripts
|
|
{
|
|
public class SettingsManager : MonoBehaviour
|
|
{
|
|
public static SettingsManager Instance { get; private set; }
|
|
|
|
[SerializeField] private GameSettings settings;
|
|
public GameSettings Settings => settings;
|
|
|
|
private void Awake()
|
|
{
|
|
if (Instance == null)
|
|
{
|
|
Instance = this;
|
|
DontDestroyOnLoad(gameObject);
|
|
|
|
if (settings == null)
|
|
{
|
|
// Fallback or load from Resources if needed
|
|
settings = ScriptableObject.CreateInstance<GameSettings>();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Destroy(gameObject);
|
|
}
|
|
}
|
|
|
|
public void SetSensitivity(float value)
|
|
{
|
|
settings.sensitivity = value;
|
|
OnSettingsChanged?.Invoke();
|
|
}
|
|
|
|
public void SetInvertX(bool value)
|
|
{
|
|
settings.invertX = value;
|
|
OnSettingsChanged?.Invoke();
|
|
}
|
|
|
|
public void SetInvertY(bool value)
|
|
{
|
|
settings.invertY = value;
|
|
OnSettingsChanged?.Invoke();
|
|
}
|
|
|
|
public void SetSideBias(bool isRight)
|
|
{
|
|
settings.sideBiasRight = isRight;
|
|
OnSettingsChanged?.Invoke();
|
|
}
|
|
|
|
public void ToggleSideBias()
|
|
{
|
|
settings.sideBiasRight = !settings.sideBiasRight;
|
|
OnSettingsChanged?.Invoke();
|
|
}
|
|
|
|
public event System.Action OnSettingsChanged;
|
|
}
|
|
}
|