// using System.Text; // using System.Collections.Generic; // using UnityEngine; // using UnityEngine.Events; // // using RR.Common.Behaviour.ScriptableObjects; // // public class SettingsManager : MonoBehaviour // { // public static SettingsManager instance; // public GameSettings gameSettings; // const string SETTINGS_PREFS_KEY = "SETTINGS"; // int ActualHash => settingsHash(getDefaultSettings()); // // public UnityEvent OnSettingsChanged; // // private void Awake() // { // instance ??= this; // OnSettingsChanged = new UnityEvent(); // // LoadOrCreateSettings(); // } // private void LoadOrCreateSettings() // { // bool shouldLoadDefault = !PlayerPrefs.HasKey(SETTINGS_PREFS_KEY) || !IsSavedSettingsValid(); // // if (shouldLoadDefault) // { // LoadDefaultSettings(); // } // else // { // LoadSettings(); // } // // bool IsSavedSettingsValid() // { // LoadSettings(); // return gameSettings.hash == ActualHash; // } // } // // public void ChangeSetting(string settingName, int newIndex) // { // var setting = gameSettings.GetSetting(settingName); // if (setting != null && newIndex >= 0 && newIndex < setting.options.Count) // { // setting.chosenIndex = newIndex; // SaveSettings(); // } // } // public void SaveSettings() // { // string json = JsonUtility.ToJson(gameSettings); // // PlayerPrefs.SetString(SETTINGS_PREFS_KEY, json); // PlayerPrefs.Save(); // OnSettingsChanged?.Invoke(); // } // // public string GetSettingValue(string settingName) // => gameSettings.GetSetting(settingName).ChosenOption; // // // int settingsHash(List settings) // { // StringBuilder sb = new StringBuilder(); // foreach (SettingOption settingOption in settings) // { // sb.Append(settingOption.settingName); // foreach (string option in settingOption.options) // { // sb.Append(option); // } // } // // int hash = sb.ToString().GetHashCode(); // return hash; // } // // void LoadDefaultSettings() // { // //print("Загрузка стандартных настроек"); // // gameSettings.settings = getDefaultSettings(); // gameSettings.hash = settingsHash(gameSettings.settings); // // SaveSettings(); // } // // List getDefaultSettings() // { // List settings = new List(); // // settings.Add(new SettingOption(settingName: "Громкость музыки", // options: new List() { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }, // defaultIndex: 1)); // // settings.Add(new SettingOption(settingName: "Громкость эффектов", // options: new List() { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }, // defaultIndex: 8)); // // settings.Add(new SettingOption(settingName: "Выдача призов при игре с ботом", // options: new List() { "Выдавать", "Не выдавать" }, // defaultIndex: 0)); // // settings.Add(new SettingOption(settingName: "Озвучка персонажей", // options: new List() { "Вкл", "Выкл" }, // defaultIndex: 0)); // // settings.Add(new SettingOption(settingName: "Сложность ботов", // options: new List() { "Легкая", "Средняя", "Сложная" }, // defaultIndex: 1)); // // settings.Add(new SettingOption(settingName: "Бесплатная игра", // options: new List() { "Вкл", "Выкл" }, // defaultIndex: 1)); // // settings.Add(new SettingOption(settingName: "Показывать контакты администрации", // options: new List() { "Вкл", "Выкл" }, // defaultIndex: 0)); // return settings; // } // // // void LoadSettings() // { // string json = PlayerPrefs.GetString(SETTINGS_PREFS_KEY); // gameSettings = JsonUtility.FromJson(json); // // SaveSettings(); // } // // // // }