< Summary

Class:DCL.SettingsCommon.DefaultSettingsFactory
Assembly:Settings
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/DefaultSettingsFactory.cs
Covered lines:10
Uncovered lines:4
Coverable lines:14
Total lines:105
Line coverage:71.4% (10 of 14)
Covered branches:0
Total branches:0
Covered methods:5
Total methods:7
Method coverage:71.4% (5 of 7)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
DefaultSettingsFactory()0%110100%
WithDefaultGeneralSettings(...)0%2100%
WithGraphicsQualitySettingsPresetPath(...)0%2100%
Build()0%110100%
CreateAudioSettingsRepository()0%110100%
CreateGeneralSettingsRepository()0%110100%
CreateGraphicsQualityRepository(...)0%110100%

File(s)

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

#LineLine coverage
 1using UnityEngine;
 2using UnityEngine.Audio;
 3
 4namespace DCL.SettingsCommon
 5{
 6    public class DefaultSettingsFactory : ISettingsFactory
 7    {
 8        private const string QUALITY_SETTINGS_KEY = "Settings.Quality";
 9        private const string GENERAL_SETTINGS_KEY = "Settings.General";
 10        private const string AUDIO_SETTINGS_KEY = "Settings.Audio";
 11
 42012        private string graphicsQualitySettingsPresetPath = "ScriptableObjects/QualitySettingsData";
 42013        private string audioMixerPath = "AudioMixer";
 14
 42015        private GeneralSettings defaultGeneralSettings = new GeneralSettings
 16        {
 17            leftMouseButtonCursorLock = true,
 18            mouseSensitivity = 0.6f,
 19            invertYAxis = false,
 20
 21            scenesLoadRadius = 3,
 22            avatarsLODDistance = 16,
 23            maxNonLODAvatars = DataStore_AvatarsLOD.DEFAULT_MAX_AVATAR,
 24            voiceChatVolume = 1,
 25            voiceChatAllow = GeneralSettings.VoiceChatAllow.ALL_USERS,
 26            namesOpacity = 1f,
 27            profanityChatFiltering = true,
 28            nightMode = false,
 29            hideUI = false,
 30            showAvatarNames = true,
 31            dynamicProceduralSkybox = true,
 32            skyboxTime = 0.0f,
 33            firstPersonCameraFOV = 60,
 34            adultContent = false,
 35        };
 36
 42037        private readonly AudioSettings defaultAudioSettings = new ()
 38        {
 39            masterVolume = 1f,
 40            voiceChatVolume = 1f,
 41            avatarSFXVolume = 1f,
 42            uiSFXVolume = 1f,
 43            sceneSFXVolume = 1f,
 44            musicVolume = 1f,
 45            chatNotificationType = AudioSettings.ChatNotificationType.All,
 46        };
 47
 48        public DefaultSettingsFactory WithDefaultGeneralSettings(GeneralSettings settings)
 49        {
 050            defaultGeneralSettings = settings;
 051            return this;
 52        }
 53
 54        public DefaultSettingsFactory WithGraphicsQualitySettingsPresetPath(string path)
 55        {
 056            graphicsQualitySettingsPresetPath = path;
 057            return this;
 58        }
 59
 60        public Settings Build()
 61        {
 36462            var graphicsQualitySettingsPreset = Resources.Load<QualitySettingsData>(graphicsQualitySettingsPresetPath);
 36463            var audioMixer = Resources.Load<AudioMixer>(audioMixerPath);
 64
 36465            return new Settings(graphicsQualitySettingsPreset,
 66                audioMixer,
 67                CreateGraphicsQualityRepository(graphicsQualitySettingsPreset),
 68                CreateGeneralSettingsRepository(),
 69                CreateAudioSettingsRepository());
 70        }
 71
 72        private ProxySettingsRepository<AudioSettings> CreateAudioSettingsRepository()
 73        {
 36474            return new ProxySettingsRepository<AudioSettings>(
 75                new PlayerPrefsAudioSettingsRepository(
 76                    new PlayerPrefsSettingsByKey(AUDIO_SETTINGS_KEY),
 77                    defaultAudioSettings),
 78                new SettingsModule<AudioSettings>(
 79                    AUDIO_SETTINGS_KEY,
 80                    defaultAudioSettings));
 81        }
 82
 83        private ProxySettingsRepository<GeneralSettings> CreateGeneralSettingsRepository()
 84        {
 36485            return new ProxySettingsRepository<GeneralSettings>(
 86                new PlayerPrefsGeneralSettingsRepository(
 87                    new PlayerPrefsSettingsByKey(GENERAL_SETTINGS_KEY),
 88                    defaultGeneralSettings),
 89                new SettingsModule<GeneralSettings>(
 90                    GENERAL_SETTINGS_KEY,
 91                    defaultGeneralSettings));
 92        }
 93
 94        private ProxySettingsRepository<QualitySettings> CreateGraphicsQualityRepository(QualitySettingsData qualitySett
 95        {
 36496            return new ProxySettingsRepository<QualitySettings>(
 97                new PlayerPrefsQualitySettingsRepository(
 98                    new PlayerPrefsSettingsByKey(QUALITY_SETTINGS_KEY),
 99                    qualitySettingsPreset.defaultPreset),
 100                new SettingsModule<QualitySettings>(
 101                    QUALITY_SETTINGS_KEY,
 102                    qualitySettingsPreset.defaultPreset));
 103        }
 104    }
 105}