< 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:48
Uncovered lines:17
Coverable lines:65
Total lines:155
Line coverage:73.8% (48 of 65)
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 InputAction_Trigger closeAction;
 31        [SerializeField] private InputAction_Trigger openAction;
 32
 33        [Header("Animations")]
 34        [SerializeField] private ShowHideAnimator settingsAnimator;
 35
 036        public bool isOpen { get; private set; }
 37
 38        private const string PATH = "SettingsPanelHUD";
 39
 40        private IHUD hudController;
 41        private ISettingsPanelHUDController settingsPanelController;
 42
 43        public static SettingsPanelHUDView Create()
 44        {
 345            SettingsPanelHUDView view = Instantiate(Resources.Load<GameObject>(PATH)).GetComponent<SettingsPanelHUDView>
 346            view.name = "_SettingsPanelHUD";
 347            return view;
 48        }
 49
 50        public void Initialize(IHUD hudController, ISettingsPanelHUDController settingsPanelController)
 51        {
 352            this.hudController = hudController;
 353            this.settingsPanelController = settingsPanelController;
 54
 355            openAction.OnTriggered += OpenAction_OnTriggered;
 56
 357            resetAllButton.onClick.AddListener(ShowResetAllConfirmation);
 358            resetAllCancelButton.onClick.AddListener(HideResetAllConfirmation);
 359            resetAllOkButton.onClick.AddListener(ResetAllSettings);
 60
 361            closeButton.onClick.AddListener(CloseSettingsPanel);
 362            settingsAnimator.OnWillFinishHide += OnFinishHide;
 63
 364            CreateSections();
 365            isOpen = !settingsAnimator.hideOnEnable;
 366            settingsAnimator.Hide(true);
 367        }
 68
 69        public void Initialize(IHUD hudController, ISettingsPanelHUDController settingsPanelController, SettingsSectionL
 70        {
 171            settingsPanelConfig.sections = sections;
 172            Initialize(hudController, settingsPanelController);
 173        }
 74
 75        private void OnDestroy()
 76        {
 377            openAction.OnTriggered -= OpenAction_OnTriggered;
 78
 379            if (settingsAnimator)
 380                settingsAnimator.OnWillFinishHide -= OnFinishHide;
 381        }
 82
 83        private void CreateSections()
 84        {
 1485            foreach (SettingsSectionModel sectionConfig in settingsPanelConfig.sections)
 86            {
 487                var newMenuButton = Instantiate(sectionConfig.menuButtonPrefab, menuButtonsContainer);
 488                var newSection = Instantiate(sectionConfig.sectionPrefab, sectionsContainer);
 489                newSection.gameObject.name = $"Section_{sectionConfig.text}";
 490                var newSectionController = Instantiate(sectionConfig.sectionController);
 491                settingsPanelController.AddSection(newMenuButton, newSection, newSectionController, sectionConfig);
 92            }
 93
 394            settingsPanelController.OpenSection(0);
 395            settingsPanelController.MarkMenuButtonAsSelected(0);
 396        }
 97
 98        private void ShowResetAllConfirmation()
 99        {
 0100            resetAllConfirmation.Show();
 0101            resetAllBlackOverlay.SetActive(true);
 0102        }
 103
 104        private void HideResetAllConfirmation()
 105        {
 1106            resetAllConfirmation.Hide();
 1107            resetAllBlackOverlay.SetActive(false);
 1108        }
 109
 110        private void ResetAllSettings()
 111        {
 0112            settingsPanelController.ResetAllSettings();
 0113            resetAllConfirmation.Hide();
 0114            resetAllBlackOverlay.SetActive(false);
 0115        }
 116
 0117        private void CloseSettingsPanel() { hudController.SetVisibility(false); }
 118
 119        public void SetVisibility(bool visible)
 120        {
 1121            if (visible && !isOpen)
 1122                AudioScriptableObjects.dialogOpen.Play(true);
 0123            else if (isOpen)
 0124                AudioScriptableObjects.dialogClose.Play(true);
 125
 1126            closeAction.OnTriggered -= CloseAction_OnTriggered;
 1127            if (visible)
 128            {
 1129                closeAction.OnTriggered += CloseAction_OnTriggered;
 1130                settingsAnimator.Show();
 1131                mainWindow.SetActive(true);
 1132                HideResetAllConfirmation();
 1133                settingsPanelController.OpenSection(0);
 1134                settingsPanelController.MarkMenuButtonAsSelected(0);
 1135            }
 136            else
 137            {
 0138                settingsAnimator.Hide();
 0139                settingsPanelController.SaveSettings();
 140            }
 141
 1142            isOpen = visible;
 1143        }
 144
 145        private void OpenAction_OnTriggered(DCLAction_Trigger action)
 146        {
 0147            Utils.UnlockCursor();
 0148            hudController.SetVisibility(!isOpen);
 0149        }
 150
 0151        private void CloseAction_OnTriggered(DCLAction_Trigger action) { CloseSettingsPanel(); }
 152
 6153        private void OnFinishHide(ShowHideAnimator animator) { mainWindow.SetActive(false); }
 154    }
 155}