< Summary

Class:DCL.SettingsCommon.PlayerPrefsQualitySettingsRepository
Assembly:Settings
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/PlayerPrefsQualitySettingsRepository.cs
Covered lines:32
Uncovered lines:19
Coverable lines:51
Total lines:107
Line coverage:62.7% (32 of 51)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
PlayerPrefsQualitySettingsRepository(...)0%110100%
Apply(...)0%330100%
Reset()0%110100%
Save()0%2100%
HasAnyData()0%110100%
Load()0%11090.48%

File(s)

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

#LineLine coverage
 1using System;
 2using UnityEngine;
 3
 4namespace DCL.SettingsCommon
 5{
 6    public class PlayerPrefsQualitySettingsRepository : ISettingsRepository<QualitySettings>
 7    {
 8        private const string DISPLAY_NAME = "displayName";
 9        private const string BLOOM = "bloom";
 10        private const string COLOR_GRADING = "colorGrading";
 11        private const string FPS_CAP = "fpsCap";
 12        private const string SOFT_SHADOWS = "softShadows";
 13        private const string ENABLE_DETAIL_OBJECT_CULLING = "enableDetailObjectCulling";
 14        private const string SHADOWS = "shadows";
 15        private const string RENDER_SCALE = "renderScale";
 16        private const string SHADOW_DISTANCE = "shadowDistance";
 17        private const string CAMERA_DRAW_DISTANCE = "cameraDrawDistance";
 18        private const string DETAIL_OBJECT_CULLING_LIMIT = "detailObjectCullingLimit";
 19        private const string ANTI_ALIASING = "antiAliasing";
 20        private const string BASE_RESOLUTION = "baseResolution";
 21        private const string SHADOW_RESOLUTION = "shadowResolution";
 22        private const string SSAO_QUALITY = "ssaoQuality";
 23        private const string MAX_HQ_AVATARS = "maxHQAvatars";
 24
 25        private readonly IPlayerPrefsSettingsByKey settingsByKey;
 26        private readonly QualitySettings defaultSettings;
 27        private QualitySettings currentSettings;
 28
 29        public event Action<QualitySettings> OnChanged;
 30
 131        public PlayerPrefsQualitySettingsRepository(
 32            IPlayerPrefsSettingsByKey settingsByKey,
 33            QualitySettings defaultSettings)
 34        {
 135            this.settingsByKey = settingsByKey;
 136            this.defaultSettings = defaultSettings;
 137            currentSettings = Load();
 138        }
 39
 38340        public QualitySettings Data => currentSettings;
 41
 42        public void Apply(QualitySettings settings)
 43        {
 4444            if (currentSettings.Equals(settings)) return;
 245            currentSettings = settings;
 246            OnChanged?.Invoke(currentSettings);
 247        }
 48
 49        public void Reset()
 50        {
 2251            Apply(defaultSettings);
 2252        }
 53
 54        public void Save()
 55        {
 056            settingsByKey.SetString(DISPLAY_NAME, currentSettings.displayName);
 057            settingsByKey.SetBool(BLOOM, currentSettings.bloom);
 058            settingsByKey.SetBool(COLOR_GRADING, currentSettings.colorGrading);
 059            settingsByKey.SetBool(FPS_CAP, currentSettings.fpsCap);
 060            settingsByKey.SetBool(SOFT_SHADOWS, currentSettings.softShadows);
 061            settingsByKey.SetBool(ENABLE_DETAIL_OBJECT_CULLING, currentSettings.enableDetailObjectCulling);
 062            settingsByKey.SetBool(SHADOWS, currentSettings.shadows);
 063            settingsByKey.SetFloat(RENDER_SCALE, currentSettings.renderScale);
 064            settingsByKey.SetFloat(SHADOW_DISTANCE, currentSettings.shadowDistance);
 065            settingsByKey.SetFloat(CAMERA_DRAW_DISTANCE, currentSettings.cameraDrawDistance);
 066            settingsByKey.SetFloat(DETAIL_OBJECT_CULLING_LIMIT, currentSettings.detailObjectCullingLimit);
 067            settingsByKey.SetEnum(ANTI_ALIASING, currentSettings.antiAliasing);
 068            settingsByKey.SetEnum(BASE_RESOLUTION, currentSettings.baseResolution);
 069            settingsByKey.SetEnum(SHADOW_RESOLUTION, currentSettings.shadowResolution);
 070            settingsByKey.SetEnum(SSAO_QUALITY, currentSettings.ssaoQuality);
 071            settingsByKey.SetInt(MAX_HQ_AVATARS, currentSettings.maxHQAvatars);
 072        }
 73
 38374        public bool HasAnyData() => !Data.Equals(defaultSettings);
 75
 76        private QualitySettings Load()
 77        {
 178            var settings = defaultSettings;
 79
 80            try
 81            {
 182                settings.displayName = settingsByKey.GetString(DISPLAY_NAME, defaultSettings.displayName);
 183                settings.bloom = settingsByKey.GetBool(BLOOM, defaultSettings.bloom);
 184                settings.colorGrading = settingsByKey.GetBool(COLOR_GRADING, defaultSettings.colorGrading);
 185                settings.fpsCap = settingsByKey.GetBool(FPS_CAP, defaultSettings.fpsCap);
 186                settings.softShadows = settingsByKey.GetBool(SOFT_SHADOWS, defaultSettings.softShadows);
 187                settings.enableDetailObjectCulling = settingsByKey.GetBool(ENABLE_DETAIL_OBJECT_CULLING, defaultSettings
 188                settings.shadows = settingsByKey.GetBool(SHADOWS, defaultSettings.shadows);
 189                settings.renderScale = settingsByKey.GetFloat(RENDER_SCALE, defaultSettings.renderScale);
 190                settings.shadowDistance = settingsByKey.GetFloat(SHADOW_DISTANCE, defaultSettings.shadowDistance);
 191                settings.cameraDrawDistance = settingsByKey.GetFloat(CAMERA_DRAW_DISTANCE, defaultSettings.cameraDrawDis
 192                settings.detailObjectCullingLimit = settingsByKey.GetFloat(DETAIL_OBJECT_CULLING_LIMIT, defaultSettings.
 193                settings.antiAliasing = settingsByKey.GetEnum(ANTI_ALIASING, defaultSettings.antiAliasing);
 194                settings.baseResolution = settingsByKey.GetEnum(BASE_RESOLUTION, defaultSettings.baseResolution);
 195                settings.shadowResolution = settingsByKey.GetEnum(SHADOW_RESOLUTION, defaultSettings.shadowResolution);
 196                settings.ssaoQuality = settingsByKey.GetEnum(SSAO_QUALITY, defaultSettings.ssaoQuality);
 197                settings.maxHQAvatars = settingsByKey.GetInt(MAX_HQ_AVATARS, defaultSettings.maxHQAvatars);
 198            }
 99            catch (Exception e)
 100            {
 0101                Debug.LogException(e);
 0102            }
 103
 1104            return settings;
 105        }
 106    }
 107}