< Summary

Class:TaskbarHUDController
Assembly:TaskbarHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/TaskbarHUD/TaskbarHUDController.cs
Covered lines:187
Uncovered lines:144
Coverable lines:331
Total lines:648
Line coverage:56.4% (187 of 331)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
CreateView()0%110100%
Initialize(...)0%66096.36%
View_OnQuestPanelToggled(...)0%2100%
ChatHeadsGroup_OnHeadClose(...)0%110100%
View_OnFriendsToggleOn()0%3.333066.67%
View_OnFriendsToggleOff()0%220100%
ToggleFriendsTrigger_OnTriggered(...)0%6200%
ToggleWorldChatTrigger_OnTriggered(...)0%2100%
OnToggleQuestsPanelTriggered(...)0%8.198085.71%
CloseWindowTrigger_OnTriggered(...)0%2100%
View_OnChatToggleOn()0%2.022083.33%
View_OnChatToggleOff()0%2.152066.67%
ChatHeadsGroup_OnHeadOpen(...)0%2.032080%
View_OnSettingsToggleOn()0%6200%
View_OnSettingsToggleOff()0%2100%
View_OnBuilderInWorldToggleOn()0%6200%
View_OnBuilderInWorldToggleOff()0%2100%
View_OnExploreToggleOn()0%6200%
View_OnExploreToggleOff()0%110100%
View_OnExploreV2ToggleOn()0%6200%
View_OnExploreV2ToggleOff()0%2100%
MouseCatcher_OnMouseUnlock()0%2100%
MouseCatcher_OnMouseLock()0%6200%
SetBuilderInWorldStatus(...)0%220100%
SetQuestsPanelStatus(...)0%2100%
AddWorldChatWindow(...)0%4.254075%
OpenFriendsWindow()0%2100%
OpenPrivateChatTo(...)0%2100%
AddPrivateChatWindow(...)0%4.434070%
AddFriendsWindow(...)0%4.324072.73%
AddSettingsWindow(...)0%2.062075%
AddExploreWindow(...)0%2.062075%
ConfigureExploreV2Feature()0%2.032080%
OnExploreV2ControllerInitialized(...)0%6200%
OnExploreV2Open(...)0%6200%
AddHelpAndSupportWindow(...)0%3.213071.43%
OnAddVoiceChat()0%2100%
AddControlsMoreOption()0%110100%
DisableFriendsWindow()0%2100%
OpenPrivateChatWindow(...)0%2.032080%
Dispose()0%880100%
SetVisibility(...)0%2100%
SetVisibility(...)0%110100%
OnWorldChatToggleInputPress()0%42600%
OnCloseWindowToggleInputPress()0%6200%
SetVoiceChatRecording(...)0%6200%
SetVoiceChatEnabledByScene(...)0%6200%
OnFriendsToggleInputPress()0%56700%
OnAddMessage(...)0%3.333066.67%
AnyWindowsDifferentThanChatIsOpen()0%440100%
MarkWorldChatAsReadIfOtherWindowIsOpen()0%2.152066.67%
ShowTutorialOption(...)0%12300%
SceneController_OnNewPortableExperienceSceneAdded(...)0%6200%
SceneController_OnNewPortableExperienceSceneRemoved(...)0%2100%
KillPortableExperience(...)0%2100%
OnBuilderProjectsPanelTriggered(...)0%330100%

File(s)

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

#LineLine coverage
 1using System;
 2using DCL;
 3using DCL.HelpAndSupportHUD;
 4using DCL.Helpers;
 5using DCL.Interface;
 6using DCL.SettingsPanelHUD;
 7using System.Linq;
 8using UnityEngine;
 9using UnityEngine.EventSystems;
 10using System.Collections.Generic;
 11using DCL.Controllers;
 12
 13public class TaskbarHUDController : IHUD
 14{
 15    [Serializable]
 16    public struct Configuration
 17    {
 18        public bool enableVoiceChat;
 19        public bool enableQuestPanel;
 20    }
 21
 22    public TaskbarHUDView view;
 23    public WorldChatWindowHUDController worldChatWindowHud;
 24    public PrivateChatWindowHUDController privateChatWindowHud;
 25    public FriendsHUDController friendsHud;
 26    public SettingsPanelHUDController settingsPanelHud;
 27    public ExploreHUDController exploreHud;
 28    public IExploreV2MenuComponentController exploreV2Hud;
 29    public HelpAndSupportHUDController helpAndSupportHud;
 30
 31    IMouseCatcher mouseCatcher;
 32    protected IChatController chatController;
 33    protected IFriendsController friendsController;
 34
 35    private InputAction_Trigger toggleFriendsTrigger;
 36    private InputAction_Trigger closeWindowTrigger;
 37    private InputAction_Trigger toggleWorldChatTrigger;
 38    private ISceneController sceneController;
 39    private IWorldState worldState;
 40
 41    public event System.Action OnAnyTaskbarButtonClicked;
 42
 043    public RectTransform tutorialTooltipReference { get => view.moreTooltipReference; }
 44
 045    public RectTransform exploreTooltipReference { get => view.exploreTooltipReference; }
 46
 047    public RectTransform socialTooltipReference { get => view.socialTooltipReference; }
 48
 049    public TaskbarMoreMenu moreMenu { get => view.moreMenu; }
 50
 1151    protected internal virtual TaskbarHUDView CreateView() { return TaskbarHUDView.Create(this, chatController, friendsC
 52
 53    public void Initialize(
 54        IMouseCatcher mouseCatcher,
 55        IChatController chatController,
 56        IFriendsController friendsController,
 57        ISceneController sceneController,
 58        IWorldState worldState)
 59    {
 1160        this.friendsController = friendsController;
 1161        this.mouseCatcher = mouseCatcher;
 1162        this.chatController = chatController;
 63
 1164        view = CreateView();
 65
 1166        this.sceneController = sceneController;
 1167        this.worldState = worldState;
 68
 1169        if (mouseCatcher != null)
 70        {
 171            mouseCatcher.OnMouseLock -= MouseCatcher_OnMouseLock;
 172            mouseCatcher.OnMouseUnlock -= MouseCatcher_OnMouseUnlock;
 173            mouseCatcher.OnMouseLock += MouseCatcher_OnMouseLock;
 174            mouseCatcher.OnMouseUnlock += MouseCatcher_OnMouseUnlock;
 75        }
 76
 1177        view.chatHeadsGroup.OnHeadToggleOn += ChatHeadsGroup_OnHeadOpen;
 1178        view.chatHeadsGroup.OnHeadToggleOff += ChatHeadsGroup_OnHeadClose;
 79
 1180        view.leftWindowContainerLayout.enabled = false;
 81
 1182        view.OnChatToggleOff += View_OnChatToggleOff;
 1183        view.OnChatToggleOn += View_OnChatToggleOn;
 1184        view.OnFriendsToggleOff += View_OnFriendsToggleOff;
 1185        view.OnFriendsToggleOn += View_OnFriendsToggleOn;
 1186        view.OnSettingsToggleOff += View_OnSettingsToggleOff;
 1187        view.OnSettingsToggleOn += View_OnSettingsToggleOn;
 1188        view.OnBuilderInWorldToggleOff += View_OnBuilderInWorldToggleOff;
 1189        view.OnBuilderInWorldToggleOn += View_OnBuilderInWorldToggleOn;
 1190        view.OnExploreToggleOff += View_OnExploreToggleOff;
 1191        view.OnExploreToggleOn += View_OnExploreToggleOn;
 1192        view.OnExploreV2ToggleOff += View_OnExploreV2ToggleOff;
 1193        view.OnExploreV2ToggleOn += View_OnExploreV2ToggleOn;
 1194        view.OnQuestPanelToggled -= View_OnQuestPanelToggled;
 1195        view.OnQuestPanelToggled += View_OnQuestPanelToggled;
 96
 1197        toggleFriendsTrigger = Resources.Load<InputAction_Trigger>("ToggleFriends");
 1198        toggleFriendsTrigger.OnTriggered -= ToggleFriendsTrigger_OnTriggered;
 1199        toggleFriendsTrigger.OnTriggered += ToggleFriendsTrigger_OnTriggered;
 100
 11101        closeWindowTrigger = Resources.Load<InputAction_Trigger>("CloseWindow");
 11102        closeWindowTrigger.OnTriggered -= CloseWindowTrigger_OnTriggered;
 11103        closeWindowTrigger.OnTriggered += CloseWindowTrigger_OnTriggered;
 104
 11105        toggleWorldChatTrigger = Resources.Load<InputAction_Trigger>("ToggleWorldChat");
 11106        toggleWorldChatTrigger.OnTriggered -= ToggleWorldChatTrigger_OnTriggered;
 11107        toggleWorldChatTrigger.OnTriggered += ToggleWorldChatTrigger_OnTriggered;
 108
 11109        DataStore.i.HUDs.questsPanelVisible.OnChange -= OnToggleQuestsPanelTriggered;
 11110        DataStore.i.HUDs.questsPanelVisible.OnChange += OnToggleQuestsPanelTriggered;
 111
 11112        if (chatController != null)
 113        {
 11114            chatController.OnAddMessage -= OnAddMessage;
 11115            chatController.OnAddMessage += OnAddMessage;
 116        }
 117
 11118        if (this.sceneController != null && this.worldState != null)
 119        {
 1120            this.sceneController.OnNewPortableExperienceSceneAdded += SceneController_OnNewPortableExperienceSceneAdded;
 1121            this.sceneController.OnNewPortableExperienceSceneRemoved += SceneController_OnNewPortableExperienceSceneRemo
 122
 1123            List<GlobalScene> activePortableExperiences = WorldStateUtils.GetActivePortableExperienceScenes();
 2124            for (int i = 0; i < activePortableExperiences.Count; i++)
 125            {
 0126                SceneController_OnNewPortableExperienceSceneAdded(activePortableExperiences[i]);
 127            }
 128        }
 129
 11130        view.leftWindowContainerAnimator.Show();
 131
 11132        CommonScriptableObjects.isTaskbarHUDInitialized.Set(true);
 11133        DataStore.i.builderInWorld.showTaskBar.OnChange += SetVisibility;
 134
 11135        ConfigureExploreV2Feature();
 11136    }
 137
 138    private void View_OnQuestPanelToggled(bool value)
 139    {
 0140        QuestsUIAnalytics.SendQuestLogVisibiltyChanged(value, "taskbar");
 0141        DataStore.i.HUDs.questsPanelVisible.Set(value);
 0142    }
 143
 2144    private void ChatHeadsGroup_OnHeadClose(TaskbarButton obj) { privateChatWindowHud.SetVisibility(false); }
 145
 146    private void View_OnFriendsToggleOn()
 147    {
 2148        friendsHud?.SetVisibility(true);
 2149        OnAnyTaskbarButtonClicked?.Invoke();
 0150    }
 151
 4152    private void View_OnFriendsToggleOff() { friendsHud?.SetVisibility(false); }
 153
 154    private void ToggleFriendsTrigger_OnTriggered(DCLAction_Trigger action)
 155    {
 0156        if (!view.friendsButton.gameObject.activeSelf)
 0157            return;
 158
 0159        OnFriendsToggleInputPress();
 0160    }
 161
 0162    private void ToggleWorldChatTrigger_OnTriggered(DCLAction_Trigger action) { OnWorldChatToggleInputPress(); }
 163
 164    private void OnToggleQuestsPanelTriggered(bool current, bool previous)
 165    {
 1166        bool anyInputFieldIsSelected = EventSystem.current != null &&
 167                                       EventSystem.current.currentSelectedGameObject != null &&
 168                                       EventSystem.current.currentSelectedGameObject.GetComponent<TMPro.TMP_InputField>(
 169                                       (!worldChatWindowHud.view.chatHudView.inputField.isFocused || !worldChatWindowHud
 170
 1171        if (anyInputFieldIsSelected)
 0172            return;
 173
 1174        view.questPanelButton.SetToggleState(current, false);
 1175        if (current)
 1176            view.SelectButton(view.questPanelButton);
 1177    }
 178
 0179    private void CloseWindowTrigger_OnTriggered(DCLAction_Trigger action) { OnCloseWindowToggleInputPress(); }
 180
 181    private void View_OnChatToggleOn()
 182    {
 3183        worldChatWindowHud.SetVisibility(true);
 3184        worldChatWindowHud.MarkWorldChatMessagesAsRead();
 3185        worldChatWindowHud.view.DeactivatePreview();
 3186        worldChatWindowHud.OnPressReturn();
 3187        OnAnyTaskbarButtonClicked?.Invoke();
 0188    }
 189
 190    private void View_OnChatToggleOff()
 191    {
 2192        if (view.AllButtonsToggledOff())
 193        {
 2194            worldChatWindowHud.SetVisibility(true);
 2195            worldChatWindowHud.view.ActivatePreview();
 2196        }
 197        else
 198        {
 0199            worldChatWindowHud.SetVisibility(false);
 200        }
 0201    }
 202
 203    private void ChatHeadsGroup_OnHeadOpen(TaskbarButton taskbarBtn)
 204    {
 1205        ChatHeadButton head = taskbarBtn as ChatHeadButton;
 206
 1207        if (taskbarBtn == null)
 0208            return;
 209
 1210        OpenPrivateChatWindow(head.profile.userId);
 1211    }
 212
 213    private void View_OnSettingsToggleOn()
 214    {
 0215        settingsPanelHud.SetVisibility(true);
 0216        OnAnyTaskbarButtonClicked?.Invoke();
 0217    }
 218
 0219    private void View_OnSettingsToggleOff() { settingsPanelHud.SetVisibility(false); }
 220
 221    private void View_OnBuilderInWorldToggleOn()
 222    {
 0223        OnBuilderProjectsPanelTriggered(true, false);
 0224        OnAnyTaskbarButtonClicked?.Invoke();
 0225    }
 226
 0227    private void View_OnBuilderInWorldToggleOff() { OnBuilderProjectsPanelTriggered(false, true); }
 228
 229    private void View_OnExploreToggleOn()
 230    {
 0231        exploreHud.SetVisibility(true);
 0232        OnAnyTaskbarButtonClicked?.Invoke();
 0233    }
 234
 2235    private void View_OnExploreToggleOff() { exploreHud.SetVisibility(false); }
 236
 237    private void View_OnExploreV2ToggleOn()
 238    {
 0239        DataStore.i.taskbar.isExploreV2Enabled.Set(false);
 0240        DataStore.i.taskbar.isExploreV2Enabled.Set(true);
 0241        OnAnyTaskbarButtonClicked?.Invoke();
 0242    }
 243
 0244    private void View_OnExploreV2ToggleOff() { DataStore.i.taskbar.isExploreV2Enabled.Set(false); }
 245
 0246    private void MouseCatcher_OnMouseUnlock() { view.leftWindowContainerAnimator.Show(); }
 247
 248    private void MouseCatcher_OnMouseLock()
 249    {
 0250        view.leftWindowContainerAnimator.Hide();
 251
 0252        foreach (var btn in view.GetButtonList())
 253        {
 0254            btn.SetToggleState(false);
 255        }
 256
 0257        worldChatWindowHud.SetVisibility(true);
 0258        worldChatWindowHud.view.ActivatePreview();
 259
 0260        MarkWorldChatAsReadIfOtherWindowIsOpen();
 0261    }
 262
 263    public void SetBuilderInWorldStatus(bool isActive)
 264    {
 1265        view.SetBuilderInWorldStatus(isActive);
 1266        DataStore.i.HUDs.builderProjectsPanelVisible.OnChange -= OnBuilderProjectsPanelTriggered;
 267
 1268        if (isActive)
 1269            DataStore.i.HUDs.builderProjectsPanelVisible.OnChange += OnBuilderProjectsPanelTriggered;
 1270    }
 271
 0272    public void SetQuestsPanelStatus(bool isActive) { view.SetQuestsPanelStatus(isActive); }
 273
 274    public void AddWorldChatWindow(WorldChatWindowHUDController controller)
 275    {
 2276        if (controller == null || controller.view == null)
 277        {
 0278            Debug.LogWarning("AddChatWindow >>> World Chat Window doesn't exist yet!");
 0279            return;
 280        }
 281
 2282        if (controller.view.transform.parent == view.leftWindowContainer)
 0283            return;
 284
 2285        controller.view.transform.SetParent(view.leftWindowContainer, false);
 286
 2287        worldChatWindowHud = controller;
 288
 2289        view.OnAddChatWindow();
 2290        worldChatWindowHud.view.OnClose += () => { view.friendsButton.SetToggleState(false, false); };
 291
 2292        view.chatButton.SetToggleState(true);
 2293        view.chatButton.SetToggleState(false);
 2294    }
 295
 0296    public void OpenFriendsWindow() { view.friendsButton.SetToggleState(true); }
 297
 298    public void OpenPrivateChatTo(string userId)
 299    {
 0300        var button = view.chatHeadsGroup.AddChatHead(userId, (ulong) System.DateTimeOffset.UtcNow.ToUnixTimeMilliseconds
 0301        button.toggleButton.onClick.Invoke();
 0302    }
 303
 304    public void AddPrivateChatWindow(PrivateChatWindowHUDController controller)
 305    {
 2306        if (controller == null || controller.view == null)
 307        {
 0308            Debug.LogWarning("AddPrivateChatWindow >>> Private Chat Window doesn't exist yet!");
 0309            return;
 310        }
 311
 2312        if (controller.view.transform.parent == view.leftWindowContainer)
 0313            return;
 314
 2315        controller.view.transform.SetParent(view.leftWindowContainer, false);
 316
 2317        privateChatWindowHud = controller;
 318
 2319        privateChatWindowHud.view.OnMinimize += () =>
 320        {
 0321            ChatHeadButton btn = view.GetButtonList()
 322                                     .FirstOrDefault(
 0323                                         (x) => x is ChatHeadButton &&
 324                                                (x as ChatHeadButton).profile.userId == privateChatWindowHud.conversatio
 325                ChatHeadButton;
 326
 0327            if (btn != null)
 0328                btn.SetToggleState(false, false);
 329
 0330            MarkWorldChatAsReadIfOtherWindowIsOpen();
 0331        };
 332
 2333        privateChatWindowHud.view.OnClose += () =>
 334        {
 0335            ChatHeadButton btn = view.GetButtonList()
 336                                     .FirstOrDefault(
 0337                                         (x) => x is ChatHeadButton &&
 338                                                (x as ChatHeadButton).profile.userId == privateChatWindowHud.conversatio
 339                ChatHeadButton;
 340
 0341            if (btn != null)
 342            {
 0343                btn.SetToggleState(false, false);
 0344                view.chatHeadsGroup.RemoveChatHead(btn);
 345            }
 346
 0347            MarkWorldChatAsReadIfOtherWindowIsOpen();
 0348        };
 2349    }
 350
 351    public void AddFriendsWindow(FriendsHUDController controller)
 352    {
 3353        if (controller == null || controller.view == null)
 354        {
 0355            Debug.LogWarning("AddFriendsWindow >>> Friends window doesn't exist yet!");
 0356            return;
 357        }
 358
 3359        if (controller.view.transform.parent == view.leftWindowContainer)
 0360            return;
 361
 3362        controller.view.transform.SetParent(view.leftWindowContainer, false);
 363
 3364        friendsHud = controller;
 3365        view.OnAddFriendsWindow();
 3366        friendsHud.view.OnClose += () =>
 367        {
 0368            view.friendsButton.SetToggleState(false, false);
 0369            MarkWorldChatAsReadIfOtherWindowIsOpen();
 0370        };
 371
 3372        friendsHud.view.friendsList.OnDeleteConfirmation += (userIdToRemove) => { view.chatHeadsGroup.RemoveChatHead(use
 3373    }
 374
 375    public void AddSettingsWindow(SettingsPanelHUDController controller)
 376    {
 2377        if (controller == null)
 378        {
 0379            Debug.LogWarning("AddSettingsWindow >>> Settings window doesn't exist yet!");
 0380            return;
 381        }
 382
 2383        settingsPanelHud = controller;
 2384        view.OnAddSettingsWindow();
 2385        settingsPanelHud.OnOpen += () =>
 386        {
 0387            view.settingsButton.SetToggleState(true, false);
 0388            view.exploreButton.SetToggleState(false);
 0389            view.exploreV2Button.SetToggleState(false);
 0390        };
 2391        settingsPanelHud.OnClose += () =>
 392        {
 0393            view.settingsButton.SetToggleState(false, false);
 0394            MarkWorldChatAsReadIfOtherWindowIsOpen();
 0395        };
 2396    }
 397
 398    public void AddExploreWindow(ExploreHUDController controller)
 399    {
 2400        if (controller == null)
 401        {
 0402            Debug.LogWarning("AddExploreWindow >>> Explore window doesn't exist yet!");
 0403            return;
 404        }
 405
 2406        exploreHud = controller;
 2407        view.OnAddExploreWindow();
 2408        exploreHud.OnOpen += () =>
 409        {
 1410            view.exploreButton.SetToggleState(true, false);
 1411            view.settingsButton.SetToggleState(false);
 1412        };
 2413        exploreHud.OnClose += () =>
 414        {
 1415            view.exploreButton.SetToggleState(false, false);
 1416            MarkWorldChatAsReadIfOtherWindowIsOpen();
 1417        };
 2418    }
 419
 420    private void ConfigureExploreV2Feature()
 421    {
 11422        bool isExploreV2AlreadyInitialized = DataStore.i.exploreV2.isInitialized.Get();
 11423        if (isExploreV2AlreadyInitialized)
 0424            OnExploreV2ControllerInitialized(true, false);
 425        else
 11426            DataStore.i.exploreV2.isInitialized.OnChange += OnExploreV2ControllerInitialized;
 11427    }
 428
 429    private void OnExploreV2ControllerInitialized(bool current, bool previous)
 430    {
 0431        if (!current)
 0432            return;
 433
 0434        DataStore.i.exploreV2.isInitialized.OnChange -= OnExploreV2ControllerInitialized;
 0435        DataStore.i.exploreV2.isOpen.OnChange += OnExploreV2Open;
 0436        view.OnAddExploreV2Window();
 0437    }
 438
 439    private void OnExploreV2Open(bool current, bool previous)
 440    {
 0441        if (current)
 442        {
 0443            view.exploreV2Button.SetToggleState(true, false);
 0444            view.settingsButton.SetToggleState(false);
 0445        }
 446        else
 447        {
 0448            view.exploreV2Button.SetToggleState(false, false);
 0449            MarkWorldChatAsReadIfOtherWindowIsOpen();
 450        }
 0451    }
 452
 453    public void AddHelpAndSupportWindow(HelpAndSupportHUDController controller)
 454    {
 2455        if (controller == null || controller.view == null)
 456        {
 0457            Debug.LogWarning("AddHelpAndSupportWindow >>> Help and Support window doesn't exist yet!");
 0458            return;
 459        }
 460
 2461        helpAndSupportHud = controller;
 2462        view.OnAddHelpAndSupportWindow();
 2463        helpAndSupportHud.view.OnClose += () => { MarkWorldChatAsReadIfOtherWindowIsOpen(); };
 2464    }
 465
 0466    public void OnAddVoiceChat() { view.OnAddVoiceChat(); }
 467
 4468    public void AddControlsMoreOption() { view.OnAddControlsMoreOption(); }
 469
 470    public void DisableFriendsWindow()
 471    {
 0472        view.friendsButton.gameObject.SetActive(false);
 0473        view.chatHeadsGroup.ClearChatHeads();
 0474    }
 475
 476    private void OpenPrivateChatWindow(string userId)
 477    {
 1478        privateChatWindowHud.Configure(userId);
 1479        privateChatWindowHud.SetVisibility(true);
 1480        privateChatWindowHud.ForceFocus();
 1481        OnAnyTaskbarButtonClicked?.Invoke();
 0482    }
 483
 484    public void Dispose()
 485    {
 11486        if (view != null)
 487        {
 11488            view.chatHeadsGroup.OnHeadToggleOn -= ChatHeadsGroup_OnHeadOpen;
 11489            view.chatHeadsGroup.OnHeadToggleOff -= ChatHeadsGroup_OnHeadClose;
 490
 11491            view.OnChatToggleOff -= View_OnChatToggleOff;
 11492            view.OnChatToggleOn -= View_OnChatToggleOn;
 11493            view.OnFriendsToggleOff -= View_OnFriendsToggleOff;
 11494            view.OnFriendsToggleOn -= View_OnFriendsToggleOn;
 11495            view.OnSettingsToggleOff -= View_OnSettingsToggleOff;
 11496            view.OnSettingsToggleOn -= View_OnSettingsToggleOn;
 11497            view.OnBuilderInWorldToggleOff -= View_OnBuilderInWorldToggleOff;
 11498            view.OnBuilderInWorldToggleOn -= View_OnBuilderInWorldToggleOn;
 11499            view.OnExploreToggleOff -= View_OnExploreToggleOff;
 11500            view.OnExploreToggleOn -= View_OnExploreToggleOn;
 11501            view.OnExploreV2ToggleOff -= View_OnExploreV2ToggleOff;
 11502            view.OnExploreV2ToggleOn -= View_OnExploreV2ToggleOn;
 11503            view.OnQuestPanelToggled -= View_OnQuestPanelToggled;
 504
 11505            CoroutineStarter.Stop(view.moreMenu.moreMenuAnimationsCoroutine);
 11506            UnityEngine.Object.Destroy(view.gameObject);
 507        }
 508
 11509        if (mouseCatcher != null)
 510        {
 1511            mouseCatcher.OnMouseLock -= MouseCatcher_OnMouseLock;
 1512            mouseCatcher.OnMouseUnlock -= MouseCatcher_OnMouseUnlock;
 513        }
 514
 11515        if (toggleFriendsTrigger != null)
 11516            toggleFriendsTrigger.OnTriggered -= ToggleFriendsTrigger_OnTriggered;
 517
 11518        if (closeWindowTrigger != null)
 11519            closeWindowTrigger.OnTriggered -= CloseWindowTrigger_OnTriggered;
 520
 11521        if (toggleWorldChatTrigger != null)
 11522            toggleWorldChatTrigger.OnTriggered -= ToggleWorldChatTrigger_OnTriggered;
 523
 11524        if (chatController != null)
 11525            chatController.OnAddMessage -= OnAddMessage;
 526
 11527        if (sceneController != null)
 528        {
 1529            sceneController.OnNewPortableExperienceSceneAdded -= SceneController_OnNewPortableExperienceSceneAdded;
 1530            sceneController.OnNewPortableExperienceSceneRemoved -= SceneController_OnNewPortableExperienceSceneRemoved;
 531        }
 532
 11533        DataStore.i.HUDs.questsPanelVisible.OnChange -= OnToggleQuestsPanelTriggered;
 11534        DataStore.i.HUDs.builderProjectsPanelVisible.OnChange -= OnBuilderProjectsPanelTriggered;
 11535        DataStore.i.builderInWorld.showTaskBar.OnChange -= SetVisibility;
 11536        DataStore.i.exploreV2.isInitialized.OnChange -= OnExploreV2ControllerInitialized;
 11537        DataStore.i.exploreV2.isOpen.OnChange -= OnExploreV2Open;
 11538    }
 539
 0540    public void SetVisibility(bool visible, bool previus) { SetVisibility(visible); }
 541
 2542    public void SetVisibility(bool visible) { view.SetVisibility(visible); }
 543
 544    public void OnWorldChatToggleInputPress()
 545    {
 0546        bool anyInputFieldIsSelected = EventSystem.current != null &&
 547                                       EventSystem.current.currentSelectedGameObject != null &&
 548                                       EventSystem.current.currentSelectedGameObject.GetComponent<TMPro.TMP_InputField>(
 549
 0550        if (anyInputFieldIsSelected)
 0551            return;
 552
 0553        worldChatWindowHud.OnPressReturn();
 554
 0555        if (AnyWindowsDifferentThanChatIsOpen())
 556        {
 0557            foreach (var btn in view.GetButtonList())
 558            {
 0559                btn.SetToggleState(btn == view.chatButton);
 560            }
 561        }
 0562    }
 563
 564    public void OnCloseWindowToggleInputPress()
 565    {
 0566        if (mouseCatcher.isLocked)
 0567            return;
 568
 0569        view.chatButton.SetToggleState(true);
 0570        view.chatButton.SetToggleState(false, false);
 0571        worldChatWindowHud.view.chatHudView.ResetInputField();
 0572        worldChatWindowHud.view.ActivatePreview();
 0573    }
 574
 0575    public void SetVoiceChatRecording(bool recording) { view?.voiceChatButton.SetOnRecording(recording); }
 576
 0577    public void SetVoiceChatEnabledByScene(bool enabled) { view?.voiceChatButton.SetEnabledByScene(enabled); }
 578
 579    private void OnFriendsToggleInputPress()
 580    {
 0581        bool anyInputFieldIsSelected = EventSystem.current != null &&
 582                                       EventSystem.current.currentSelectedGameObject != null &&
 583                                       EventSystem.current.currentSelectedGameObject.GetComponent<TMPro.TMP_InputField>(
 584                                       (!worldChatWindowHud.view.chatHudView.inputField.isFocused || !worldChatWindowHud
 585
 0586        if (anyInputFieldIsSelected)
 0587            return;
 588
 0589        Utils.UnlockCursor();
 0590        view.leftWindowContainerAnimator.Show();
 0591        view.friendsButton.SetToggleState(!view.friendsButton.toggledOn);
 0592    }
 593
 594    void OnAddMessage(ChatMessage message)
 595    {
 1596        if (!AnyWindowsDifferentThanChatIsOpen() && message.messageType == ChatMessage.Type.PUBLIC)
 0597            worldChatWindowHud.MarkWorldChatMessagesAsRead((long) message.timestamp);
 1598    }
 599
 600    private bool AnyWindowsDifferentThanChatIsOpen()
 601    {
 2602        return (friendsHud != null && friendsHud.view.gameObject.activeSelf) ||
 603               (privateChatWindowHud != null && privateChatWindowHud.view.gameObject.activeSelf);
 604    }
 605
 606    private void MarkWorldChatAsReadIfOtherWindowIsOpen()
 607    {
 1608        if (!AnyWindowsDifferentThanChatIsOpen())
 0609            worldChatWindowHud.MarkWorldChatMessagesAsRead();
 1610    }
 611
 612    public void ShowTutorialOption(bool isActive)
 613    {
 0614        if (view != null && view.moreMenu != null)
 0615            view.moreMenu.ShowTutorialButton(isActive);
 0616    }
 617
 618    private void SceneController_OnNewPortableExperienceSceneAdded(IParcelScene scene)
 619    {
 0620        GlobalScene newPortableExperienceScene = scene as GlobalScene;
 621
 0622        if ( newPortableExperienceScene == null )
 623        {
 0624            Debug.LogError("Portable experience must be of type GlobalScene!");
 0625            return;
 626        }
 627
 0628        view.AddPortableExperienceElement(
 629            scene.sceneData.id,
 630            newPortableExperienceScene.sceneName,
 631            newPortableExperienceScene.iconUrl);
 0632    }
 633
 0634    private void SceneController_OnNewPortableExperienceSceneRemoved(string portableExperienceSceneIdToRemove) { view.Re
 635
 0636    public void KillPortableExperience(string portableExperienceSceneIdToKill) { WebInterface.KillPortableExperience(por
 637
 638    private void OnBuilderProjectsPanelTriggered(bool isOn, bool prev)
 639    {
 1640        if (isOn)
 641        {
 1642            OnAnyTaskbarButtonClicked?.Invoke();
 643        }
 644
 1645        DataStore.i.HUDs.builderProjectsPanelVisible.Set(isOn);
 1646        view.builderInWorldButton.SetToggleState(isOn, false);
 1647    }
 648}

Methods/Properties

tutorialTooltipReference()
exploreTooltipReference()
socialTooltipReference()
moreMenu()
CreateView()
Initialize(DCL.IMouseCatcher, IChatController, IFriendsController, DCL.ISceneController, DCL.IWorldState)
View_OnQuestPanelToggled(System.Boolean)
ChatHeadsGroup_OnHeadClose(TaskbarButton)
View_OnFriendsToggleOn()
View_OnFriendsToggleOff()
ToggleFriendsTrigger_OnTriggered(DCLAction_Trigger)
ToggleWorldChatTrigger_OnTriggered(DCLAction_Trigger)
OnToggleQuestsPanelTriggered(System.Boolean, System.Boolean)
CloseWindowTrigger_OnTriggered(DCLAction_Trigger)
View_OnChatToggleOn()
View_OnChatToggleOff()
ChatHeadsGroup_OnHeadOpen(TaskbarButton)
View_OnSettingsToggleOn()
View_OnSettingsToggleOff()
View_OnBuilderInWorldToggleOn()
View_OnBuilderInWorldToggleOff()
View_OnExploreToggleOn()
View_OnExploreToggleOff()
View_OnExploreV2ToggleOn()
View_OnExploreV2ToggleOff()
MouseCatcher_OnMouseUnlock()
MouseCatcher_OnMouseLock()
SetBuilderInWorldStatus(System.Boolean)
SetQuestsPanelStatus(System.Boolean)
AddWorldChatWindow(WorldChatWindowHUDController)
OpenFriendsWindow()
OpenPrivateChatTo(System.String)
AddPrivateChatWindow(PrivateChatWindowHUDController)
AddFriendsWindow(FriendsHUDController)
AddSettingsWindow(DCL.SettingsPanelHUD.SettingsPanelHUDController)
AddExploreWindow(ExploreHUDController)
ConfigureExploreV2Feature()
OnExploreV2ControllerInitialized(System.Boolean, System.Boolean)
OnExploreV2Open(System.Boolean, System.Boolean)
AddHelpAndSupportWindow(DCL.HelpAndSupportHUD.HelpAndSupportHUDController)
OnAddVoiceChat()
AddControlsMoreOption()
DisableFriendsWindow()
OpenPrivateChatWindow(System.String)
Dispose()
SetVisibility(System.Boolean, System.Boolean)
SetVisibility(System.Boolean)
OnWorldChatToggleInputPress()
OnCloseWindowToggleInputPress()
SetVoiceChatRecording(System.Boolean)
SetVoiceChatEnabledByScene(System.Boolean)
OnFriendsToggleInputPress()
OnAddMessage(DCL.Interface.ChatMessage)
AnyWindowsDifferentThanChatIsOpen()
MarkWorldChatAsReadIfOtherWindowIsOpen()
ShowTutorialOption(System.Boolean)
SceneController_OnNewPortableExperienceSceneAdded(DCL.Controllers.IParcelScene)
SceneController_OnNewPortableExperienceSceneRemoved(System.String)
KillPortableExperience(System.String)
OnBuilderProjectsPanelTriggered(System.Boolean, System.Boolean)