< Summary

Class:MainScripts.DCL.Controllers.SettingsDesktop.PlayerPrefsDesktopDisplaySettingsRepository
Assembly:SettingsDesktop
File(s):/tmp/workspace/explorer-desktop/unity-renderer-desktop/Assets/Scripts/MainScripts/DCL/Controllers/SettingsDesktop/PlayerPrefsDesktopDisplaySettingsRepository.cs
Covered lines:0
Uncovered lines:25
Coverable lines:25
Total lines:70
Line coverage:0% (0 of 25)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
PlayerPrefsDesktopDisplaySettingsRepository(...)0%2100%
Apply(...)0%12300%
Reset()0%2100%
Save()0%2100%
HasAnyData()0%2100%
Load()0%2100%

File(s)

/tmp/workspace/explorer-desktop/unity-renderer-desktop/Assets/Scripts/MainScripts/DCL/Controllers/SettingsDesktop/PlayerPrefsDesktopDisplaySettingsRepository.cs

#LineLine coverage
 1using System;
 2using DCL.SettingsCommon;
 3using UnityEngine;
 4
 5namespace MainScripts.DCL.Controllers.SettingsDesktop
 6{
 7    public class PlayerPrefsDesktopDisplaySettingsRepository : ISettingsRepository<DisplaySettings>
 8    {
 9        public const string VSYNC = "vSync";
 10        public const string RESOLUTION_SIZE_INDEX = "resolutionSizeIndex";
 11        public const string WINDOW_MODE = "windowMode";
 12
 13        private readonly IPlayerPrefsSettingsByKey settingsByKey;
 14        private readonly DisplaySettings defaultSettings;
 15        private DisplaySettings currentSettings;
 16
 17        public event Action<DisplaySettings> OnChanged;
 18
 019        public PlayerPrefsDesktopDisplaySettingsRepository(
 20            IPlayerPrefsSettingsByKey settingsByKey,
 21            DisplaySettings defaultSettings)
 22        {
 023            this.settingsByKey = settingsByKey;
 024            this.defaultSettings = defaultSettings;
 025            currentSettings = Load();
 026        }
 27
 028        public DisplaySettings Data => currentSettings;
 29
 30        public void Apply(DisplaySettings settings)
 31        {
 032            if (currentSettings.Equals(settings)) return;
 033            currentSettings = settings;
 034            OnChanged?.Invoke(currentSettings);
 035        }
 36
 37        public void Reset()
 38        {
 039            Apply(defaultSettings);
 040        }
 41
 42        public void Save()
 43        {
 044            settingsByKey.SetBool(VSYNC, currentSettings.vSync);
 045            settingsByKey.SetInt(RESOLUTION_SIZE_INDEX, currentSettings.resolutionSizeIndex);
 046            settingsByKey.SetEnum(WINDOW_MODE, currentSettings.windowMode);
 047        }
 48
 049        public bool HasAnyData() => !Data.Equals(defaultSettings);
 50
 51        private DisplaySettings Load()
 52        {
 053            var settings = defaultSettings;
 54
 55            try
 56            {
 057                settings.vSync = settingsByKey.GetBool(VSYNC, defaultSettings.vSync);
 058                settings.resolutionSizeIndex =
 59                    settingsByKey.GetInt(RESOLUTION_SIZE_INDEX, defaultSettings.resolutionSizeIndex);
 060                settings.windowMode = settingsByKey.GetEnum(WINDOW_MODE, defaultSettings.windowMode);
 061            }
 62            catch (Exception e)
 63            {
 064                Debug.LogException(e);
 065            }
 66
 067            return settings;
 68        }
 69    }
 70}