< Summary

Class:DCL.SettingsCommon.PlayerPrefsAudioSettingsRepository
Assembly:Settings
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/PlayerPrefsAudioSettingsRepository.cs
Covered lines:31
Uncovered lines:2
Coverable lines:33
Total lines:80
Line coverage:93.9% (31 of 33)
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
PlayerPrefsAudioSettingsRepository(...)0%110100%
Apply(...)0%330100%
Reset()0%110100%
Save()0%110100%
HasAnyData()0%110100%
Load()0%11083.33%

File(s)

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

#LineLine coverage
 1using System;
 2using UnityEngine;
 3
 4namespace DCL.SettingsCommon
 5{
 6    public class PlayerPrefsAudioSettingsRepository : ISettingsRepository<AudioSettings>
 7    {
 8        private const string CHAT_NOTIFICATIONS_TYPE = "chatNotificationsType";
 9        private const string MASTER_VOLUME = "masterVolume";
 10        private const string MUSIC_VOLUME = "musicVolume";
 11        private const string VOICE_CHAT_VOLUME = "voiceChatVolume";
 12        private const string AVATAR_SFX_VOLUME = "avatarSFXVolume";
 13        private const string SCENE_SFX_VOLUME = "sceneSFXVolume";
 14        private const string UI_SFX_VOLUME = "uiSFXVolume";
 15
 16        private readonly IPlayerPrefsSettingsByKey settingsByKey;
 17        private readonly AudioSettings defaultSettings;
 18        private AudioSettings currentSettings;
 19
 20        public event Action<AudioSettings> OnChanged;
 21
 36422        public PlayerPrefsAudioSettingsRepository(
 23            IPlayerPrefsSettingsByKey settingsByKey,
 24            AudioSettings defaultSettings)
 25        {
 36426            this.settingsByKey = settingsByKey;
 36427            this.defaultSettings = defaultSettings;
 36428            currentSettings = Load();
 36429        }
 30
 128431        public AudioSettings Data => currentSettings;
 32
 33        public void Apply(AudioSettings settings)
 34        {
 6435            if (currentSettings.Equals(settings)) return;
 236            currentSettings = settings;
 237            OnChanged?.Invoke(currentSettings);
 238        }
 39
 40        public void Reset()
 41        {
 2342            Apply(defaultSettings);
 2343        }
 44
 45        public void Save()
 46        {
 347            settingsByKey.SetEnum(CHAT_NOTIFICATIONS_TYPE, currentSettings.chatNotificationType);
 348            settingsByKey.SetFloat(MASTER_VOLUME, currentSettings.masterVolume);
 349            settingsByKey.SetFloat(MUSIC_VOLUME, currentSettings.musicVolume);
 350            settingsByKey.SetFloat(VOICE_CHAT_VOLUME, currentSettings.voiceChatVolume);
 351            settingsByKey.SetFloat(AVATAR_SFX_VOLUME, currentSettings.avatarSFXVolume);
 352            settingsByKey.SetFloat(SCENE_SFX_VOLUME, currentSettings.sceneSFXVolume);
 353            settingsByKey.SetFloat(UI_SFX_VOLUME, currentSettings.uiSFXVolume);
 354        }
 55
 64256        public bool HasAnyData() => !Data.Equals(defaultSettings);
 57
 58        private AudioSettings Load()
 59        {
 36460            var settings = defaultSettings;
 61
 62            try
 63            {
 36464                settings.chatNotificationType = settingsByKey.GetEnum(CHAT_NOTIFICATIONS_TYPE, defaultSettings.chatNotif
 36465                settings.masterVolume = settingsByKey.GetFloat(MASTER_VOLUME, defaultSettings.masterVolume);
 36466                settings.musicVolume = settingsByKey.GetFloat(MUSIC_VOLUME, defaultSettings.musicVolume);
 36467                settings.voiceChatVolume = settingsByKey.GetFloat(VOICE_CHAT_VOLUME, defaultSettings.voiceChatVolume);
 36468                settings.avatarSFXVolume = settingsByKey.GetFloat(AVATAR_SFX_VOLUME, defaultSettings.avatarSFXVolume);
 36469                settings.sceneSFXVolume = settingsByKey.GetFloat(SCENE_SFX_VOLUME, defaultSettings.sceneSFXVolume);
 36470                settings.uiSFXVolume = settingsByKey.GetFloat(UI_SFX_VOLUME, defaultSettings.uiSFXVolume);
 36471            }
 72            catch (Exception e)
 73            {
 074                Debug.LogException(e);
 075            }
 76
 36477            return settings;
 78        }
 79    }
 80}