Files
BABA_YAGA/Assets/Scripts/GameSetup/SettingsManager.cs
2026-06-09 02:05:00 +07:00

79 lines
1.9 KiB
C#

using Sirenix.OdinInspector;
using UnityEngine;
namespace OnlyScove.Scripts
{
public class SettingsManager : MonoBehaviour
{
public static SettingsManager Instance { get; private set; }
[BoxGroup("Settings")]
[Required]
[InlineEditor]
[SerializeField] private GameSettings settings;
public GameSettings Settings => settings;
[ShowInInspector]
[ReadOnly]
[BoxGroup("Runtime")]
private bool IsActiveInstance => Instance == this;
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();
}
[Button("Notify Settings Changed")]
private void NotifySettingsChanged()
{
OnSettingsChanged?.Invoke();
}
public event System.Action OnSettingsChanged;
}
}