< 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:22
Uncovered lines:15
Coverable lines:37
Total lines:87
Line coverage:59.4% (22 of 37)
Covered branches:0
Total branches:0

Metrics

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

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 AUTO_QUALITY_ON = "autoqualityOn";
 9        public const string PROFANITY_CHAT_FILTERING = "profanityChatFiltering";
 10        public const string MOUSE_SENSITIVITY = "mouseSensitivity";
 11        public const string NAMES_OPACITY = "namesOpacity";
 12        public const string SCENES_LOAD_RADIUS = "scenesLoadRadius";
 13        public const string VOICE_CHAT_VOLUME = "voiceChatVolume";
 14        public const string AVATARS_LOD_DISTANCE = "avatarsLODDistance";
 15        public const string MAX_NON_LOAD_AVATARS = "maxNonLODAvatars";
 16        public const string VOICE_CHAT_ALLOW = "voiceChatAllow";
 17
 18        private readonly IPlayerPrefsSettingsByKey settingsByKey;
 19        private readonly GeneralSettings defaultSettings;
 20        private GeneralSettings currentSettings;
 21
 22        public event Action<GeneralSettings> OnChanged;
 23
 124        public PlayerPrefsGeneralSettingsRepository(
 25            IPlayerPrefsSettingsByKey settingsByKey,
 26            GeneralSettings defaultSettings)
 27        {
 128            this.settingsByKey = settingsByKey;
 129            this.defaultSettings = defaultSettings;
 130            currentSettings = Load();
 131        }
 32
 5733        public GeneralSettings Data => currentSettings;
 34
 35        public void Apply(GeneralSettings settings)
 36        {
 4437            if (currentSettings.Equals(settings)) return;
 038            currentSettings = settings;
 039            OnChanged?.Invoke(currentSettings);
 040        }
 41
 42        public void Reset()
 43        {
 2244            Apply(defaultSettings);
 2245        }
 46
 47        public void Save()
 48        {
 049            settingsByKey.SetBool(AUTO_QUALITY_ON, currentSettings.autoqualityOn);
 050            settingsByKey.SetBool(PROFANITY_CHAT_FILTERING, currentSettings.profanityChatFiltering);
 051            settingsByKey.SetFloat(MOUSE_SENSITIVITY, currentSettings.mouseSensitivity);
 052            settingsByKey.SetFloat(NAMES_OPACITY, currentSettings.namesOpacity);
 053            settingsByKey.SetFloat(SCENES_LOAD_RADIUS, currentSettings.scenesLoadRadius);
 054            settingsByKey.SetFloat(VOICE_CHAT_VOLUME, currentSettings.voiceChatVolume);
 055            settingsByKey.SetFloat(AVATARS_LOD_DISTANCE, currentSettings.avatarsLODDistance);
 056            settingsByKey.SetFloat(MAX_NON_LOAD_AVATARS, currentSettings.maxNonLODAvatars);
 057            settingsByKey.SetEnum(VOICE_CHAT_ALLOW, currentSettings.voiceChatAllow);
 058        }
 59
 5760        public bool HasAnyData() => !Data.Equals(defaultSettings);
 61
 62        private GeneralSettings Load()
 63        {
 164            var settings = defaultSettings;
 65
 66            try
 67            {
 168                settings.autoqualityOn = settingsByKey.GetBool(AUTO_QUALITY_ON, defaultSettings.autoqualityOn);
 169                settings.profanityChatFiltering = settingsByKey.GetBool(PROFANITY_CHAT_FILTERING,
 70                    defaultSettings.profanityChatFiltering);
 171                settings.mouseSensitivity = settingsByKey.GetFloat(MOUSE_SENSITIVITY, defaultSettings.mouseSensitivity);
 172                settings.namesOpacity = settingsByKey.GetFloat(NAMES_OPACITY, defaultSettings.namesOpacity);
 173                settings.scenesLoadRadius = settingsByKey.GetFloat(SCENES_LOAD_RADIUS, defaultSettings.scenesLoadRadius)
 174                settings.voiceChatVolume = settingsByKey.GetFloat(VOICE_CHAT_VOLUME, defaultSettings.voiceChatVolume);
 175                settings.avatarsLODDistance = settingsByKey.GetFloat(AVATARS_LOD_DISTANCE, defaultSettings.avatarsLODDis
 176                settings.maxNonLODAvatars = settingsByKey.GetFloat(MAX_NON_LOAD_AVATARS, defaultSettings.maxNonLODAvatar
 177                settings.voiceChatAllow = settingsByKey.GetEnum(VOICE_CHAT_ALLOW, defaultSettings.voiceChatAllow);
 178            }
 79            catch (Exception e)
 80            {
 081                Debug.LogException(e);
 082            }
 83
 184            return settings;
 85        }
 86    }
 87}