< Summary

Class:TaskbarHUDView
Assembly:TaskbarHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/TaskbarHUD/TaskbarHUDView.cs
Covered lines:93
Uncovered lines:18
Coverable lines:111
Total lines:236
Line coverage:83.7% (93 of 111)
Covered branches:0
Total branches:0

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 UnityEngine;
 4using UnityEngine.UI;
 5
 6public class TaskbarHUDView : MonoBehaviour
 7{
 8    private const string VIEW_PATH = "Taskbar";
 9
 10    [SerializeField] internal RectTransform fullScreenWindowContainer;
 11
 12    [Header("Taskbar Animation")] [SerializeField]
 13    internal ShowHideAnimator taskbarAnimator;
 14
 15    [Header("Left Side Config")]
 16    [SerializeField] internal RectTransform leftWindowContainer;
 17    [SerializeField] internal RectTransform altSectionContainer;
 18    [SerializeField] internal ShowHideAnimator leftWindowContainerAnimator;
 19    [SerializeField] internal LayoutGroup leftWindowContainerLayout;
 20    [SerializeField] internal TaskbarButton chatButton;
 21    [SerializeField] internal TaskbarButton friendsButton;
 22    [SerializeField] internal TaskbarButton emotesButton;
 23    [SerializeField] internal TaskbarButton voiceChatButton;
 24    [SerializeField] internal GameObject experiencesContainer;
 25    [SerializeField] internal TaskbarButton experiencesButton;
 26    [SerializeField] internal RectTransform socialTooltipReference;
 27
 728    private readonly Dictionary<TaskbarButtonType, TaskbarButton> buttonsByType =
 29        new Dictionary<TaskbarButtonType, TaskbarButton>();
 30
 31    private TaskbarButton lastToggledOnButton;
 32
 33    public event System.Action<bool> OnChatToggle;
 34    public event System.Action<bool> OnFriendsToggle;
 35    public event System.Action<bool> OnEmotesToggle;
 36    public event System.Action<bool> OnVoiceChatToggle;
 37    public event System.Action<bool> OnExperiencesToggle;
 38
 39    private HUDCanvasCameraModeController hudCanvasCameraModeController;
 40
 41    internal static TaskbarHUDView Create()
 42    {
 443        var view = Instantiate(Resources.Load<GameObject>(VIEW_PATH)).GetComponent<TaskbarHUDView>();
 444        view.Initialize();
 445        return view;
 46    }
 47
 848    private void Awake() { hudCanvasCameraModeController = new HUDCanvasCameraModeController(GetComponent<Canvas>(), Dat
 49
 50    private void Initialize()
 51    {
 452        ShowBar(true, true);
 53
 454        buttonsByType[TaskbarButtonType.Chat] = chatButton;
 455        buttonsByType[TaskbarButtonType.Emotes] = emotesButton;
 456        buttonsByType[TaskbarButtonType.Experiences] = experiencesButton;
 457        buttonsByType[TaskbarButtonType.Friends] = friendsButton;
 458        buttonsByType[TaskbarButtonType.VoiceChat] = voiceChatButton;
 59
 460        chatButton.transform.parent.gameObject.SetActive(false);
 461        friendsButton.transform.parent.gameObject.SetActive(false);
 462        emotesButton.transform.parent.gameObject.SetActive(false);
 463        experiencesButton.transform.parent.gameObject.SetActive(false);
 464        voiceChatButton.transform.parent.gameObject.SetActive(false);
 65
 466        chatButton.Initialize();
 467        friendsButton.Initialize();
 468        emotesButton.Initialize();
 469        experiencesButton.Initialize();
 470        voiceChatButton.Initialize();
 71
 472        chatButton.OnToggleOn += ToggleOn;
 473        friendsButton.OnToggleOn += ToggleOn;
 474        emotesButton.OnToggleOn += ToggleOn;
 475        experiencesButton.OnToggleOn += ToggleOn;
 476        voiceChatButton.OnToggleOn += ToggleOn;
 477        chatButton.OnToggleOff += ToggleOff;
 478        friendsButton.OnToggleOff += ToggleOff;
 479        emotesButton.OnToggleOff += ToggleOff;
 480        experiencesButton.OnToggleOff += ToggleOff;
 481        voiceChatButton.OnToggleOff += ToggleOff;
 482    }
 83
 84    private void OnDestroy()
 85    {
 486        hudCanvasCameraModeController?.Dispose();
 87
 488        if (chatButton != null)
 89        {
 490            chatButton.OnToggleOn -= ToggleOn;
 491            chatButton.OnToggleOff -= ToggleOff;
 92        }
 93
 494        if (friendsButton != null)
 95        {
 496            friendsButton.OnToggleOn -= ToggleOn;
 497            friendsButton.OnToggleOff -= ToggleOff;
 98        }
 99
 4100        if (emotesButton != null)
 101        {
 4102            emotesButton.OnToggleOn -= ToggleOn;
 4103            emotesButton.OnToggleOff -= ToggleOff;
 104        }
 105
 4106        if(voiceChatButton != null)
 107        {
 4108            voiceChatButton.OnToggleOn -= ToggleOn;
 4109            voiceChatButton.OnToggleOff -= ToggleOff;
 110        }
 111
 4112        if (experiencesButton != null)
 113        {
 4114            experiencesButton.OnToggleOn -= ToggleOn;
 4115            experiencesButton.OnToggleOff -= ToggleOff;
 116        }
 4117    }
 118
 4119    public void Destroy() => Destroy(gameObject);
 120
 121    public void SetVisibility(bool visible)
 122    {
 1123        gameObject.SetActive(visible);
 1124    }
 125
 126    public void SetExperiencesVisibility(bool visible)
 127    {
 4128        experiencesContainer.SetActive(visible);
 4129        experiencesContainer.transform.SetAsLastSibling();
 4130    }
 131
 3132    public void ToggleOn(TaskbarButtonType buttonType) => ToggleOn(buttonsByType[buttonType], false);
 133
 1134    public void ToggleOff(TaskbarButtonType buttonType) => ToggleOff(buttonsByType[buttonType], false);
 135
 3136    private void ToggleOn(TaskbarButton obj) => ToggleOn(obj, true);
 137
 138    private void ToggleOn(TaskbarButton obj, bool useCallback)
 139    {
 6140        var wasToggled = lastToggledOnButton == obj;
 6141        lastToggledOnButton = obj;
 142
 72143        foreach (var btn in buttonsByType.Values)
 30144            btn.SetToggleState(btn == obj, useCallback);
 145
 9146        if (!useCallback) return;
 3147        if (wasToggled) return;
 148
 3149        if (obj == friendsButton)
 2150            OnFriendsToggle?.Invoke(true);
 3151        if (obj == emotesButton)
 0152            OnEmotesToggle?.Invoke(true);
 3153        else if (obj == chatButton)
 1154            OnChatToggle?.Invoke(true);
 2155        else if (obj == experiencesButton)
 0156            OnExperiencesToggle?.Invoke(true);
 2157        else if (obj == voiceChatButton)
 0158            OnVoiceChatToggle?.Invoke(true);
 2159    }
 160
 2161    private void ToggleOff(TaskbarButton obj) => ToggleOff(obj, true);
 162
 163    private void ToggleOff(TaskbarButton obj, bool useCallback)
 164    {
 3165        var wasToggled = lastToggledOnButton == obj;
 166
 3167        if (wasToggled)
 1168            lastToggledOnButton = null;
 169
 3170        obj.SetToggleState(false, useCallback);
 171
 4172        if (!useCallback) return;
 3173        if (!wasToggled) return;
 174
 1175        if (obj == friendsButton)
 1176            OnFriendsToggle?.Invoke(false);
 1177        if (obj == emotesButton)
 0178            OnEmotesToggle?.Invoke(false);
 1179        else if (obj == chatButton)
 0180            OnChatToggle?.Invoke(false);
 1181        else if (obj == experiencesButton)
 0182            OnExperiencesToggle?.Invoke(false);
 1183        else if (obj == experiencesButton)
 0184            OnExperiencesToggle?.Invoke(false);
 1185        else if (obj == voiceChatButton)
 0186            OnVoiceChatToggle?.Invoke(false);
 1187    }
 188
 189    internal void ShowChatButton()
 190    {
 2191        chatButton.transform.parent.gameObject.SetActive(true);
 2192    }
 193
 194    internal void ShowFriendsButton()
 195    {
 0196        friendsButton.transform.parent.gameObject.SetActive(true);
 0197    }
 198
 199    internal void HideFriendsButton()
 200    {
 3201        friendsButton.transform.parent.gameObject.SetActive(false);
 3202    }
 203
 204    internal void ShowEmotesButton()
 205    {
 0206        emotesButton.transform.parent.gameObject.SetActive(true);
 0207    }
 208
 209    internal void ShowExperiencesButton()
 210    {
 0211        experiencesButton.transform.parent.gameObject.SetActive(true);
 0212    }
 213
 214    internal void ShowVoiceChatButton()
 215    {
 0216        voiceChatButton.transform.parent.gameObject.SetActive(true);
 0217    }
 218
 219    private void ShowBar(bool visible, bool instant = false)
 220    {
 4221        if (visible)
 4222            taskbarAnimator.Show(instant);
 223        else
 0224            taskbarAnimator.Hide(instant);
 0225    }
 226
 227    public enum TaskbarButtonType
 228    {
 229        None,
 230        Friends,
 231        Emotes,
 232        Chat,
 233        Experiences,
 234        VoiceChat
 235    }
 236}