< 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:104
Line coverage:71.4% (10 of 14)
Covered branches:0
Total branches:0

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        const string QUALITY_SETTINGS_KEY = "Settings.Quality";
 9        const string GENERAL_SETTINGS_KEY = "Settings.General";
 10        const string AUDIO_SETTINGS_KEY = "Settings.Audio";
 11
 49912        private string graphicsQualitySettingsPresetPath = "ScriptableObjects/QualitySettingsData";
 49913        private string audioMixerPath = "AudioMixer";
 14
 49915        private GeneralSettings defaultGeneralSettings = new GeneralSettings
 16        {
 17            leftMouseButtonCursorLock = true,
 18            mouseSensitivity = 0.6f,
 19            invertYAxis = false,
 20
 21            scenesLoadRadius = 4,
 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        };
 35
 49936        private AudioSettings defaultAudioSettings = new AudioSettings
 37        {
 38            masterVolume = 1f,
 39            voiceChatVolume = 1f,
 40            avatarSFXVolume = 1f,
 41            uiSFXVolume = 1f,
 42            sceneSFXVolume = 1f,
 43            musicVolume = 1f,
 44            chatSFXEnabled = true
 45        };
 46
 47        public DefaultSettingsFactory WithDefaultGeneralSettings(GeneralSettings settings)
 48        {
 049            defaultGeneralSettings = settings;
 050            return this;
 51        }
 52
 53        public DefaultSettingsFactory WithGraphicsQualitySettingsPresetPath(string path)
 54        {
 055            graphicsQualitySettingsPresetPath = path;
 056            return this;
 57        }
 58
 59        public Settings Build()
 60        {
 45061            var graphicsQualitySettingsPreset = Resources.Load<QualitySettingsData>(graphicsQualitySettingsPresetPath);
 45062            var audioMixer = Resources.Load<AudioMixer>(audioMixerPath);
 63
 45064            return new Settings(graphicsQualitySettingsPreset,
 65                audioMixer,
 66                CreateGraphicsQualityRepository(graphicsQualitySettingsPreset),
 67                CreateGeneralSettingsRepository(),
 68                CreateAudioSettingsRepository());
 69        }
 70
 71        private ProxySettingsRepository<AudioSettings> CreateAudioSettingsRepository()
 72        {
 45073            return new ProxySettingsRepository<AudioSettings>(
 74                new PlayerPrefsAudioSettingsRepository(
 75                    new PlayerPrefsSettingsByKey(AUDIO_SETTINGS_KEY),
 76                    defaultAudioSettings),
 77                new SettingsModule<AudioSettings>(
 78                    AUDIO_SETTINGS_KEY,
 79                    defaultAudioSettings));
 80        }
 81
 82        private ProxySettingsRepository<GeneralSettings> CreateGeneralSettingsRepository()
 83        {
 45084            return new ProxySettingsRepository<GeneralSettings>(
 85                new PlayerPrefsGeneralSettingsRepository(
 86                    new PlayerPrefsSettingsByKey(GENERAL_SETTINGS_KEY),
 87                    defaultGeneralSettings),
 88                new SettingsModule<GeneralSettings>(
 89                    GENERAL_SETTINGS_KEY,
 90                    defaultGeneralSettings));
 91        }
 92
 93        private ProxySettingsRepository<QualitySettings> CreateGraphicsQualityRepository(QualitySettingsData qualitySett
 94        {
 45095            return new ProxySettingsRepository<QualitySettings>(
 96                new PlayerPrefsQualitySettingsRepository(
 97                    new PlayerPrefsSettingsByKey(QUALITY_SETTINGS_KEY),
 98                    qualitySettingsPreset.defaultPreset),
 99                new SettingsModule<QualitySettings>(
 100                    QUALITY_SETTINGS_KEY,
 101                    qualitySettingsPreset.defaultPreset));
 102        }
 103    }
 104}