< 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:48
Uncovered lines:5
Coverable lines:53
Total lines:108
Line coverage:90.5% (48 of 53)
Covered branches:0
Total branches:0
Covered methods:7
Total methods:7
Method coverage:100% (7 of 7)

Metrics

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

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 FPS_CAP = "fpsCap";
 11        private const string SOFT_SHADOWS = "softShadows";
 12        private const string ENABLE_DETAIL_OBJECT_CULLING = "enableDetailObjectCulling";
 13        private const string SHADOWS = "shadows";
 14        private const string RENDER_SCALE = "renderScale";
 15        private const string SHADOW_DISTANCE = "shadowDistance";
 16        private const string CAMERA_DRAW_DISTANCE = "cameraDrawDistance";
 17        private const string DETAIL_OBJECT_CULLING_LIMIT = "detailObjectCullingLimit";
 18        private const string ANTI_ALIASING = "antiAliasing";
 19        private const string BASE_RESOLUTION = "baseResolution";
 20        private const string SHADOW_RESOLUTION = "shadowResolution";
 21        private const string SSAO_QUALITY = "ssaoQuality";
 22        private const string MAX_HQ_AVATARS = "maxHQAvatars";
 23        private const string REFLECTION_RESOLUTION = "reflectionResolution";
 24        private const string SHADER_QUALITY = "shaderQuality";
 25
 26        private readonly IPlayerPrefsSettingsByKey settingsByKey;
 27        private readonly QualitySettings defaultSettings;
 28        private QualitySettings currentSettings;
 29
 30        public event Action<QualitySettings> OnChanged;
 31
 36432        public PlayerPrefsQualitySettingsRepository(
 33            IPlayerPrefsSettingsByKey settingsByKey,
 34            QualitySettings defaultSettings)
 35        {
 36436            this.settingsByKey = settingsByKey;
 36437            this.defaultSettings = defaultSettings;
 36438            currentSettings = Load();
 36439        }
 40
 27241        public QualitySettings Data => currentSettings;
 42
 43        public void Apply(QualitySettings settings)
 44        {
 3145            if (currentSettings.Equals(settings))
 3146                return;
 047            currentSettings = settings;
 048            OnChanged?.Invoke(currentSettings);
 049        }
 50
 4651        public void Reset() { Apply(defaultSettings); }
 52
 53        public void Save()
 54        {
 355            settingsByKey.SetString(DISPLAY_NAME, currentSettings.displayName);
 356            settingsByKey.SetBool(BLOOM, currentSettings.bloom);
 357            settingsByKey.SetBool(FPS_CAP, currentSettings.fpsCap);
 358            settingsByKey.SetBool(SOFT_SHADOWS, currentSettings.softShadows);
 359            settingsByKey.SetBool(ENABLE_DETAIL_OBJECT_CULLING, currentSettings.enableDetailObjectCulling);
 360            settingsByKey.SetBool(SHADOWS, currentSettings.shadows);
 361            settingsByKey.SetFloat(RENDER_SCALE, currentSettings.renderScale);
 362            settingsByKey.SetFloat(SHADOW_DISTANCE, currentSettings.shadowDistance);
 363            settingsByKey.SetFloat(CAMERA_DRAW_DISTANCE, currentSettings.cameraDrawDistance);
 364            settingsByKey.SetFloat(DETAIL_OBJECT_CULLING_LIMIT, currentSettings.detailObjectCullingLimit);
 365            settingsByKey.SetEnum(ANTI_ALIASING, currentSettings.antiAliasing);
 366            settingsByKey.SetEnum(BASE_RESOLUTION, currentSettings.baseResolution);
 367            settingsByKey.SetEnum(SHADOW_RESOLUTION, currentSettings.shadowResolution);
 368            settingsByKey.SetEnum(SSAO_QUALITY, currentSettings.ssaoQuality);
 369            settingsByKey.SetInt(MAX_HQ_AVATARS, currentSettings.maxHQAvatars);
 370            settingsByKey.SetEnum(REFLECTION_RESOLUTION, currentSettings.reflectionResolution);
 371            settingsByKey.SetEnum(SHADER_QUALITY, currentSettings.shaderQuality);
 372        }
 73
 13674        public bool HasAnyData() => !Data.Equals(defaultSettings);
 75
 76        private QualitySettings Load()
 77        {
 36478            var settings = defaultSettings;
 79
 80            try
 81            {
 36482                settings.displayName = settingsByKey.GetString(DISPLAY_NAME, defaultSettings.displayName);
 36483                settings.bloom = settingsByKey.GetBool(BLOOM, defaultSettings.bloom);
 36484                settings.fpsCap = settingsByKey.GetBool(FPS_CAP, defaultSettings.fpsCap);
 36485                settings.softShadows = settingsByKey.GetBool(SOFT_SHADOWS, defaultSettings.softShadows);
 36486                settings.enableDetailObjectCulling = settingsByKey.GetBool(ENABLE_DETAIL_OBJECT_CULLING, defaultSettings
 36487                settings.shadows = settingsByKey.GetBool(SHADOWS, defaultSettings.shadows);
 36488                settings.renderScale = settingsByKey.GetFloat(RENDER_SCALE, defaultSettings.renderScale);
 36489                settings.shadowDistance = settingsByKey.GetFloat(SHADOW_DISTANCE, defaultSettings.shadowDistance);
 36490                settings.cameraDrawDistance = settingsByKey.GetFloat(CAMERA_DRAW_DISTANCE, defaultSettings.cameraDrawDis
 36491                settings.detailObjectCullingLimit = settingsByKey.GetFloat(DETAIL_OBJECT_CULLING_LIMIT, defaultSettings.
 36492                settings.antiAliasing = settingsByKey.GetEnum(ANTI_ALIASING, defaultSettings.antiAliasing);
 36493                settings.baseResolution = settingsByKey.GetEnum(BASE_RESOLUTION, defaultSettings.baseResolution);
 36494                settings.shadowResolution = settingsByKey.GetEnum(SHADOW_RESOLUTION, defaultSettings.shadowResolution);
 36495                settings.ssaoQuality = settingsByKey.GetEnum(SSAO_QUALITY, defaultSettings.ssaoQuality);
 36496                settings.maxHQAvatars = settingsByKey.GetInt(MAX_HQ_AVATARS, defaultSettings.maxHQAvatars);
 36497                settings.reflectionResolution = settingsByKey.GetEnum(REFLECTION_RESOLUTION, defaultSettings.reflectionR
 36498                settings.shaderQuality = settingsByKey.GetEnum(SHADER_QUALITY, defaultSettings.shaderQuality);
 36499            }
 100            catch (Exception e)
 101            {
 0102                Debug.LogException(e);
 0103            }
 104
 364105            return settings;
 106        }
 107    }
 108}