< Summary

Class:DCL.SettingsPanelHUD.SettingsPanelHUDView
Assembly:SettingsPanelHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/SettingsPanelHUD/Scripts/SettingsPanelHUDView.cs
Covered lines:49
Uncovered lines:17
Coverable lines:66
Total lines:157
Line coverage:74.2% (49 of 66)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Create()0%110100%
Initialize(...)0%110100%
Initialize(...)0%110100%
OnDestroy()0%220100%
CreateSections()0%330100%
ShowResetAllConfirmation()0%2100%
HideResetAllConfirmation()0%110100%
ResetAllSettings()0%2100%
CloseSettingsPanel()0%2100%
SetVisibility(...)0%5.335076.47%
OpenAction_OnTriggered(...)0%2100%
CloseAction_OnTriggered(...)0%2100%
OnFinishHide(...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/SettingsPanelHUD/Scripts/SettingsPanelHUDView.cs

#LineLine coverage
 1using DCL.Helpers;
 2using DCL.SettingsPanelHUD.Sections;
 3using UnityEngine;
 4using UnityEngine.UI;
 5
 6namespace DCL.SettingsPanelHUD
 7{
 8    /// <summary>
 9    /// MonoBehaviour that represents the main settings panel view and will act as a factory of SECTIONS.
 10    /// </summary>
 11    public class SettingsPanelHUDView : MonoBehaviour
 12    {
 13        [Header("General configuration")]
 14        [SerializeField] private GameObject mainWindow;
 15
 16        [Header("Sections configuration")]
 17        [SerializeField] private SettingsPanelModel settingsPanelConfig;
 18        [SerializeField] private Transform menuButtonsContainer;
 19        [SerializeField] private Transform sectionsContainer;
 20
 21        [Header("Reset All configuration")]
 22        [SerializeField] private Button resetAllButton;
 23        [SerializeField] private ShowHideAnimator resetAllConfirmation;
 24        [SerializeField] private Button resetAllOkButton;
 25        [SerializeField] private Button resetAllCancelButton;
 26        [SerializeField] private GameObject resetAllBlackOverlay;
 27
 28        [Header("Open/Close Settings")]
 29        [SerializeField] private Button closeButton;
 30        [SerializeField] private Button backgroundButton;
 31        [SerializeField] private InputAction_Trigger closeAction;
 32        [SerializeField] private InputAction_Trigger openAction;
 33
 34        [Header("Animations")]
 35        [SerializeField] private ShowHideAnimator settingsAnimator;
 36
 037        public bool isOpen { get; private set; }
 38
 39        private const string PATH = "SettingsPanelHUD";
 40
 41        private IHUD hudController;
 42        private ISettingsPanelHUDController settingsPanelController;
 43
 44        public static SettingsPanelHUDView Create()
 45        {
 346            SettingsPanelHUDView view = Instantiate(Resources.Load<GameObject>(PATH)).GetComponent<SettingsPanelHUDView>
 347            view.name = "_SettingsPanelHUD";
 348            return view;
 49        }
 50
 51        public void Initialize(IHUD hudController, ISettingsPanelHUDController settingsPanelController)
 52        {
 353            this.hudController = hudController;
 354            this.settingsPanelController = settingsPanelController;
 55
 356            openAction.OnTriggered += OpenAction_OnTriggered;
 57
 358            resetAllButton.onClick.AddListener(ShowResetAllConfirmation);
 359            resetAllCancelButton.onClick.AddListener(HideResetAllConfirmation);
 360            resetAllOkButton.onClick.AddListener(ResetAllSettings);
 61
 362            closeButton.onClick.AddListener(CloseSettingsPanel);
 363            backgroundButton.onClick.AddListener(CloseSettingsPanel);
 364            settingsAnimator.OnWillFinishHide += OnFinishHide;
 65
 366            CreateSections();
 367            isOpen = !settingsAnimator.hideOnEnable;
 368            settingsAnimator.Hide(true);
 369        }
 70
 71        public void Initialize(IHUD hudController, ISettingsPanelHUDController settingsPanelController, SettingsSectionL
 72        {
 173            settingsPanelConfig.sections = sections;
 174            Initialize(hudController, settingsPanelController);
 175        }
 76
 77        private void OnDestroy()
 78        {
 379            openAction.OnTriggered -= OpenAction_OnTriggered;
 80
 381            if (settingsAnimator)
 382                settingsAnimator.OnWillFinishHide -= OnFinishHide;
 383        }
 84
 85        private void CreateSections()
 86        {
 1487            foreach (SettingsSectionModel sectionConfig in settingsPanelConfig.sections)
 88            {
 489                var newMenuButton = Instantiate(sectionConfig.menuButtonPrefab, menuButtonsContainer);
 490                var newSection = Instantiate(sectionConfig.sectionPrefab, sectionsContainer);
 491                newSection.gameObject.name = $"Section_{sectionConfig.text}";
 492                var newSectionController = Instantiate(sectionConfig.sectionController);
 493                settingsPanelController.AddSection(newMenuButton, newSection, newSectionController, sectionConfig);
 94            }
 95
 396            settingsPanelController.OpenSection(0);
 397            settingsPanelController.MarkMenuButtonAsSelected(0);
 398        }
 99
 100        private void ShowResetAllConfirmation()
 101        {
 0102            resetAllConfirmation.Show();
 0103            resetAllBlackOverlay.SetActive(true);
 0104        }
 105
 106        private void HideResetAllConfirmation()
 107        {
 1108            resetAllConfirmation.Hide();
 1109            resetAllBlackOverlay.SetActive(false);
 1110        }
 111
 112        private void ResetAllSettings()
 113        {
 0114            settingsPanelController.ResetAllSettings();
 0115            resetAllConfirmation.Hide();
 0116            resetAllBlackOverlay.SetActive(false);
 0117        }
 118
 0119        private void CloseSettingsPanel() { hudController.SetVisibility(false); }
 120
 121        public void SetVisibility(bool visible)
 122        {
 1123            if (visible && !isOpen)
 1124                AudioScriptableObjects.dialogOpen.Play(true);
 0125            else if (isOpen)
 0126                AudioScriptableObjects.dialogClose.Play(true);
 127
 1128            closeAction.OnTriggered -= CloseAction_OnTriggered;
 1129            if (visible)
 130            {
 1131                closeAction.OnTriggered += CloseAction_OnTriggered;
 1132                settingsAnimator.Show();
 1133                mainWindow.SetActive(true);
 1134                HideResetAllConfirmation();
 1135                settingsPanelController.OpenSection(0);
 1136                settingsPanelController.MarkMenuButtonAsSelected(0);
 1137            }
 138            else
 139            {
 0140                settingsAnimator.Hide();
 0141                settingsPanelController.SaveSettings();
 142            }
 143
 1144            isOpen = visible;
 1145        }
 146
 147        private void OpenAction_OnTriggered(DCLAction_Trigger action)
 148        {
 0149            Utils.UnlockCursor();
 0150            hudController.SetVisibility(!isOpen);
 0151        }
 152
 0153        private void CloseAction_OnTriggered(DCLAction_Trigger action) { CloseSettingsPanel(); }
 154
 6155        private void OnFinishHide(ShowHideAnimator animator) { mainWindow.SetActive(false); }
 156    }
 157}