< 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:100
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
 64212        private string graphicsQualitySettingsPresetPath = "ScriptableObjects/QualitySettingsData";
 64213        private string audioMixerPath = "AudioMixer";
 14
 64215        private GeneralSettings defaultGeneralSettings = new GeneralSettings
 16        {
 17            mouseSensitivity = 0.6f,
 18            scenesLoadRadius = 4,
 19            avatarsLODDistance = 16,
 20            maxNonLODAvatars = DataStore_AvatarsLOD.DEFAULT_MAX_AVATAR,
 21            voiceChatVolume = 1,
 22            voiceChatAllow = GeneralSettings.VoiceChatAllow.ALL_USERS,
 23            namesOpacity = 0.5f,
 24            profanityChatFiltering = true,
 25            nightMode = false,
 26            hideUI = false,
 27            showAvatarNames = true,
 28            dynamicProceduralSkybox = true,
 29            skyboxTime = 0.0f
 30        };
 31
 64232        private AudioSettings defaultAudioSettings = new AudioSettings
 33        {
 34            masterVolume = 1f,
 35            voiceChatVolume = 1f,
 36            avatarSFXVolume = 1f,
 37            uiSFXVolume = 1f,
 38            sceneSFXVolume = 1f,
 39            musicVolume = 1f,
 40            chatSFXEnabled = true
 41        };
 42
 43        public DefaultSettingsFactory WithDefaultGeneralSettings(GeneralSettings settings)
 44        {
 045            defaultGeneralSettings = settings;
 046            return this;
 47        }
 48
 49        public DefaultSettingsFactory WithGraphicsQualitySettingsPresetPath(string path)
 50        {
 051            graphicsQualitySettingsPresetPath = path;
 052            return this;
 53        }
 54
 55        public Settings Build()
 56        {
 64257            var graphicsQualitySettingsPreset = Resources.Load<QualitySettingsData>(graphicsQualitySettingsPresetPath);
 64258            var audioMixer = Resources.Load<AudioMixer>(audioMixerPath);
 59
 64260            return new Settings(graphicsQualitySettingsPreset,
 61                audioMixer,
 62                CreateGraphicsQualityRepository(graphicsQualitySettingsPreset),
 63                CreateGeneralSettingsRepository(),
 64                CreateAudioSettingsRepository());
 65        }
 66
 67        private ProxySettingsRepository<AudioSettings> CreateAudioSettingsRepository()
 68        {
 64269            return new ProxySettingsRepository<AudioSettings>(
 70                new PlayerPrefsAudioSettingsRepository(
 71                    new PlayerPrefsSettingsByKey(AUDIO_SETTINGS_KEY),
 72                    defaultAudioSettings),
 73                new SettingsModule<AudioSettings>(
 74                    AUDIO_SETTINGS_KEY,
 75                    defaultAudioSettings));
 76        }
 77
 78        private ProxySettingsRepository<GeneralSettings> CreateGeneralSettingsRepository()
 79        {
 64280            return new ProxySettingsRepository<GeneralSettings>(
 81                new PlayerPrefsGeneralSettingsRepository(
 82                    new PlayerPrefsSettingsByKey(GENERAL_SETTINGS_KEY),
 83                    defaultGeneralSettings),
 84                new SettingsModule<GeneralSettings>(
 85                    GENERAL_SETTINGS_KEY,
 86                    defaultGeneralSettings));
 87        }
 88
 89        private ProxySettingsRepository<QualitySettings> CreateGraphicsQualityRepository(QualitySettingsData qualitySett
 90        {
 64291            return new ProxySettingsRepository<QualitySettings>(
 92                new PlayerPrefsQualitySettingsRepository(
 93                    new PlayerPrefsSettingsByKey(QUALITY_SETTINGS_KEY),
 94                    qualitySettingsPreset.defaultPreset),
 95                new SettingsModule<QualitySettings>(
 96                    QUALITY_SETTINGS_KEY,
 97                    qualitySettingsPreset.defaultPreset));
 98        }
 99    }
 100}