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