< 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:47
Uncovered lines:2
Coverable lines:49
Total lines:100
Line coverage:95.9% (47 of 49)
Covered branches:0
Total branches:0
Covered methods:7
Total methods:7
Method coverage:100% (7 of 7)

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%11090%

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 INVERT_Y_AXIS = "InvertYAxis";
 18        public const string SKYBOX_TIME = "skyboxTime";
 19        public const string FIRST_PERSON_CAMERA_FOV = "firstPersonCameraFOV";
 20        public const string SHOW_AVATAR_NAMES = "showAvatarNames";
 21        public const string CAMERA_MOVEMENT_MODE = "cameraMovementMode";
 22        public const string ADULT_CONTENT = "adultContent";
 23
 24        private readonly IPlayerPrefsSettingsByKey settingsByKey;
 25        private readonly GeneralSettings defaultSettings;
 26        private GeneralSettings currentSettings;
 27
 28        public event Action<GeneralSettings> OnChanged;
 29
 36430        public PlayerPrefsGeneralSettingsRepository(IPlayerPrefsSettingsByKey settingsByKey, GeneralSettings defaultSett
 31        {
 36432            this.settingsByKey = settingsByKey;
 36433            this.defaultSettings = defaultSettings;
 36434            currentSettings = Load();
 36435        }
 36
 22637        public GeneralSettings Data => currentSettings;
 38
 39        public void Apply(GeneralSettings settings)
 40        {
 3441            if (currentSettings.Equals(settings))
 2642                return;
 843            currentSettings = settings;
 844            OnChanged?.Invoke(currentSettings);
 845        }
 46
 4647        public void Reset() { Apply(defaultSettings); }
 48
 49        public void Save()
 50        {
 351            settingsByKey.SetBool(PROFANITY_CHAT_FILTERING, currentSettings.profanityChatFiltering);
 352            settingsByKey.SetFloat(MOUSE_SENSITIVITY, currentSettings.mouseSensitivity);
 353            settingsByKey.SetFloat(NAMES_OPACITY, currentSettings.namesOpacity);
 354            settingsByKey.SetFloat(SCENES_LOAD_RADIUS, currentSettings.scenesLoadRadius);
 355            settingsByKey.SetFloat(VOICE_CHAT_VOLUME, currentSettings.voiceChatVolume);
 356            settingsByKey.SetFloat(AVATARS_LOD_DISTANCE, currentSettings.avatarsLODDistance);
 357            settingsByKey.SetFloat(MAX_NON_LOAD_AVATARS, currentSettings.maxNonLODAvatars);
 358            settingsByKey.SetEnum(VOICE_CHAT_ALLOW, currentSettings.voiceChatAllow);
 359            settingsByKey.SetBool(PROCEDURAL_SKYBOX_MODE, currentSettings.dynamicProceduralSkybox);
 360            settingsByKey.SetBool(INVERT_Y_AXIS, currentSettings.invertYAxis);
 361            settingsByKey.SetFloat(SKYBOX_TIME, currentSettings.skyboxTime);
 362            settingsByKey.SetFloat(FIRST_PERSON_CAMERA_FOV, currentSettings.firstPersonCameraFOV);
 363            settingsByKey.SetBool(SHOW_AVATAR_NAMES, currentSettings.showAvatarNames);
 364            settingsByKey.SetBool(CAMERA_MOVEMENT_MODE, currentSettings.leftMouseButtonCursorLock);
 365            settingsByKey.SetBool(ADULT_CONTENT, currentSettings.adultContent);
 366        }
 67
 11368        public bool HasAnyData() => !Data.Equals(defaultSettings);
 69
 70        private GeneralSettings Load()
 71        {
 36472            var settings = defaultSettings;
 73
 74            try
 75            {
 36476                settings.profanityChatFiltering = settingsByKey.GetBool(PROFANITY_CHAT_FILTERING, defaultSettings.profan
 36477                settings.mouseSensitivity = settingsByKey.GetFloat(MOUSE_SENSITIVITY, defaultSettings.mouseSensitivity);
 36478                settings.namesOpacity = settingsByKey.GetFloat(NAMES_OPACITY, defaultSettings.namesOpacity);
 36479                settings.scenesLoadRadius = settingsByKey.GetFloat(SCENES_LOAD_RADIUS, defaultSettings.scenesLoadRadius)
 36480                settings.voiceChatVolume = settingsByKey.GetFloat(VOICE_CHAT_VOLUME, defaultSettings.voiceChatVolume);
 36481                settings.avatarsLODDistance = settingsByKey.GetFloat(AVATARS_LOD_DISTANCE, defaultSettings.avatarsLODDis
 36482                settings.maxNonLODAvatars = settingsByKey.GetFloat(MAX_NON_LOAD_AVATARS, defaultSettings.maxNonLODAvatar
 36483                settings.voiceChatAllow = settingsByKey.GetEnum(VOICE_CHAT_ALLOW, defaultSettings.voiceChatAllow);
 36484                settings.dynamicProceduralSkybox = settingsByKey.GetBool(PROCEDURAL_SKYBOX_MODE, defaultSettings.dynamic
 36485                settings.invertYAxis = settingsByKey.GetBool(INVERT_Y_AXIS, defaultSettings.invertYAxis);
 36486                settings.skyboxTime = settingsByKey.GetFloat(SKYBOX_TIME, defaultSettings.skyboxTime);
 36487                settings.firstPersonCameraFOV = settingsByKey.GetFloat(FIRST_PERSON_CAMERA_FOV, defaultSettings.firstPer
 36488                settings.showAvatarNames = settingsByKey.GetBool(SHOW_AVATAR_NAMES, defaultSettings.showAvatarNames);
 36489                settings.leftMouseButtonCursorLock = settingsByKey.GetBool(CAMERA_MOVEMENT_MODE, defaultSettings.leftMou
 36490                settings.adultContent = settingsByKey.GetBool(ADULT_CONTENT, defaultSettings.adultContent);
 36491            }
 92            catch (Exception e)
 93            {
 094                Debug.LogException(e);
 095            }
 96
 36497            return settings;
 98        }
 99    }
 100}