< Summary

Class:ControlsHUDController
Assembly:ControlsHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/ControlsHUD/ControlsHUDController.cs
Covered lines:24
Uncovered lines:19
Coverable lines:43
Total lines:92
Line coverage:55.8% (24 of 43)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ControlsHUDController()0%2.032080%
SetVisibility(...)0%12.478058.82%
Dispose()0%3.073080%
ToggleVisibility()0%2100%
IsVisible()0%2.152066.67%
Hide(...)0%6200%
OnKernelConfigChanged(...)0%12300%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/ControlsHUD/ControlsHUDController.cs

#LineLine coverage
 1using UnityEngine;
 2using DCL.Helpers;
 3
 4public class ControlsHUDController : IHUD
 5{
 6    internal ControlsHUDView view;
 7
 8    private bool prevMouseLockState = false;
 9
 10    public event System.Action OnControlsOpened;
 11    public event System.Action OnControlsClosed;
 12
 313    public ControlsHUDController()
 14    {
 315        view = UnityEngine.Object.Instantiate(Resources.Load<GameObject>("ControlsHUD")).GetComponent<ControlsHUDView>()
 316        view.name = "_ControlsHUD";
 317        view.gameObject.SetActive(false);
 18
 319        view.onToggleActionTriggered += ToggleVisibility;
 320        view.onCloseActionTriggered += Hide;
 21
 322        if (!DCL.Configuration.EnvironmentSettings.RUNNING_TESTS)
 23        {
 024            KernelConfig.i.EnsureConfigInitialized().Then(config => OnKernelConfigChanged(config, null));
 025            KernelConfig.i.OnChange += OnKernelConfigChanged;
 26        }
 327    }
 28
 29    public void SetVisibility(bool visible)
 30    {
 231        if (!view)
 032            return;
 33
 234        if (IsVisible() && !visible)
 35        {
 036            if (prevMouseLockState)
 37            {
 038                Utils.LockCursor();
 39            }
 40
 041            view.showHideAnimator.Hide();
 042            OnControlsClosed?.Invoke();
 43
 044            AudioScriptableObjects.fadeOut.Play(true);
 045        }
 246        else if (!IsVisible() && visible)
 47        {
 248            prevMouseLockState = Utils.isCursorLocked;
 249            Utils.UnlockCursor();
 250            view.gameObject.SetActive(true);
 251            view.showHideAnimator.Show();
 252            OnControlsOpened?.Invoke();
 253            AudioScriptableObjects.fadeIn.Play(true);
 54        }
 255    }
 56
 57    public void Dispose()
 58    {
 359        if (view)
 60        {
 361            Object.Destroy(view.gameObject);
 62        }
 63
 364        if (!DCL.Configuration.EnvironmentSettings.RUNNING_TESTS)
 65        {
 066            KernelConfig.i.OnChange -= OnKernelConfigChanged;
 67        }
 368    }
 69
 070    public void ToggleVisibility() { SetVisibility(!IsVisible()); }
 71
 72    public bool IsVisible()
 73    {
 474        if (!view)
 075            return false;
 76
 477        return view.showHideAnimator.isVisible;
 78    }
 79
 80    public void Hide(bool restorePointerLockStatus)
 81    {
 082        if (!restorePointerLockStatus)
 083            prevMouseLockState = false;
 084        SetVisibility(false);
 085    }
 86
 87    private void OnKernelConfigChanged(KernelConfigModel current, KernelConfigModel previous)
 88    {
 089        view?.voiceChatButton.SetActive(current.comms.voiceChatEnabled);
 090        view?.builderInWorldButton.SetActive(current.features.enableBuilderInWorld);
 091    }
 92}