< Summary

Class:DCL.SettingsCommon.PlayerPrefsGeneralSettingsRepository
Assembly:Settings
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/PlayerPrefsGeneralSettingsRepository.cs
Covered lines:37
Uncovered lines:2
Coverable lines:39
Total lines:88
Line coverage:94.8% (37 of 39)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
PlayerPrefsGeneralSettingsRepository(...)0%110100%
Apply(...)0%330100%
Reset()0%110100%
Save()0%110100%
HasAnyData()0%110100%
Load()0%11086.67%

File(s)

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

#LineLine coverage
 1using System;
 2using UnityEngine;
 3
 4namespace DCL.SettingsCommon
 5{
 6    public class PlayerPrefsGeneralSettingsRepository : ISettingsRepository<GeneralSettings>
 7    {
 8        public const string PROFANITY_CHAT_FILTERING = "profanityChatFiltering";
 9        public const string MOUSE_SENSITIVITY = "mouseSensitivity";
 10        public const string NAMES_OPACITY = "namesOpacity";
 11        public const string SCENES_LOAD_RADIUS = "scenesLoadRadius";
 12        public const string VOICE_CHAT_VOLUME = "voiceChatVolume";
 13        public const string AVATARS_LOD_DISTANCE = "avatarsLODDistance";
 14        public const string MAX_NON_LOAD_AVATARS = "maxNonLODAvatars";
 15        public const string VOICE_CHAT_ALLOW = "voiceChatAllow";
 16        public const string PROCEDURAL_SKYBOX_MODE = "ProceduralSkyboxMode";
 17        public const string SKYBOX_TIME = "skyboxTime";
 18
 19        private readonly IPlayerPrefsSettingsByKey settingsByKey;
 20        private readonly GeneralSettings defaultSettings;
 21        private GeneralSettings currentSettings;
 22
 23        public event Action<GeneralSettings> OnChanged;
 24
 64225        public PlayerPrefsGeneralSettingsRepository(
 26            IPlayerPrefsSettingsByKey settingsByKey,
 27            GeneralSettings defaultSettings)
 28        {
 64229            this.settingsByKey = settingsByKey;
 64230            this.defaultSettings = defaultSettings;
 64231            currentSettings = Load();
 64232        }
 33
 6534        public GeneralSettings Data => currentSettings;
 35
 36        public void Apply(GeneralSettings settings)
 37        {
 8138            if (currentSettings.Equals(settings))
 7539                return;
 640            currentSettings = settings;
 641            OnChanged?.Invoke(currentSettings);
 642        }
 43
 5044        public void Reset() { Apply(defaultSettings); }
 45
 46        public void Save()
 47        {
 148            settingsByKey.SetBool(PROFANITY_CHAT_FILTERING, currentSettings.profanityChatFiltering);
 149            settingsByKey.SetFloat(MOUSE_SENSITIVITY, currentSettings.mouseSensitivity);
 150            settingsByKey.SetFloat(NAMES_OPACITY, currentSettings.namesOpacity);
 151            settingsByKey.SetFloat(SCENES_LOAD_RADIUS, currentSettings.scenesLoadRadius);
 152            settingsByKey.SetFloat(VOICE_CHAT_VOLUME, currentSettings.voiceChatVolume);
 153            settingsByKey.SetFloat(AVATARS_LOD_DISTANCE, currentSettings.avatarsLODDistance);
 154            settingsByKey.SetFloat(MAX_NON_LOAD_AVATARS, currentSettings.maxNonLODAvatars);
 155            settingsByKey.SetEnum(VOICE_CHAT_ALLOW, currentSettings.voiceChatAllow);
 156            settingsByKey.SetBool(PROCEDURAL_SKYBOX_MODE, currentSettings.dynamicProceduralSkybox);
 157            settingsByKey.SetFloat(SKYBOX_TIME, currentSettings.skyboxTime);
 158        }
 59
 6560        public bool HasAnyData() => !Data.Equals(defaultSettings);
 61
 62        private GeneralSettings Load()
 63        {
 64264            var settings = defaultSettings;
 65
 66            try
 67            {
 64268                settings.profanityChatFiltering = settingsByKey.GetBool(PROFANITY_CHAT_FILTERING,
 69                    defaultSettings.profanityChatFiltering);
 64270                settings.mouseSensitivity = settingsByKey.GetFloat(MOUSE_SENSITIVITY, defaultSettings.mouseSensitivity);
 64271                settings.namesOpacity = settingsByKey.GetFloat(NAMES_OPACITY, defaultSettings.namesOpacity);
 64272                settings.scenesLoadRadius = settingsByKey.GetFloat(SCENES_LOAD_RADIUS, defaultSettings.scenesLoadRadius)
 64273                settings.voiceChatVolume = settingsByKey.GetFloat(VOICE_CHAT_VOLUME, defaultSettings.voiceChatVolume);
 64274                settings.avatarsLODDistance = settingsByKey.GetFloat(AVATARS_LOD_DISTANCE, defaultSettings.avatarsLODDis
 64275                settings.maxNonLODAvatars = settingsByKey.GetFloat(MAX_NON_LOAD_AVATARS, defaultSettings.maxNonLODAvatar
 64276                settings.voiceChatAllow = settingsByKey.GetEnum(VOICE_CHAT_ALLOW, defaultSettings.voiceChatAllow);
 64277                settings.dynamicProceduralSkybox = settingsByKey.GetBool(PROCEDURAL_SKYBOX_MODE, defaultSettings.dynamic
 64278                settings.skyboxTime = settingsByKey.GetFloat(SKYBOX_TIME, defaultSettings.skyboxTime);
 64279            }
 80            catch (Exception e)
 81            {
 082                Debug.LogException(e);
 083            }
 84
 64285            return settings;
 86        }
 87    }
 88}