< 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:45
Uncovered lines:2
Coverable lines:47
Total lines:98
Line coverage:95.7% (45 of 47)
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%11089.47%

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
 23        private readonly IPlayerPrefsSettingsByKey settingsByKey;
 24        private readonly GeneralSettings defaultSettings;
 25        private GeneralSettings currentSettings;
 26
 27        public event Action<GeneralSettings> OnChanged;
 28
 45029        public PlayerPrefsGeneralSettingsRepository(IPlayerPrefsSettingsByKey settingsByKey, GeneralSettings defaultSett
 30        {
 45031            this.settingsByKey = settingsByKey;
 45032            this.defaultSettings = defaultSettings;
 45033            currentSettings = Load();
 45034        }
 35
 22436        public GeneralSettings Data => currentSettings;
 37
 38        public void Apply(GeneralSettings settings)
 39        {
 3540            if (currentSettings.Equals(settings))
 2741                return;
 842            currentSettings = settings;
 843            OnChanged?.Invoke(currentSettings);
 844        }
 45
 4846        public void Reset() { Apply(defaultSettings); }
 47
 48        public void Save()
 49        {
 150            settingsByKey.SetBool(PROFANITY_CHAT_FILTERING, currentSettings.profanityChatFiltering);
 151            settingsByKey.SetFloat(MOUSE_SENSITIVITY, currentSettings.mouseSensitivity);
 152            settingsByKey.SetFloat(NAMES_OPACITY, currentSettings.namesOpacity);
 153            settingsByKey.SetFloat(SCENES_LOAD_RADIUS, currentSettings.scenesLoadRadius);
 154            settingsByKey.SetFloat(VOICE_CHAT_VOLUME, currentSettings.voiceChatVolume);
 155            settingsByKey.SetFloat(AVATARS_LOD_DISTANCE, currentSettings.avatarsLODDistance);
 156            settingsByKey.SetFloat(MAX_NON_LOAD_AVATARS, currentSettings.maxNonLODAvatars);
 157            settingsByKey.SetEnum(VOICE_CHAT_ALLOW, currentSettings.voiceChatAllow);
 158            settingsByKey.SetBool(PROCEDURAL_SKYBOX_MODE, currentSettings.dynamicProceduralSkybox);
 159            settingsByKey.SetBool(INVERT_Y_AXIS, currentSettings.invertYAxis);
 160            settingsByKey.SetFloat(SKYBOX_TIME, currentSettings.skyboxTime);
 161            settingsByKey.SetFloat(FIRST_PERSON_CAMERA_FOV, currentSettings.firstPersonCameraFOV);
 162            settingsByKey.SetBool(SHOW_AVATAR_NAMES, currentSettings.showAvatarNames);
 163            settingsByKey.SetBool(CAMERA_MOVEMENT_MODE, currentSettings.leftMouseButtonCursorLock);
 164        }
 65
 11266        public bool HasAnyData() => !Data.Equals(defaultSettings);
 67
 68        private GeneralSettings Load()
 69        {
 45070            var settings = defaultSettings;
 71
 72            try
 73            {
 45074                settings.profanityChatFiltering = settingsByKey.GetBool(PROFANITY_CHAT_FILTERING,
 75                    defaultSettings.profanityChatFiltering);
 45076                settings.mouseSensitivity = settingsByKey.GetFloat(MOUSE_SENSITIVITY, defaultSettings.mouseSensitivity);
 45077                settings.namesOpacity = settingsByKey.GetFloat(NAMES_OPACITY, defaultSettings.namesOpacity);
 45078                settings.scenesLoadRadius = settingsByKey.GetFloat(SCENES_LOAD_RADIUS, defaultSettings.scenesLoadRadius)
 45079                settings.voiceChatVolume = settingsByKey.GetFloat(VOICE_CHAT_VOLUME, defaultSettings.voiceChatVolume);
 45080                settings.avatarsLODDistance = settingsByKey.GetFloat(AVATARS_LOD_DISTANCE, defaultSettings.avatarsLODDis
 45081                settings.maxNonLODAvatars = settingsByKey.GetFloat(MAX_NON_LOAD_AVATARS, defaultSettings.maxNonLODAvatar
 45082                settings.voiceChatAllow = settingsByKey.GetEnum(VOICE_CHAT_ALLOW, defaultSettings.voiceChatAllow);
 45083                settings.dynamicProceduralSkybox = settingsByKey.GetBool(PROCEDURAL_SKYBOX_MODE, defaultSettings.dynamic
 45084                settings.invertYAxis = settingsByKey.GetBool(INVERT_Y_AXIS, defaultSettings.invertYAxis);
 45085                settings.skyboxTime = settingsByKey.GetFloat(SKYBOX_TIME, defaultSettings.skyboxTime);
 45086                settings.firstPersonCameraFOV = settingsByKey.GetFloat(FIRST_PERSON_CAMERA_FOV, defaultSettings.firstPer
 45087                settings.showAvatarNames = settingsByKey.GetBool(SHOW_AVATAR_NAMES, defaultSettings.showAvatarNames);
 45088                settings.leftMouseButtonCursorLock = settingsByKey.GetBool(CAMERA_MOVEMENT_MODE, defaultSettings.leftMou
 45089            }
 90            catch (Exception e)
 91            {
 092                Debug.LogException(e);
 093            }
 94
 45095            return settings;
 96        }
 97    }
 98}