< Summary

Class:DCL.SettingsData.GeneralSettings
Assembly:Settings
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/Settings.cs
Covered lines:0
Uncovered lines:1
Coverable lines:1
Total lines:193
Line coverage:0% (0 of 1)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Equals(...)0%42600%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/Settings.cs

#LineLine coverage
 1using UnityEngine;
 2using System;
 3using DCL.Helpers;
 4using DCL.Interface;
 5
 6namespace DCL
 7{
 8    public class Settings : DCL.Singleton<Settings>
 9    {
 10        const string QUALITY_SETTINGS_KEY = "Settings.Quality";
 11        const string GENERAL_SETTINGS_KEY = "Settings.General";
 12
 13        public event Action<SettingsData.QualitySettings> OnQualitySettingsChanged;
 14        public event Action<SettingsData.GeneralSettings> OnGeneralSettingsChanged;
 15        public event Action OnResetAllSettings;
 16
 17        public SettingsData.QualitySettings qualitySettings { get { return currentQualitySettings; } }
 18        public SettingsData.QualitySettingsData qualitySettingsPresets { get { return qualitySettingsPreset; } }
 19        public SettingsData.GeneralSettings generalSettings { get { return currentGeneralSettings; } }
 20
 21        private static SettingsData.QualitySettingsData qualitySettingsPreset = null;
 22
 23        public SettingsData.QualitySettingsData autoqualitySettings = null;
 24        public SettingsData.QualitySettings lastValidAutoqualitySet;
 25
 26        private readonly BooleanVariable autosettingsEnabled = null;
 27
 28        public SettingsData.QualitySettings currentQualitySettings { private set; get; }
 29        private SettingsData.GeneralSettings currentGeneralSettings;
 30
 31        public Settings()
 32        {
 33            if (qualitySettingsPreset == null)
 34            {
 35                qualitySettingsPreset = Resources.Load<SettingsData.QualitySettingsData>("ScriptableObjects/QualitySetti
 36            }
 37
 38            if (autoqualitySettings == null)
 39            {
 40                autoqualitySettings = Resources.Load<SettingsData.QualitySettingsData>("ScriptableObjects/AutoQualitySet
 41                lastValidAutoqualitySet = autoqualitySettings[autoqualitySettings.Length / 2];
 42            }
 43
 44            if (autosettingsEnabled == null)
 45                autosettingsEnabled = Resources.Load<BooleanVariable>("ScriptableObjects/AutoQualityEnabled");
 46
 47            LoadQualitySettings();
 48            LoadGeneralSettings();
 49        }
 50
 51        private void LoadQualitySettings()
 52        {
 53            bool isQualitySettingsSet = false;
 54            if (PlayerPrefsUtils.HasKey(QUALITY_SETTINGS_KEY))
 55            {
 56                try
 57                {
 58                    currentQualitySettings = JsonUtility.FromJson<SettingsData.QualitySettings>(PlayerPrefsUtils.GetStri
 59                    isQualitySettingsSet = true;
 60                }
 61                catch (Exception e)
 62                {
 63                    Debug.Log(e.Message);
 64                }
 65            }
 66
 67            if (!isQualitySettingsSet)
 68            {
 69                currentQualitySettings = qualitySettingsPreset.defaultPreset;
 70            }
 71        }
 72
 73        private void LoadGeneralSettings()
 74        {
 75            currentGeneralSettings = GetDefaultGeneralSettings();
 76
 77            if (PlayerPrefsUtils.HasKey(GENERAL_SETTINGS_KEY))
 78            {
 79                try
 80                {
 81                    object currentSetting = currentGeneralSettings;
 82                    JsonUtility.FromJsonOverwrite(PlayerPrefsUtils.GetString(GENERAL_SETTINGS_KEY), currentSetting);
 83                    currentGeneralSettings = (SettingsData.GeneralSettings)currentSetting;
 84                }
 85                catch (Exception e)
 86                {
 87                    Debug.Log(e.Message);
 88                }
 89            }
 90        }
 91
 92        public void LoadDefaultSettings()
 93        {
 94            autosettingsEnabled.Set(false);
 95            currentQualitySettings = qualitySettingsPreset.defaultPreset;
 96            currentGeneralSettings = GetDefaultGeneralSettings();
 97
 98            ApplyQualitySettings(currentQualitySettings);
 99            ApplyGeneralSettings(currentGeneralSettings);
 100        }
 101
 102        public void ResetAllSettings()
 103        {
 104            LoadDefaultSettings();
 105            SaveSettings();
 106            OnResetAllSettings?.Invoke();
 107        }
 108
 109        private SettingsData.GeneralSettings GetDefaultGeneralSettings()
 110        {
 111            return new SettingsData.GeneralSettings()
 112            {
 113                sfxVolume = 1,
 114                mouseSensitivity = 0.6f,
 115                scenesLoadRadius = 4,
 116                voiceChatVolume = 1,
 117                voiceChatAllow = SettingsData.GeneralSettings.VoiceChatAllow.ALL_USERS,
 118                autoqualityOn = false
 119            };
 120        }
 121
 122        /// <summary>
 123        /// Apply the auto quality setting by its index on the array
 124        /// </summary>
 125        /// <param name="index">Index within the autoQualitySettings array</param>
 126        public void ApplyAutoQualitySettings(int index)
 127        {
 128            if (index < 0 || index >= autoqualitySettings.Length)
 129                return;
 130
 131            lastValidAutoqualitySet = autoqualitySettings[index];
 132            lastValidAutoqualitySet.baseResolution = currentQualitySettings.baseResolution;
 133            lastValidAutoqualitySet.fpsCap = currentQualitySettings.fpsCap;
 134
 135            if (currentQualitySettings.Equals(lastValidAutoqualitySet))
 136                return;
 137
 138            ApplyQualitySettings(lastValidAutoqualitySet);
 139        }
 140
 141        public void ApplyQualitySettings(SettingsData.QualitySettings settings)
 142        {
 143            if (settings.Equals(currentQualitySettings))
 144                return;
 145
 146            currentQualitySettings = settings;
 147            OnQualitySettingsChanged?.Invoke(settings);
 148        }
 149
 150        public void ApplyGeneralSettings(SettingsData.GeneralSettings settings)
 151        {
 152            if (settings.Equals(currentGeneralSettings))
 153                return;
 154
 155            currentGeneralSettings = settings;
 156            OnGeneralSettingsChanged?.Invoke(settings);
 157            autosettingsEnabled.Set(settings.autoqualityOn);
 158        }
 159
 160        public void SaveSettings()
 161        {
 162            PlayerPrefsUtils.SetString(GENERAL_SETTINGS_KEY, JsonUtility.ToJson(currentGeneralSettings));
 163            PlayerPrefsUtils.SetString(QUALITY_SETTINGS_KEY, JsonUtility.ToJson(currentQualitySettings));
 164            PlayerPrefsUtils.Save();
 165        }
 166    }
 167}
 168
 169namespace DCL.SettingsData
 170{
 171    [Serializable]
 172    public struct GeneralSettings
 173    {
 174        public enum VoiceChatAllow { ALL_USERS, VERIFIED_ONLY, FRIENDS_ONLY }
 175
 176        public float sfxVolume;
 177        public float mouseSensitivity;
 178        public float voiceChatVolume;
 179        public VoiceChatAllow voiceChatAllow;
 180        public bool autoqualityOn;
 181        public float scenesLoadRadius;
 182
 183        public bool Equals(GeneralSettings settings)
 184        {
 0185            return sfxVolume == settings.sfxVolume
 186                   && mouseSensitivity == settings.mouseSensitivity
 187                   && scenesLoadRadius == settings.scenesLoadRadius
 188                   && voiceChatVolume == settings.voiceChatVolume
 189                   && voiceChatAllow == settings.voiceChatAllow
 190                   && autoqualityOn == settings.autoqualityOn;
 191        }
 192    }
 193}