using UnityEngine;
using UnityEngine.SceneManagement;
namespace RR.Common.Settings
{
///
/// Готовые методы для кнопок настроек.
/// Эти методы можно вызывать из UnityEvent в SettingsDatabase через Inspector.
///
public class SettingsButtonActions : MonoBehaviour
{
public static SettingsButtonActions Instance { get; private set; }
private void Awake()
{
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
}
///
/// Сбросить все настройки к значениям по умолчанию
///
public void ResetAllSettings()
{
if (SettingsManager.Instance)
{
SettingsManager.Instance.ResetAllToDefaults();
}
}
///
/// Выход из игры
///
public void QuitGame()
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
///
/// Загрузить главное меню
///
public void LoadMainMenu()
{
LoadScene("MainMenu");
}
///
/// Загрузить сцену по имени
///
public void LoadScene(string sceneName)
{
if (!string.IsNullOrEmpty(sceneName))
{
SceneManager.LoadScene(sceneName);
}
}
///
/// Открыть URL в браузере
///
public void OpenURL(string url)
{
if (!string.IsNullOrEmpty(url))
{
Application.OpenURL(url);
}
}
///
/// Открыть папку с сохранениями
///
public void OpenSavesFolder()
{
string path = Application.persistentDataPath;
Application.OpenURL($"file://{path}");
}
///
/// Перезагрузить текущую сцену
///
public void ReloadCurrentScene()
{
Scene currentScene = SceneManager.GetActiveScene();
SceneManager.LoadScene(currentScene.name);
}
///
/// Применить все настройки заново
///
public void ApplyAllSettings()
{
if (SettingsManager.Instance)
{
SettingsManager.Instance.ApplyAll();
}
}
}
}