< Summary

Class:TaskbarHUDController
Assembly:TaskbarHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/TaskbarHUD/TaskbarHUDController.cs
Covered lines:150
Uncovered lines:199
Coverable lines:349
Total lines:627
Line coverage:42.9% (150 of 349)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
CreateView()0%110100%
Initialize(...)0%220100%
HandleFriendsToggle(...)0%4.074083.33%
HandleEmotesToggle(...)0%30500%
ShowEmotes()0%12300%
HandleExperiencesToggle(...)0%12300%
HandleVoiceChatToggle(...)0%20400%
ShowExperiences()0%12300%
ToggleFriendsTrigger_OnTriggered(...)0%42600%
ToggleWorldChatTrigger_OnTriggered(...)0%56700%
CloseWindowTrigger_OnTriggered(...)0%20400%
HandleChatToggle(...)0%18.967037.5%
MouseCatcher_OnMouseUnlock()0%2100%
MouseCatcher_OnMouseLock()0%12300%
AddWorldChatWindow(...)0%6.736072.73%
OpenPublicChannelOnPreviewMode()0%110100%
OpenFriendsWindow()0%330100%
CloseFriendsWindow()0%6200%
OpenPrivateChat(...)0%12300%
OpenLastActiveChatWindow(...)0%5.795068.42%
CloseAnyChatWindow()0%2100%
OpenPublicChatChannel(...)0%90900%
OpenChatList()0%12300%
CloseChatList()0%6200%
OpenVoiceChatWindow()0%12300%
CloseVoiceChatWindow()0%6200%
AddPrivateChatWindow(...)0%6.736072.73%
AddPublicChatChannel(...)0%6.736072.73%
HandlePublicChannelPreviewModeChanged(...)0%3.043083.33%
HandlePrivateChannelPreviewMode(...)0%12300%
AddFriendsWindow(...)0%6.736072.73%
AddVoiceChatWindow(...)0%37.138023.08%
InitializeEmotesSelector(...)0%2.52050%
IsEmotesVisibleChanged(...)0%2100%
InitializeExperiencesViewer(...)0%3.462028.57%
IsExperiencesViewerOpenChanged(...)0%6200%
NumOfLoadedExperiencesChanged(...)0%220100%
DisableFriendsWindow()0%2100%
Dispose()0%660100%
SetVisibility(...)0%2100%
SetVisibility(...)0%110100%
GoBackFromChat()0%6200%

File(s)

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

#LineLine coverage
 1using System;
 2using DCL;
 3using TMPro;
 4using UnityEngine;
 5using UnityEngine.EventSystems;
 6
 7public class TaskbarHUDController : IHUD
 8{
 9    [Serializable]
 10    public struct Configuration
 11    {
 12        public bool enableVoiceChat;
 13        public bool enableQuestPanel;
 14    }
 15
 16    public TaskbarHUDView view;
 17    public WorldChatWindowController worldChatWindowHud;
 18    public PrivateChatWindowController privateChatWindow;
 19    public PublicChatChannelController publicChatChannel;
 20    public FriendsHUDController friendsHud;
 21    public VoiceChatWindowController voiceChatHud;
 22
 23    private IMouseCatcher mouseCatcher;
 24    private InputAction_Trigger toggleFriendsTrigger;
 25    private InputAction_Trigger closeWindowTrigger;
 26    private InputAction_Trigger toggleWorldChatTrigger;
 27    private Transform experiencesViewerTransform;
 28    private IHUD chatToggleTargetWindow;
 29    private IHUD chatInputTargetWindow;
 30    private IHUD chatBackWindow;
 31
 32    public event Action OnAnyTaskbarButtonClicked;
 33
 034    public RectTransform socialTooltipReference => view.socialTooltipReference;
 35
 1236    internal BaseVariable<bool> isEmotesWheelInitialized => DataStore.i.emotesCustomization.isWheelInitialized;
 1137    internal BaseVariable<bool> isEmotesVisible => DataStore.i.HUDs.emotesVisible;
 038    internal BaseVariable<bool> emoteJustTriggeredFromShortcut => DataStore.i.HUDs.emoteJustTriggeredFromShortcut;
 1239    internal BaseVariable<Transform> isExperiencesViewerInitialized => DataStore.i.experiencesViewer.isInitialized;
 1540    internal BaseVariable<bool> isExperiencesViewerOpen => DataStore.i.experiencesViewer.isOpen;
 1241    internal BaseVariable<int> numOfLoadedExperiences => DataStore.i.experiencesViewer.numOfLoadedExperiences;
 42
 443    protected virtual TaskbarHUDView CreateView() { return TaskbarHUDView.Create(); }
 44
 45    public void Initialize(IMouseCatcher mouseCatcher)
 46    {
 447        this.mouseCatcher = mouseCatcher;
 48
 449        view = CreateView();
 50
 451        if (mouseCatcher != null)
 52        {
 153            mouseCatcher.OnMouseLock -= MouseCatcher_OnMouseLock;
 154            mouseCatcher.OnMouseUnlock -= MouseCatcher_OnMouseUnlock;
 155            mouseCatcher.OnMouseLock += MouseCatcher_OnMouseLock;
 156            mouseCatcher.OnMouseUnlock += MouseCatcher_OnMouseUnlock;
 57        }
 58
 459        view.leftWindowContainerLayout.enabled = false;
 60
 461        view.OnChatToggle += HandleChatToggle;
 462        view.OnFriendsToggle += HandleFriendsToggle;
 463        view.OnEmotesToggle += HandleEmotesToggle;
 464        view.OnExperiencesToggle += HandleExperiencesToggle;
 465        view.OnVoiceChatToggle += HandleVoiceChatToggle;
 66
 467        toggleFriendsTrigger = Resources.Load<InputAction_Trigger>("ToggleFriends");
 468        toggleFriendsTrigger.OnTriggered -= ToggleFriendsTrigger_OnTriggered;
 469        toggleFriendsTrigger.OnTriggered += ToggleFriendsTrigger_OnTriggered;
 70
 471        closeWindowTrigger = Resources.Load<InputAction_Trigger>("CloseWindow");
 472        closeWindowTrigger.OnTriggered -= CloseWindowTrigger_OnTriggered;
 473        closeWindowTrigger.OnTriggered += CloseWindowTrigger_OnTriggered;
 74
 475        toggleWorldChatTrigger = Resources.Load<InputAction_Trigger>("ToggleWorldChat");
 476        toggleWorldChatTrigger.OnTriggered -= ToggleWorldChatTrigger_OnTriggered;
 477        toggleWorldChatTrigger.OnTriggered += ToggleWorldChatTrigger_OnTriggered;
 78
 479        isEmotesWheelInitialized.OnChange += InitializeEmotesSelector;
 480        InitializeEmotesSelector(isEmotesWheelInitialized.Get(), false);
 481        isEmotesVisible.OnChange += IsEmotesVisibleChanged;
 82
 483        isExperiencesViewerOpen.OnChange += IsExperiencesViewerOpenChanged;
 84
 485        view.leftWindowContainerAnimator.Show();
 86
 487        CommonScriptableObjects.isTaskbarHUDInitialized.Set(true);
 488        DataStore.i.builderInWorld.showTaskBar.OnChange += SetVisibility;
 89
 490        isExperiencesViewerInitialized.OnChange += InitializeExperiencesViewer;
 491        InitializeExperiencesViewer(isExperiencesViewerInitialized.Get(), null);
 92
 493        numOfLoadedExperiences.OnChange += NumOfLoadedExperiencesChanged;
 494        NumOfLoadedExperiencesChanged(numOfLoadedExperiences.Get(), 0);
 495    }
 96
 97    private void HandleFriendsToggle(bool show)
 98    {
 399        if (show)
 2100            OpenFriendsWindow();
 101        else
 102        {
 1103            friendsHud?.SetVisibility(false);
 1104            OpenPublicChannelOnPreviewMode();
 105        }
 106
 3107        OnAnyTaskbarButtonClicked?.Invoke();
 0108    }
 109
 110    private void HandleEmotesToggle(bool show)
 111    {
 0112        if (show && emoteJustTriggeredFromShortcut.Get())
 113        {
 0114            emoteJustTriggeredFromShortcut.Set(false);
 0115            return;
 116        }
 117
 0118        if (show)
 119        {
 0120            OpenPublicChannelOnPreviewMode();
 0121            ShowEmotes();
 0122        }
 123        else
 124        {
 0125            view.ToggleOff(TaskbarHUDView.TaskbarButtonType.Emotes);
 0126            isEmotesVisible.Set(false);
 0127            OpenPublicChannelOnPreviewMode();
 128        }
 0129        OnAnyTaskbarButtonClicked?.Invoke();
 0130    }
 131
 132    private void ShowEmotes()
 133    {
 0134        worldChatWindowHud.SetVisibility(false);
 0135        privateChatWindow.SetVisibility(false);
 0136        friendsHud?.SetVisibility(false);
 0137        isExperiencesViewerOpen.Set(false);
 0138        voiceChatHud?.SetVisibility(false);
 0139        isEmotesVisible.Set(true);
 0140        view.ToggleOn(TaskbarHUDView.TaskbarButtonType.Emotes);
 0141    }
 142
 143    private void HandleExperiencesToggle(bool show)
 144    {
 0145        if (show)
 0146            ShowExperiences();
 147        else
 148        {
 0149            isExperiencesViewerOpen.Set(false);
 0150            OpenPublicChannelOnPreviewMode();
 151        }
 152
 0153        OnAnyTaskbarButtonClicked?.Invoke();
 0154    }
 155
 156    private void HandleVoiceChatToggle(bool show)
 157    {
 0158        if (show)
 0159            OpenVoiceChatWindow();
 160        else
 0161            voiceChatHud?.SetVisibility(false);
 0162        OnAnyTaskbarButtonClicked?.Invoke();
 0163    }
 164
 165    private void ShowExperiences()
 166    {
 0167        worldChatWindowHud.SetVisibility(false);
 0168        privateChatWindow.SetVisibility(false);
 0169        publicChatChannel.SetVisibility(false);
 0170        friendsHud?.SetVisibility(false);
 0171        isEmotesVisible.Set(false);
 0172        voiceChatHud?.SetVisibility(false);
 0173        isExperiencesViewerOpen.Set(true);
 0174    }
 175
 176    private void ToggleFriendsTrigger_OnTriggered(DCLAction_Trigger action)
 177    {
 0178        if (friendsHud == null) return;
 179
 0180        bool anyInputFieldIsSelected = EventSystem.current != null &&
 181                                       EventSystem.current.currentSelectedGameObject != null &&
 182                                       EventSystem.current.currentSelectedGameObject.GetComponent<TMP_InputField>() != n
 183
 0184        if (anyInputFieldIsSelected) return;
 185
 186
 0187        mouseCatcher.UnlockCursor();
 188
 0189        if (!friendsHud.View.IsActive())
 190        {
 0191            view.leftWindowContainerAnimator.Show();
 0192            OpenFriendsWindow();
 0193        }
 194        else
 195        {
 0196            CloseFriendsWindow();
 0197            OpenPublicChannelOnPreviewMode();
 198        }
 0199    }
 200
 201    private void ToggleWorldChatTrigger_OnTriggered(DCLAction_Trigger action)
 202    {
 0203        bool anyInputFieldIsSelected = EventSystem.current != null &&
 204                                       EventSystem.current.currentSelectedGameObject != null &&
 205                                       EventSystem.current.currentSelectedGameObject.GetComponent<TMP_InputField>() != n
 206
 0207        if (anyInputFieldIsSelected) return;
 208
 0209        mouseCatcher.UnlockCursor();
 0210        chatBackWindow = worldChatWindowHud;
 211
 0212        if (!worldChatWindowHud.View.IsActive
 213            && !privateChatWindow.View.IsActive
 214            && !publicChatChannel.View.IsActive)
 0215            OpenLastActiveChatWindow(chatInputTargetWindow);
 0216    }
 217
 218    private void CloseWindowTrigger_OnTriggered(DCLAction_Trigger action)
 219    {
 0220        if (mouseCatcher.isLocked) return;
 0221        worldChatWindowHud.SetVisibility(false);
 0222        privateChatWindow.SetVisibility(false);
 0223        friendsHud?.SetVisibility(false);
 0224        isEmotesVisible.Set(false);
 0225        isExperiencesViewerOpen.Set(false);
 0226        voiceChatHud?.SetVisibility(false);
 0227        OpenPublicChannelOnPreviewMode();
 0228    }
 229
 230    private void HandleChatToggle(bool show)
 231    {
 1232        if (show)
 233        {
 1234            chatBackWindow = publicChatChannel;
 1235            var openedWindow = OpenLastActiveChatWindow(chatToggleTargetWindow);
 1236            if (openedWindow == publicChatChannel)
 1237                publicChatChannel.DeactivatePreview();
 0238            else if (openedWindow == privateChatWindow)
 0239                privateChatWindow.DeactivatePreview();
 0240        }
 241        else
 242        {
 0243            if (chatToggleTargetWindow == publicChatChannel)
 0244                publicChatChannel.ActivatePreview();
 0245            else if (chatToggleTargetWindow == privateChatWindow)
 0246                privateChatWindow.ActivatePreview();
 247            else
 248            {
 0249                CloseAnyChatWindow();
 0250                OpenPublicChannelOnPreviewMode();
 251            }
 252        }
 253
 1254        OnAnyTaskbarButtonClicked?.Invoke();
 0255    }
 256
 257    private void MouseCatcher_OnMouseUnlock()
 258    {
 259        // TODO: temporary deactivated current window fadein/fadeout until we get the full chat notifications feature im
 260        // view.leftWindowContainerAnimator.Show();
 261        // view.RestoreLastToggle();
 0262    }
 263
 264    private void MouseCatcher_OnMouseLock()
 265    {
 266        // TODO: temporary deactivated current window fadein/fadeout until we get the full chat notifications feature im
 267        // view.leftWindowContainerAnimator.Hide();
 268        // view.ToggleAllOff();
 0269        CloseFriendsWindow();
 0270        CloseChatList();
 0271        CloseVoiceChatWindow();
 0272        isExperiencesViewerOpen.Set(false);
 273
 0274        if (!privateChatWindow.View.IsActive
 275            && !publicChatChannel.View.IsActive)
 0276            OpenPublicChannelOnPreviewMode();
 0277    }
 278
 279    public void AddWorldChatWindow(WorldChatWindowController controller)
 280    {
 2281        if (controller?.View == null)
 282        {
 0283            Debug.LogWarning("AddChatWindow >>> World Chat Window doesn't exist yet!");
 0284            return;
 285        }
 286
 2287        if (controller.View.Transform.parent == view.leftWindowContainer) return;
 288
 2289        controller.View.Transform.SetParent(view.leftWindowContainer, false);
 2290        experiencesViewerTransform?.SetAsLastSibling();
 291
 2292        worldChatWindowHud = controller;
 293
 2294        view.ShowChatButton();
 2295        worldChatWindowHud.View.OnClose += OpenPublicChannelOnPreviewMode;
 2296    }
 297
 298    private void OpenPublicChannelOnPreviewMode()
 299    {
 1300        chatToggleTargetWindow = publicChatChannel;
 1301        publicChatChannel.SetVisibility(true, false);
 1302        publicChatChannel.ActivatePreviewModeInstantly();
 1303        view.ToggleOff(TaskbarHUDView.TaskbarButtonType.Chat);
 1304    }
 305
 306    private void OpenFriendsWindow()
 307    {
 2308        worldChatWindowHud.SetVisibility(false);
 2309        privateChatWindow.SetVisibility(false);
 2310        publicChatChannel.SetVisibility(false);
 2311        isExperiencesViewerOpen.Set(false);
 2312        isEmotesVisible.Set(false);
 2313        voiceChatHud?.SetVisibility(false);
 2314        friendsHud?.SetVisibility(true);
 2315        view.ToggleOn(TaskbarHUDView.TaskbarButtonType.Friends);
 2316        chatBackWindow = friendsHud;
 2317    }
 318
 319    private void CloseFriendsWindow()
 320    {
 0321        friendsHud?.SetVisibility(false);
 0322        view.ToggleOff(TaskbarHUDView.TaskbarButtonType.Friends);
 0323    }
 324
 325    public void OpenPrivateChat(string userId)
 326    {
 0327        privateChatWindow.Setup(userId);
 0328        worldChatWindowHud.SetVisibility(false);
 0329        publicChatChannel.SetVisibility(false);
 0330        friendsHud?.SetVisibility(false);
 0331        isExperiencesViewerOpen.Set(false);
 0332        isEmotesVisible.Set(false);
 0333        voiceChatHud?.SetVisibility(false);
 0334        privateChatWindow.SetVisibility(true);
 0335        view.ToggleOn(TaskbarHUDView.TaskbarButtonType.Chat);
 0336        chatToggleTargetWindow = privateChatWindow;
 0337        chatInputTargetWindow = privateChatWindow;
 0338    }
 339
 340    private IHUD OpenLastActiveChatWindow(IHUD lastActiveWindow)
 341    {
 1342        worldChatWindowHud.SetVisibility(false);
 1343        privateChatWindow.SetVisibility(false);
 1344        publicChatChannel.SetVisibility(false);
 1345        friendsHud?.SetVisibility(false);
 1346        isEmotesVisible.Set(false);
 1347        isExperiencesViewerOpen.Set(false);
 1348        voiceChatHud?.SetVisibility(false);
 349
 350        IHUD visibleWindow;
 351
 1352        if (lastActiveWindow == publicChatChannel)
 353        {
 1354            publicChatChannel.SetVisibility(true, true);
 1355            visibleWindow = lastActiveWindow;
 1356        }
 0357        else if (lastActiveWindow != null)
 358        {
 0359            lastActiveWindow.SetVisibility(true);
 0360            visibleWindow = lastActiveWindow;
 0361        }
 362        else
 363        {
 0364            publicChatChannel.SetVisibility(true, true);
 0365            visibleWindow = publicChatChannel;
 366        }
 367
 1368        view.ToggleOn(TaskbarHUDView.TaskbarButtonType.Chat);
 369
 1370        return visibleWindow;
 371    }
 372
 373    private void CloseAnyChatWindow()
 374    {
 0375        worldChatWindowHud.SetVisibility(false);
 0376        privateChatWindow.SetVisibility(false);
 0377        publicChatChannel.SetVisibility(false);
 0378        view.ToggleOff(TaskbarHUDView.TaskbarButtonType.Chat);
 0379    }
 380
 381    public void OpenPublicChatChannel(string channelId, bool focusInputField)
 382    {
 0383        publicChatChannel?.Setup(channelId);
 0384        worldChatWindowHud?.SetVisibility(false);
 0385        privateChatWindow?.SetVisibility(false);
 0386        friendsHud?.SetVisibility(false);
 0387        isExperiencesViewerOpen?.Set(false);
 0388        isEmotesVisible?.Set(false);
 0389        voiceChatHud?.SetVisibility(false);
 0390        publicChatChannel?.SetVisibility(true, focusInputField);
 0391        view.ToggleOn(TaskbarHUDView.TaskbarButtonType.Chat);
 0392        chatToggleTargetWindow = publicChatChannel;
 0393        chatInputTargetWindow = publicChatChannel;
 0394    }
 395
 396    private void OpenChatList()
 397    {
 0398        privateChatWindow.SetVisibility(false);
 0399        publicChatChannel.SetVisibility(false);
 0400        friendsHud?.SetVisibility(false);
 0401        isExperiencesViewerOpen.Set(false);
 0402        isEmotesVisible.Set(false);
 0403        voiceChatHud?.SetVisibility(false);
 0404        worldChatWindowHud.SetVisibility(true);
 0405        view.ToggleOn(TaskbarHUDView.TaskbarButtonType.Chat);
 0406        chatToggleTargetWindow = worldChatWindowHud;
 0407    }
 408
 409    private void CloseChatList()
 410    {
 0411        if (!worldChatWindowHud.View.IsActive) return;
 0412        worldChatWindowHud.SetVisibility(false);
 0413        view.ToggleOff(TaskbarHUDView.TaskbarButtonType.Chat);
 0414    }
 415
 416    private void OpenVoiceChatWindow()
 417    {
 0418        worldChatWindowHud.SetVisibility(false);
 0419        privateChatWindow.SetVisibility(false);
 0420        publicChatChannel.SetVisibility(false);
 0421        isExperiencesViewerOpen.Set(false);
 0422        isEmotesVisible.Set(false);
 0423        friendsHud?.SetVisibility(false);
 0424        voiceChatHud?.SetVisibility(true);
 0425        view.ToggleOn(TaskbarHUDView.TaskbarButtonType.VoiceChat);
 0426    }
 427
 428    private void CloseVoiceChatWindow()
 429    {
 0430        voiceChatHud?.SetVisibility(false);
 0431        view.ToggleOff(TaskbarHUDView.TaskbarButtonType.VoiceChat);
 0432    }
 433
 434    public void AddPrivateChatWindow(PrivateChatWindowController controller)
 435    {
 1436        if (controller?.View == null)
 437        {
 0438            Debug.LogWarning("AddPrivateChatWindow >>> Private Chat Window doesn't exist yet!");
 0439            return;
 440        }
 441
 1442        if (controller.View.Transform.parent == view.leftWindowContainer)
 0443            return;
 444
 1445        controller.View.Transform.SetParent(view.leftWindowContainer, false);
 1446        experiencesViewerTransform?.SetAsLastSibling();
 447
 1448        privateChatWindow = controller;
 449
 1450        controller.OnClosed += OpenPublicChannelOnPreviewMode;
 1451        controller.OnPreviewModeChanged += HandlePrivateChannelPreviewMode;
 1452    }
 453
 454    public void AddPublicChatChannel(PublicChatChannelController controller)
 455    {
 1456        if (controller?.View == null)
 457        {
 0458            Debug.LogWarning("AddPublicChatChannel >>> Public Chat Window doesn't exist yet!");
 0459            return;
 460        }
 461
 1462        if (controller.View.Transform.parent == view.leftWindowContainer) return;
 463
 1464        controller.View.Transform.SetParent(view.leftWindowContainer, false);
 1465        experiencesViewerTransform?.SetAsLastSibling();
 466
 1467        publicChatChannel = controller;
 468
 1469        controller.OnClosed += OpenPublicChannelOnPreviewMode;
 1470        controller.OnPreviewModeChanged += HandlePublicChannelPreviewModeChanged;
 1471    }
 472
 473    private void HandlePublicChannelPreviewModeChanged(bool isPreviewMode)
 474    {
 2475        if (!publicChatChannel.View.IsActive) return;
 2476        if (isPreviewMode)
 1477            view.ToggleOff(TaskbarHUDView.TaskbarButtonType.Chat);
 478        else
 1479            view.ToggleOn(TaskbarHUDView.TaskbarButtonType.Chat);
 1480    }
 481
 482    private void HandlePrivateChannelPreviewMode(bool isPreviewMode)
 483    {
 0484        if (!privateChatWindow.View.IsActive) return;
 0485        if (isPreviewMode)
 0486            view.ToggleOff(TaskbarHUDView.TaskbarButtonType.Chat);
 487        else
 0488            view.ToggleOn(TaskbarHUDView.TaskbarButtonType.Chat);
 0489    }
 490
 491    public void AddFriendsWindow(FriendsHUDController controller)
 492    {
 3493        if (controller?.View == null)
 494        {
 0495            Debug.LogWarning("AddFriendsWindow >>> Friends window doesn't exist yet!");
 0496            return;
 497        }
 498
 3499        if (controller.View.Transform.parent == view.leftWindowContainer)
 0500            return;
 501
 3502        controller.View.Transform.SetParent(view.leftWindowContainer, false);
 3503        experiencesViewerTransform?.SetAsLastSibling();
 504
 3505        friendsHud = controller;
 3506        view.ShowFriendsButton();
 3507        friendsHud.View.OnClose += () =>
 508        {
 0509            view.ToggleOff(TaskbarHUDView.TaskbarButtonType.Friends);
 0510            OpenPublicChannelOnPreviewMode();
 0511        };
 3512    }
 513
 514    public void AddVoiceChatWindow(VoiceChatWindowController controller)
 515    {
 1516        if (controller?.VoiceChatWindowView == null)
 517        {
 1518            Debug.LogWarning("AddVoiceChatWindow >>> Voice Chat window doesn't exist yet!");
 1519            return;
 520        }
 521
 0522        if (controller.VoiceChatWindowView.Transform.parent == view.leftWindowContainer)
 0523            return;
 524
 0525        controller.VoiceChatWindowView.Transform.SetParent(view.leftWindowContainer, false);
 526
 0527        voiceChatHud = controller;
 0528        view.ShowVoiceChatButton();
 0529        voiceChatHud.VoiceChatWindowView.OnClose += () => view.ToggleOff(TaskbarHUDView.TaskbarButtonType.VoiceChat);
 530
 0531        if (controller?.VoiceChatBarView != null)
 532        {
 0533            controller.VoiceChatBarView.Transform.SetParent(view.altSectionContainer, false);
 0534            controller.VoiceChatBarView.Transform.SetAsFirstSibling();
 535        }
 0536    }
 537
 538    private void InitializeEmotesSelector(bool current, bool previous)
 539    {
 8540        if (!current) return;
 0541        view.ShowEmotesButton();
 0542    }
 543
 0544    private void IsEmotesVisibleChanged(bool current, bool previous) => HandleEmotesToggle(current);
 545
 546    private void InitializeExperiencesViewer(Transform currentViewTransform, Transform previousViewTransform)
 547    {
 4548        if (currentViewTransform == null)
 4549            return;
 550
 0551        experiencesViewerTransform = currentViewTransform;
 0552        experiencesViewerTransform.SetParent(view.leftWindowContainer, false);
 0553        experiencesViewerTransform.SetAsLastSibling();
 554
 0555        view.ShowExperiencesButton();
 0556    }
 557
 558    private void IsExperiencesViewerOpenChanged(bool current, bool previous)
 559    {
 0560        if (current)
 0561            return;
 562
 0563        view.ToggleOff(TaskbarHUDView.TaskbarButtonType.Experiences);
 0564        OpenPublicChannelOnPreviewMode();
 0565    }
 566
 567    private void NumOfLoadedExperiencesChanged(int current, int previous)
 568    {
 4569        view.SetExperiencesVisibility(current > 0);
 570
 4571        if (current == 0)
 4572            isExperiencesViewerOpen.Set(false);
 4573    }
 574
 575    public void DisableFriendsWindow()
 576    {
 0577        view.friendsButton.transform.parent.gameObject.SetActive(false);
 0578    }
 579
 580    public void Dispose()
 581    {
 4582        if (view != null)
 583        {
 4584            view.OnChatToggle -= HandleChatToggle;
 4585            view.OnFriendsToggle -= HandleFriendsToggle;
 4586            view.OnEmotesToggle -= HandleEmotesToggle;
 4587            view.OnExperiencesToggle -= HandleExperiencesToggle;
 4588            view.OnVoiceChatToggle -= HandleVoiceChatToggle;
 589
 4590            view.Destroy();
 591        }
 592
 4593        if (mouseCatcher != null)
 594        {
 1595            mouseCatcher.OnMouseLock -= MouseCatcher_OnMouseLock;
 1596            mouseCatcher.OnMouseUnlock -= MouseCatcher_OnMouseUnlock;
 597        }
 598
 4599        if (toggleFriendsTrigger != null)
 4600            toggleFriendsTrigger.OnTriggered -= ToggleFriendsTrigger_OnTriggered;
 601
 4602        if (closeWindowTrigger != null)
 4603            closeWindowTrigger.OnTriggered -= CloseWindowTrigger_OnTriggered;
 604
 4605        if (toggleWorldChatTrigger != null)
 4606            toggleWorldChatTrigger.OnTriggered -= ToggleWorldChatTrigger_OnTriggered;
 607
 4608        DataStore.i.builderInWorld.showTaskBar.OnChange -= SetVisibility;
 4609        isEmotesWheelInitialized.OnChange -= InitializeEmotesSelector;
 4610        isEmotesVisible.OnChange -= IsEmotesVisibleChanged;
 4611        isExperiencesViewerOpen.OnChange -= IsExperiencesViewerOpenChanged;
 4612        isExperiencesViewerInitialized.OnChange -= InitializeExperiencesViewer;
 4613        numOfLoadedExperiences.OnChange -= NumOfLoadedExperiencesChanged;
 4614    }
 615
 0616    private void SetVisibility(bool visible, bool previus) { SetVisibility(visible); }
 617
 2618    public void SetVisibility(bool visible) { view.SetVisibility(visible); }
 619
 620    public void GoBackFromChat()
 621    {
 0622        if (chatBackWindow == friendsHud)
 0623            OpenFriendsWindow();
 624        else
 0625            OpenChatList();
 0626    }
 627}

Methods/Properties

socialTooltipReference()
isEmotesWheelInitialized()
isEmotesVisible()
emoteJustTriggeredFromShortcut()
isExperiencesViewerInitialized()
isExperiencesViewerOpen()
numOfLoadedExperiences()
CreateView()
Initialize(DCL.IMouseCatcher)
HandleFriendsToggle(System.Boolean)
HandleEmotesToggle(System.Boolean)
ShowEmotes()
HandleExperiencesToggle(System.Boolean)
HandleVoiceChatToggle(System.Boolean)
ShowExperiences()
ToggleFriendsTrigger_OnTriggered(DCLAction_Trigger)
ToggleWorldChatTrigger_OnTriggered(DCLAction_Trigger)
CloseWindowTrigger_OnTriggered(DCLAction_Trigger)
HandleChatToggle(System.Boolean)
MouseCatcher_OnMouseUnlock()
MouseCatcher_OnMouseLock()
AddWorldChatWindow(WorldChatWindowController)
OpenPublicChannelOnPreviewMode()
OpenFriendsWindow()
CloseFriendsWindow()
OpenPrivateChat(System.String)
OpenLastActiveChatWindow(IHUD)
CloseAnyChatWindow()
OpenPublicChatChannel(System.String, System.Boolean)
OpenChatList()
CloseChatList()
OpenVoiceChatWindow()
CloseVoiceChatWindow()
AddPrivateChatWindow(PrivateChatWindowController)
AddPublicChatChannel(PublicChatChannelController)
HandlePublicChannelPreviewModeChanged(System.Boolean)
HandlePrivateChannelPreviewMode(System.Boolean)
AddFriendsWindow(FriendsHUDController)
AddVoiceChatWindow(VoiceChatWindowController)
InitializeEmotesSelector(System.Boolean, System.Boolean)
IsEmotesVisibleChanged(System.Boolean, System.Boolean)
InitializeExperiencesViewer(UnityEngine.Transform, UnityEngine.Transform)
IsExperiencesViewerOpenChanged(System.Boolean, System.Boolean)
NumOfLoadedExperiencesChanged(System.Int32, System.Int32)
DisableFriendsWindow()
Dispose()
SetVisibility(System.Boolean, System.Boolean)
SetVisibility(System.Boolean)
GoBackFromChat()