< Summary

Class:TaskbarHUDView
Assembly:TaskbarHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/TaskbarHUD/TaskbarHUDView.cs
Covered lines:96
Uncovered lines:18
Coverable lines:114
Total lines:245
Line coverage:84.2% (96 of 114)
Covered branches:0
Total branches:0
Covered methods:17
Total methods:21
Method coverage:80.9% (17 of 21)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
TaskbarHUDView()0%110100%
Create()0%110100%
Awake()0%110100%
Initialize()0%110100%
OnDestroy()0%770100%
Destroy()0%110100%
SetVisibility(...)0%110100%
SetExperiencesVisibility(...)0%110100%
ToggleOn(...)0%110100%
ToggleOff(...)0%110100%
ToggleOn(...)0%110100%
ToggleOn(...)0%15.3614080.95%
ToggleOff(...)0%110100%
ToggleOff(...)0%19.4616076.19%
ShowChatButton()0%110100%
ShowFriendsButton()0%2100%
HideFriendsButton()0%110100%
ShowEmotesButton()0%2100%
ShowExperiencesButton()0%2100%
ShowVoiceChatButton()0%2100%
ShowBar(...)0%2.52050%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/TaskbarHUD/TaskbarHUDView.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using DCL;
 3using DCL.Interface;
 4using System;
 5using UnityEngine;
 6using UnityEngine.UI;
 7
 8public class TaskbarHUDView : MonoBehaviour
 9{
 10    private const string VIEW_PATH = "Taskbar";
 11
 12    [SerializeField] internal RectTransform fullScreenWindowContainer;
 13
 14    [Header("Taskbar Animation")] [SerializeField]
 15    internal ShowHideAnimator taskbarAnimator;
 16
 17    [Header("Left Side Config")]
 18    [SerializeField] internal RectTransform leftWindowContainer;
 19    [SerializeField] internal RectTransform altSectionContainer;
 20    [SerializeField] internal ShowHideAnimator leftWindowContainerAnimator;
 21    [SerializeField] internal LayoutGroup leftWindowContainerLayout;
 22    [SerializeField] internal TaskbarButton chatButton;
 23    [SerializeField] internal TaskbarButton friendsButton;
 24    [SerializeField] internal TaskbarButton emotesButton;
 25    [SerializeField] internal TaskbarButton voiceChatButton;
 26    [SerializeField] internal GameObject experiencesContainer;
 27    [SerializeField] internal TaskbarButton experiencesButton;
 28    [SerializeField] internal RectTransform socialTooltipReference;
 29    [SerializeField] internal Button intercomButton;
 30
 631    private readonly Dictionary<TaskbarButtonType, TaskbarButton> buttonsByType =
 32        new Dictionary<TaskbarButtonType, TaskbarButton>();
 33
 34    private TaskbarButton lastToggledOnButton;
 35
 36    public event System.Action<bool> OnChatToggle;
 37    public event System.Action<bool> OnFriendsToggle;
 38    public event System.Action<bool> OnEmotesToggle;
 39    public event System.Action<bool> OnVoiceChatToggle;
 40    public event System.Action<bool> OnExperiencesToggle;
 41    public event Action OnIntercomPressed;
 42
 43    private HUDCanvasCameraModeController hudCanvasCameraModeController;
 44
 45    internal static TaskbarHUDView Create()
 46    {
 447        var view = Instantiate(Resources.Load<GameObject>(VIEW_PATH)).GetComponent<TaskbarHUDView>();
 448        view.Initialize();
 449        return view;
 50    }
 51
 52    private void Awake()
 53    {
 454        hudCanvasCameraModeController = new HUDCanvasCameraModeController(GetComponent<Canvas>(), DataStore.i.camera.hud
 455        intercomButton.onClick.RemoveAllListeners();
 456        intercomButton.onClick.AddListener(()=>OnIntercomPressed?.Invoke());
 457    }
 58
 59    private void Initialize()
 60    {
 461        ShowBar(true, true);
 62
 463        buttonsByType[TaskbarButtonType.Chat] = chatButton;
 464        buttonsByType[TaskbarButtonType.Emotes] = emotesButton;
 465        buttonsByType[TaskbarButtonType.Experiences] = experiencesButton;
 466        buttonsByType[TaskbarButtonType.Friends] = friendsButton;
 467        buttonsByType[TaskbarButtonType.VoiceChat] = voiceChatButton;
 68
 469        chatButton.transform.parent.gameObject.SetActive(false);
 470        friendsButton.transform.parent.gameObject.SetActive(false);
 471        emotesButton.transform.parent.gameObject.SetActive(false);
 472        experiencesButton.transform.parent.gameObject.SetActive(false);
 473        voiceChatButton.transform.parent.gameObject.SetActive(false);
 74
 475        chatButton.Initialize();
 476        friendsButton.Initialize();
 477        emotesButton.Initialize();
 478        experiencesButton.Initialize();
 479        voiceChatButton.Initialize();
 80
 481        chatButton.OnToggleOn += ToggleOn;
 482        friendsButton.OnToggleOn += ToggleOn;
 483        emotesButton.OnToggleOn += ToggleOn;
 484        experiencesButton.OnToggleOn += ToggleOn;
 485        voiceChatButton.OnToggleOn += ToggleOn;
 486        chatButton.OnToggleOff += ToggleOff;
 487        friendsButton.OnToggleOff += ToggleOff;
 488        emotesButton.OnToggleOff += ToggleOff;
 489        experiencesButton.OnToggleOff += ToggleOff;
 490        voiceChatButton.OnToggleOff += ToggleOff;
 491    }
 92
 93    private void OnDestroy()
 94    {
 495        hudCanvasCameraModeController?.Dispose();
 96
 497        if (chatButton != null)
 98        {
 499            chatButton.OnToggleOn -= ToggleOn;
 4100            chatButton.OnToggleOff -= ToggleOff;
 101        }
 102
 4103        if (friendsButton != null)
 104        {
 4105            friendsButton.OnToggleOn -= ToggleOn;
 4106            friendsButton.OnToggleOff -= ToggleOff;
 107        }
 108
 4109        if (emotesButton != null)
 110        {
 4111            emotesButton.OnToggleOn -= ToggleOn;
 4112            emotesButton.OnToggleOff -= ToggleOff;
 113        }
 114
 4115        if(voiceChatButton != null)
 116        {
 4117            voiceChatButton.OnToggleOn -= ToggleOn;
 4118            voiceChatButton.OnToggleOff -= ToggleOff;
 119        }
 120
 4121        if (experiencesButton != null)
 122        {
 4123            experiencesButton.OnToggleOn -= ToggleOn;
 4124            experiencesButton.OnToggleOff -= ToggleOff;
 125        }
 4126    }
 127
 4128    public void Destroy() => Destroy(gameObject);
 129
 130    public void SetVisibility(bool visible)
 131    {
 1132        gameObject.SetActive(visible);
 1133    }
 134
 135    public void SetExperiencesVisibility(bool visible)
 136    {
 4137        experiencesContainer.SetActive(visible);
 4138        intercomButton.transform.SetAsLastSibling();
 4139    }
 140
 3141    public void ToggleOn(TaskbarButtonType buttonType) => ToggleOn(buttonsByType[buttonType], false);
 142
 4143    public void ToggleOff(TaskbarButtonType buttonType) => ToggleOff(buttonsByType[buttonType], false);
 144
 3145    private void ToggleOn(TaskbarButton obj) => ToggleOn(obj, true);
 146
 147    private void ToggleOn(TaskbarButton obj, bool useCallback)
 148    {
 6149        var wasToggled = lastToggledOnButton == obj;
 6150        lastToggledOnButton = obj;
 151
 72152        foreach (var btn in buttonsByType.Values)
 30153            btn.SetToggleState(btn == obj, useCallback);
 154
 9155        if (!useCallback) return;
 3156        if (wasToggled) return;
 157
 3158        if (obj == friendsButton)
 2159            OnFriendsToggle?.Invoke(true);
 3160        if (obj == emotesButton)
 0161            OnEmotesToggle?.Invoke(true);
 3162        else if (obj == chatButton)
 1163            OnChatToggle?.Invoke(true);
 2164        else if (obj == experiencesButton)
 0165            OnExperiencesToggle?.Invoke(true);
 2166        else if (obj == voiceChatButton)
 0167            OnVoiceChatToggle?.Invoke(true);
 2168    }
 169
 2170    private void ToggleOff(TaskbarButton obj) => ToggleOff(obj, true);
 171
 172    private void ToggleOff(TaskbarButton obj, bool useCallback)
 173    {
 6174        var wasToggled = lastToggledOnButton == obj;
 175
 6176        if (wasToggled)
 2177            lastToggledOnButton = null;
 178
 6179        obj.SetToggleState(false, useCallback);
 180
 10181        if (!useCallback) return;
 3182        if (!wasToggled) return;
 183
 1184        if (obj == friendsButton)
 1185            OnFriendsToggle?.Invoke(false);
 1186        if (obj == emotesButton)
 0187            OnEmotesToggle?.Invoke(false);
 1188        else if (obj == chatButton)
 0189            OnChatToggle?.Invoke(false);
 1190        else if (obj == experiencesButton)
 0191            OnExperiencesToggle?.Invoke(false);
 1192        else if (obj == experiencesButton)
 0193            OnExperiencesToggle?.Invoke(false);
 1194        else if (obj == voiceChatButton)
 0195            OnVoiceChatToggle?.Invoke(false);
 1196    }
 197
 198    internal void ShowChatButton()
 199    {
 2200        chatButton.transform.parent.gameObject.SetActive(true);
 2201    }
 202
 203    internal void ShowFriendsButton()
 204    {
 0205        friendsButton.transform.parent.gameObject.SetActive(true);
 0206    }
 207
 208    internal void HideFriendsButton()
 209    {
 3210        friendsButton.transform.parent.gameObject.SetActive(false);
 3211    }
 212
 213    internal void ShowEmotesButton()
 214    {
 0215        emotesButton.transform.parent.gameObject.SetActive(true);
 0216    }
 217
 218    internal void ShowExperiencesButton()
 219    {
 0220        experiencesButton.transform.parent.gameObject.SetActive(true);
 0221    }
 222
 223    internal void ShowVoiceChatButton()
 224    {
 0225        voiceChatButton.transform.parent.gameObject.SetActive(true);
 0226    }
 227
 228    private void ShowBar(bool visible, bool instant = false)
 229    {
 4230        if (visible)
 4231            taskbarAnimator.Show(instant);
 232        else
 0233            taskbarAnimator.Hide(instant);
 0234    }
 235
 236    public enum TaskbarButtonType
 237    {
 238        None,
 239        Friends,
 240        Emotes,
 241        Chat,
 242        Experiences,
 243        VoiceChat
 244    }
 245}