< Summary

Class:TaskbarHUDController
Assembly:TaskbarHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/TaskbarHUD/TaskbarHUDController.cs
Covered lines:177
Uncovered lines:160
Coverable lines:337
Total lines:665
Line coverage:52.5% (177 of 337)
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%12300%
View_OnExploreV2ToggleOff()0%6200%
MouseCatcher_OnMouseUnlock()0%2100%
MouseCatcher_OnMouseLock()0%6200%
SetBuilderInWorldStatus(...)0%6200%
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%12300%

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;
 12using ExploreV2Analytics;
 13
 14public class TaskbarHUDController : IHUD
 15{
 16    [Serializable]
 17    public struct Configuration
 18    {
 19        public bool enableVoiceChat;
 20        public bool enableQuestPanel;
 21    }
 22
 23    public TaskbarHUDView view;
 24    public WorldChatWindowHUDController worldChatWindowHud;
 25    public PrivateChatWindowHUDController privateChatWindowHud;
 26    public FriendsHUDController friendsHud;
 27    public SettingsPanelHUDController settingsPanelHud;
 28    public ExploreHUDController exploreHud;
 29    public IExploreV2MenuComponentController exploreV2Hud;
 30    public HelpAndSupportHUDController helpAndSupportHud;
 31
 32    IMouseCatcher mouseCatcher;
 33    protected IChatController chatController;
 34    protected IFriendsController friendsController;
 35
 36    private InputAction_Trigger toggleFriendsTrigger;
 37    private InputAction_Trigger closeWindowTrigger;
 38    private InputAction_Trigger toggleWorldChatTrigger;
 39    private ISceneController sceneController;
 40    private IWorldState worldState;
 41
 42    public event System.Action OnAnyTaskbarButtonClicked;
 43
 044    public RectTransform tutorialTooltipReference { get => view.moreTooltipReference; }
 45
 046    public RectTransform exploreTooltipReference { get => view.exploreTooltipReference; }
 47
 048    public RectTransform socialTooltipReference { get => view.socialTooltipReference; }
 49
 050    public TaskbarMoreMenu moreMenu { get => view.moreMenu; }
 51
 1152    protected internal virtual TaskbarHUDView CreateView() { return TaskbarHUDView.Create(this, chatController, friendsC
 53
 54    public void Initialize(
 55        IMouseCatcher mouseCatcher,
 56        IChatController chatController,
 57        IFriendsController friendsController,
 58        ISceneController sceneController,
 59        IWorldState worldState)
 60    {
 1161        this.friendsController = friendsController;
 1162        this.mouseCatcher = mouseCatcher;
 1163        this.chatController = chatController;
 64
 1165        view = CreateView();
 66
 1167        this.sceneController = sceneController;
 1168        this.worldState = worldState;
 69
 1170        if (mouseCatcher != null)
 71        {
 172            mouseCatcher.OnMouseLock -= MouseCatcher_OnMouseLock;
 173            mouseCatcher.OnMouseUnlock -= MouseCatcher_OnMouseUnlock;
 174            mouseCatcher.OnMouseLock += MouseCatcher_OnMouseLock;
 175            mouseCatcher.OnMouseUnlock += MouseCatcher_OnMouseUnlock;
 76        }
 77
 1178        view.chatHeadsGroup.OnHeadToggleOn += ChatHeadsGroup_OnHeadOpen;
 1179        view.chatHeadsGroup.OnHeadToggleOff += ChatHeadsGroup_OnHeadClose;
 80
 1181        view.leftWindowContainerLayout.enabled = false;
 82
 1183        view.OnChatToggleOff += View_OnChatToggleOff;
 1184        view.OnChatToggleOn += View_OnChatToggleOn;
 1185        view.OnFriendsToggleOff += View_OnFriendsToggleOff;
 1186        view.OnFriendsToggleOn += View_OnFriendsToggleOn;
 1187        view.OnSettingsToggleOff += View_OnSettingsToggleOff;
 1188        view.OnSettingsToggleOn += View_OnSettingsToggleOn;
 1189        view.OnBuilderInWorldToggleOff += View_OnBuilderInWorldToggleOff;
 1190        view.OnBuilderInWorldToggleOn += View_OnBuilderInWorldToggleOn;
 1191        view.OnExploreToggleOff += View_OnExploreToggleOff;
 1192        view.OnExploreToggleOn += View_OnExploreToggleOn;
 1193        view.OnExploreV2ToggleOff += View_OnExploreV2ToggleOff;
 1194        view.OnExploreV2ToggleOn += View_OnExploreV2ToggleOn;
 1195        view.OnQuestPanelToggled -= View_OnQuestPanelToggled;
 1196        view.OnQuestPanelToggled += View_OnQuestPanelToggled;
 97
 1198        toggleFriendsTrigger = Resources.Load<InputAction_Trigger>("ToggleFriends");
 1199        toggleFriendsTrigger.OnTriggered -= ToggleFriendsTrigger_OnTriggered;
 11100        toggleFriendsTrigger.OnTriggered += ToggleFriendsTrigger_OnTriggered;
 101
 11102        closeWindowTrigger = Resources.Load<InputAction_Trigger>("CloseWindow");
 11103        closeWindowTrigger.OnTriggered -= CloseWindowTrigger_OnTriggered;
 11104        closeWindowTrigger.OnTriggered += CloseWindowTrigger_OnTriggered;
 105
 11106        toggleWorldChatTrigger = Resources.Load<InputAction_Trigger>("ToggleWorldChat");
 11107        toggleWorldChatTrigger.OnTriggered -= ToggleWorldChatTrigger_OnTriggered;
 11108        toggleWorldChatTrigger.OnTriggered += ToggleWorldChatTrigger_OnTriggered;
 109
 11110        DataStore.i.HUDs.questsPanelVisible.OnChange -= OnToggleQuestsPanelTriggered;
 11111        DataStore.i.HUDs.questsPanelVisible.OnChange += OnToggleQuestsPanelTriggered;
 112
 11113        if (chatController != null)
 114        {
 11115            chatController.OnAddMessage -= OnAddMessage;
 11116            chatController.OnAddMessage += OnAddMessage;
 117        }
 118
 11119        if (this.sceneController != null && this.worldState != null)
 120        {
 1121            this.sceneController.OnNewPortableExperienceSceneAdded += SceneController_OnNewPortableExperienceSceneAdded;
 1122            this.sceneController.OnNewPortableExperienceSceneRemoved += SceneController_OnNewPortableExperienceSceneRemo
 123
 1124            List<GlobalScene> activePortableExperiences = WorldStateUtils.GetActivePortableExperienceScenes();
 2125            for (int i = 0; i < activePortableExperiences.Count; i++)
 126            {
 0127                SceneController_OnNewPortableExperienceSceneAdded(activePortableExperiences[i]);
 128            }
 129        }
 130
 11131        view.leftWindowContainerAnimator.Show();
 132
 11133        CommonScriptableObjects.isTaskbarHUDInitialized.Set(true);
 11134        DataStore.i.builderInWorld.showTaskBar.OnChange += SetVisibility;
 135
 11136        ConfigureExploreV2Feature();
 11137    }
 138
 139    private void View_OnQuestPanelToggled(bool value)
 140    {
 0141        QuestsUIAnalytics.SendQuestLogVisibiltyChanged(value, "taskbar");
 0142        DataStore.i.HUDs.questsPanelVisible.Set(value);
 0143    }
 144
 2145    private void ChatHeadsGroup_OnHeadClose(TaskbarButton obj) { privateChatWindowHud.SetVisibility(false); }
 146
 147    private void View_OnFriendsToggleOn()
 148    {
 2149        friendsHud?.SetVisibility(true);
 2150        OnAnyTaskbarButtonClicked?.Invoke();
 0151    }
 152
 4153    private void View_OnFriendsToggleOff() { friendsHud?.SetVisibility(false); }
 154
 155    private void ToggleFriendsTrigger_OnTriggered(DCLAction_Trigger action)
 156    {
 0157        if (!view.friendsButton.gameObject.activeSelf)
 0158            return;
 159
 0160        OnFriendsToggleInputPress();
 0161    }
 162
 0163    private void ToggleWorldChatTrigger_OnTriggered(DCLAction_Trigger action) { OnWorldChatToggleInputPress(); }
 164
 165    private void OnToggleQuestsPanelTriggered(bool current, bool previous)
 166    {
 1167        bool anyInputFieldIsSelected = EventSystem.current != null &&
 168                                       EventSystem.current.currentSelectedGameObject != null &&
 169                                       EventSystem.current.currentSelectedGameObject.GetComponent<TMPro.TMP_InputField>(
 170                                       (!worldChatWindowHud.view.chatHudView.inputField.isFocused || !worldChatWindowHud
 171
 1172        if (anyInputFieldIsSelected)
 0173            return;
 174
 1175        view.questPanelButton.SetToggleState(current, false);
 1176        if (current)
 1177            view.SelectButton(view.questPanelButton);
 1178    }
 179
 0180    private void CloseWindowTrigger_OnTriggered(DCLAction_Trigger action) { OnCloseWindowToggleInputPress(); }
 181
 182    private void View_OnChatToggleOn()
 183    {
 3184        worldChatWindowHud.SetVisibility(true);
 3185        worldChatWindowHud.MarkWorldChatMessagesAsRead();
 3186        worldChatWindowHud.view.DeactivatePreview();
 3187        worldChatWindowHud.OnPressReturn();
 3188        OnAnyTaskbarButtonClicked?.Invoke();
 0189    }
 190
 191    private void View_OnChatToggleOff()
 192    {
 2193        if (view.AllButtonsToggledOff())
 194        {
 2195            worldChatWindowHud.SetVisibility(true);
 2196            worldChatWindowHud.view.ActivatePreview();
 2197        }
 198        else
 199        {
 0200            worldChatWindowHud.SetVisibility(false);
 201        }
 0202    }
 203
 204    private void ChatHeadsGroup_OnHeadOpen(TaskbarButton taskbarBtn)
 205    {
 1206        ChatHeadButton head = taskbarBtn as ChatHeadButton;
 207
 1208        if (taskbarBtn == null)
 0209            return;
 210
 1211        OpenPrivateChatWindow(head.profile.userId);
 1212    }
 213
 214    private void View_OnSettingsToggleOn()
 215    {
 0216        settingsPanelHud.SetVisibility(true);
 0217        OnAnyTaskbarButtonClicked?.Invoke();
 0218    }
 219
 0220    private void View_OnSettingsToggleOff() { settingsPanelHud.SetVisibility(false); }
 221
 222    private void View_OnBuilderInWorldToggleOn()
 223    {
 0224        OnBuilderProjectsPanelTriggered(true, false);
 0225        OnAnyTaskbarButtonClicked?.Invoke();
 0226    }
 227
 0228    private void View_OnBuilderInWorldToggleOff() { OnBuilderProjectsPanelTriggered(false, true); }
 229
 230    private void View_OnExploreToggleOn()
 231    {
 0232        exploreHud.SetVisibility(true);
 0233        OnAnyTaskbarButtonClicked?.Invoke();
 0234    }
 235
 2236    private void View_OnExploreToggleOff() { exploreHud.SetVisibility(false); }
 237
 238    private void View_OnExploreV2ToggleOn()
 239    {
 0240        if (!DataStore.i.exploreV2.isOpen.Get())
 241        {
 0242            var exploreV2Analytics = new ExploreV2Analytics.ExploreV2Analytics();
 0243            exploreV2Analytics.SendExploreMainMenuVisibility(
 244                true,
 245                ExploreUIVisibilityMethod.FromClick);
 246        }
 0247        DataStore.i.exploreV2.isOpen.Set(true, true);
 0248        OnAnyTaskbarButtonClicked?.Invoke();
 0249    }
 250
 251    private void View_OnExploreV2ToggleOff()
 252    {
 0253        if (!DataStore.i.exploreV2.isOpen.Get())
 254        {
 0255            var exploreV2Analytics = new ExploreV2Analytics.ExploreV2Analytics();
 0256            exploreV2Analytics.SendExploreMainMenuVisibility(
 257                false,
 258                ExploreUIVisibilityMethod.FromClick);
 259        }
 0260        DataStore.i.exploreV2.isOpen.Set(false);
 0261    }
 262
 0263    private void MouseCatcher_OnMouseUnlock() { view.leftWindowContainerAnimator.Show(); }
 264
 265    private void MouseCatcher_OnMouseLock()
 266    {
 0267        view.leftWindowContainerAnimator.Hide();
 268
 0269        foreach (var btn in view.GetButtonList())
 270        {
 0271            btn.SetToggleState(false);
 272        }
 273
 0274        worldChatWindowHud.SetVisibility(true);
 0275        worldChatWindowHud.view.ActivatePreview();
 276
 0277        MarkWorldChatAsReadIfOtherWindowIsOpen();
 0278    }
 279
 280    public void SetBuilderInWorldStatus(bool isActive)
 281    {
 0282        view.SetBuilderInWorldStatus(isActive);
 0283        DataStore.i.HUDs.builderProjectsPanelVisible.OnChange -= OnBuilderProjectsPanelTriggered;
 284
 0285        if (isActive)
 0286            DataStore.i.HUDs.builderProjectsPanelVisible.OnChange += OnBuilderProjectsPanelTriggered;
 0287    }
 288
 0289    public void SetQuestsPanelStatus(bool isActive) { view.SetQuestsPanelStatus(isActive); }
 290
 291    public void AddWorldChatWindow(WorldChatWindowHUDController controller)
 292    {
 2293        if (controller == null || controller.view == null)
 294        {
 0295            Debug.LogWarning("AddChatWindow >>> World Chat Window doesn't exist yet!");
 0296            return;
 297        }
 298
 2299        if (controller.view.transform.parent == view.leftWindowContainer)
 0300            return;
 301
 2302        controller.view.transform.SetParent(view.leftWindowContainer, false);
 303
 2304        worldChatWindowHud = controller;
 305
 2306        view.OnAddChatWindow();
 2307        worldChatWindowHud.view.OnClose += () => { view.friendsButton.SetToggleState(false, false); };
 308
 2309        view.chatButton.SetToggleState(true);
 2310        view.chatButton.SetToggleState(false);
 2311    }
 312
 0313    public void OpenFriendsWindow() { view.friendsButton.SetToggleState(true); }
 314
 315    public void OpenPrivateChatTo(string userId)
 316    {
 0317        var button = view.chatHeadsGroup.AddChatHead(userId, (ulong) System.DateTimeOffset.UtcNow.ToUnixTimeMilliseconds
 0318        button.toggleButton.onClick.Invoke();
 0319    }
 320
 321    public void AddPrivateChatWindow(PrivateChatWindowHUDController controller)
 322    {
 2323        if (controller == null || controller.view == null)
 324        {
 0325            Debug.LogWarning("AddPrivateChatWindow >>> Private Chat Window doesn't exist yet!");
 0326            return;
 327        }
 328
 2329        if (controller.view.transform.parent == view.leftWindowContainer)
 0330            return;
 331
 2332        controller.view.transform.SetParent(view.leftWindowContainer, false);
 333
 2334        privateChatWindowHud = controller;
 335
 2336        privateChatWindowHud.view.OnMinimize += () =>
 337        {
 0338            ChatHeadButton btn = view.GetButtonList()
 339                                     .FirstOrDefault(
 0340                                         (x) => x is ChatHeadButton &&
 341                                                (x as ChatHeadButton).profile.userId == privateChatWindowHud.conversatio
 342                ChatHeadButton;
 343
 0344            if (btn != null)
 0345                btn.SetToggleState(false, false);
 346
 0347            MarkWorldChatAsReadIfOtherWindowIsOpen();
 0348        };
 349
 2350        privateChatWindowHud.view.OnClose += () =>
 351        {
 0352            ChatHeadButton btn = view.GetButtonList()
 353                                     .FirstOrDefault(
 0354                                         (x) => x is ChatHeadButton &&
 355                                                (x as ChatHeadButton).profile.userId == privateChatWindowHud.conversatio
 356                ChatHeadButton;
 357
 0358            if (btn != null)
 359            {
 0360                btn.SetToggleState(false, false);
 0361                view.chatHeadsGroup.RemoveChatHead(btn);
 362            }
 363
 0364            MarkWorldChatAsReadIfOtherWindowIsOpen();
 0365        };
 2366    }
 367
 368    public void AddFriendsWindow(FriendsHUDController controller)
 369    {
 3370        if (controller == null || controller.view == null)
 371        {
 0372            Debug.LogWarning("AddFriendsWindow >>> Friends window doesn't exist yet!");
 0373            return;
 374        }
 375
 3376        if (controller.view.transform.parent == view.leftWindowContainer)
 0377            return;
 378
 3379        controller.view.transform.SetParent(view.leftWindowContainer, false);
 380
 3381        friendsHud = controller;
 3382        view.OnAddFriendsWindow();
 3383        friendsHud.view.OnClose += () =>
 384        {
 0385            view.friendsButton.SetToggleState(false, false);
 0386            MarkWorldChatAsReadIfOtherWindowIsOpen();
 0387        };
 388
 3389        friendsHud.view.friendsList.OnDeleteConfirmation += (userIdToRemove) => { view.chatHeadsGroup.RemoveChatHead(use
 3390    }
 391
 392    public void AddSettingsWindow(SettingsPanelHUDController controller)
 393    {
 2394        if (controller == null)
 395        {
 0396            Debug.LogWarning("AddSettingsWindow >>> Settings window doesn't exist yet!");
 0397            return;
 398        }
 399
 2400        settingsPanelHud = controller;
 2401        view.OnAddSettingsWindow();
 2402        settingsPanelHud.OnOpen += () =>
 403        {
 0404            view.settingsButton.SetToggleState(true, false);
 0405            view.exploreButton.SetToggleState(false);
 0406            view.exploreV2Button.SetToggleState(false);
 0407        };
 2408        settingsPanelHud.OnClose += () =>
 409        {
 0410            view.settingsButton.SetToggleState(false, false);
 0411            MarkWorldChatAsReadIfOtherWindowIsOpen();
 0412        };
 2413    }
 414
 415    public void AddExploreWindow(ExploreHUDController controller)
 416    {
 2417        if (controller == null)
 418        {
 0419            Debug.LogWarning("AddExploreWindow >>> Explore window doesn't exist yet!");
 0420            return;
 421        }
 422
 2423        exploreHud = controller;
 2424        view.OnAddExploreWindow();
 2425        exploreHud.OnOpen += () =>
 426        {
 1427            view.exploreButton.SetToggleState(true, false);
 1428            view.settingsButton.SetToggleState(false);
 1429        };
 2430        exploreHud.OnClose += () =>
 431        {
 1432            view.exploreButton.SetToggleState(false, false);
 1433            MarkWorldChatAsReadIfOtherWindowIsOpen();
 1434        };
 2435    }
 436
 437    private void ConfigureExploreV2Feature()
 438    {
 11439        bool isExploreV2AlreadyInitialized = DataStore.i.exploreV2.isInitialized.Get();
 11440        if (isExploreV2AlreadyInitialized)
 0441            OnExploreV2ControllerInitialized(true, false);
 442        else
 11443            DataStore.i.exploreV2.isInitialized.OnChange += OnExploreV2ControllerInitialized;
 11444    }
 445
 446    private void OnExploreV2ControllerInitialized(bool current, bool previous)
 447    {
 0448        if (!current)
 0449            return;
 450
 0451        DataStore.i.exploreV2.isInitialized.OnChange -= OnExploreV2ControllerInitialized;
 0452        DataStore.i.exploreV2.isOpen.OnChange += OnExploreV2Open;
 0453        view.OnAddExploreV2Window();
 0454    }
 455
 456    private void OnExploreV2Open(bool current, bool previous)
 457    {
 0458        if (current)
 459        {
 0460            view.exploreV2Button.SetToggleState(true, false);
 0461            view.settingsButton.SetToggleState(false);
 0462        }
 463        else
 464        {
 0465            view.exploreV2Button.SetToggleState(false, false);
 0466            MarkWorldChatAsReadIfOtherWindowIsOpen();
 467        }
 0468    }
 469
 470    public void AddHelpAndSupportWindow(HelpAndSupportHUDController controller)
 471    {
 2472        if (controller == null || controller.view == null)
 473        {
 0474            Debug.LogWarning("AddHelpAndSupportWindow >>> Help and Support window doesn't exist yet!");
 0475            return;
 476        }
 477
 2478        helpAndSupportHud = controller;
 2479        view.OnAddHelpAndSupportWindow();
 2480        helpAndSupportHud.view.OnClose += () => { MarkWorldChatAsReadIfOtherWindowIsOpen(); };
 2481    }
 482
 0483    public void OnAddVoiceChat() { view.OnAddVoiceChat(); }
 484
 4485    public void AddControlsMoreOption() { view.OnAddControlsMoreOption(); }
 486
 487    public void DisableFriendsWindow()
 488    {
 0489        view.friendsButton.gameObject.SetActive(false);
 0490        view.chatHeadsGroup.ClearChatHeads();
 0491    }
 492
 493    private void OpenPrivateChatWindow(string userId)
 494    {
 1495        privateChatWindowHud.Configure(userId);
 1496        privateChatWindowHud.SetVisibility(true);
 1497        privateChatWindowHud.ForceFocus();
 1498        OnAnyTaskbarButtonClicked?.Invoke();
 0499    }
 500
 501    public void Dispose()
 502    {
 11503        if (view != null)
 504        {
 11505            view.chatHeadsGroup.OnHeadToggleOn -= ChatHeadsGroup_OnHeadOpen;
 11506            view.chatHeadsGroup.OnHeadToggleOff -= ChatHeadsGroup_OnHeadClose;
 507
 11508            view.OnChatToggleOff -= View_OnChatToggleOff;
 11509            view.OnChatToggleOn -= View_OnChatToggleOn;
 11510            view.OnFriendsToggleOff -= View_OnFriendsToggleOff;
 11511            view.OnFriendsToggleOn -= View_OnFriendsToggleOn;
 11512            view.OnSettingsToggleOff -= View_OnSettingsToggleOff;
 11513            view.OnSettingsToggleOn -= View_OnSettingsToggleOn;
 11514            view.OnBuilderInWorldToggleOff -= View_OnBuilderInWorldToggleOff;
 11515            view.OnBuilderInWorldToggleOn -= View_OnBuilderInWorldToggleOn;
 11516            view.OnExploreToggleOff -= View_OnExploreToggleOff;
 11517            view.OnExploreToggleOn -= View_OnExploreToggleOn;
 11518            view.OnExploreV2ToggleOff -= View_OnExploreV2ToggleOff;
 11519            view.OnExploreV2ToggleOn -= View_OnExploreV2ToggleOn;
 11520            view.OnQuestPanelToggled -= View_OnQuestPanelToggled;
 521
 11522            CoroutineStarter.Stop(view.moreMenu.moreMenuAnimationsCoroutine);
 11523            UnityEngine.Object.Destroy(view.gameObject);
 524        }
 525
 11526        if (mouseCatcher != null)
 527        {
 1528            mouseCatcher.OnMouseLock -= MouseCatcher_OnMouseLock;
 1529            mouseCatcher.OnMouseUnlock -= MouseCatcher_OnMouseUnlock;
 530        }
 531
 11532        if (toggleFriendsTrigger != null)
 11533            toggleFriendsTrigger.OnTriggered -= ToggleFriendsTrigger_OnTriggered;
 534
 11535        if (closeWindowTrigger != null)
 11536            closeWindowTrigger.OnTriggered -= CloseWindowTrigger_OnTriggered;
 537
 11538        if (toggleWorldChatTrigger != null)
 11539            toggleWorldChatTrigger.OnTriggered -= ToggleWorldChatTrigger_OnTriggered;
 540
 11541        if (chatController != null)
 11542            chatController.OnAddMessage -= OnAddMessage;
 543
 11544        if (sceneController != null)
 545        {
 1546            sceneController.OnNewPortableExperienceSceneAdded -= SceneController_OnNewPortableExperienceSceneAdded;
 1547            sceneController.OnNewPortableExperienceSceneRemoved -= SceneController_OnNewPortableExperienceSceneRemoved;
 548        }
 549
 11550        DataStore.i.HUDs.questsPanelVisible.OnChange -= OnToggleQuestsPanelTriggered;
 11551        DataStore.i.HUDs.builderProjectsPanelVisible.OnChange -= OnBuilderProjectsPanelTriggered;
 11552        DataStore.i.builderInWorld.showTaskBar.OnChange -= SetVisibility;
 11553        DataStore.i.exploreV2.isInitialized.OnChange -= OnExploreV2ControllerInitialized;
 11554        DataStore.i.exploreV2.isOpen.OnChange -= OnExploreV2Open;
 11555    }
 556
 0557    public void SetVisibility(bool visible, bool previus) { SetVisibility(visible); }
 558
 2559    public void SetVisibility(bool visible) { view.SetVisibility(visible); }
 560
 561    public void OnWorldChatToggleInputPress()
 562    {
 0563        bool anyInputFieldIsSelected = EventSystem.current != null &&
 564                                       EventSystem.current.currentSelectedGameObject != null &&
 565                                       EventSystem.current.currentSelectedGameObject.GetComponent<TMPro.TMP_InputField>(
 566
 0567        if (anyInputFieldIsSelected)
 0568            return;
 569
 0570        worldChatWindowHud.OnPressReturn();
 571
 0572        if (AnyWindowsDifferentThanChatIsOpen())
 573        {
 0574            foreach (var btn in view.GetButtonList())
 575            {
 0576                btn.SetToggleState(btn == view.chatButton);
 577            }
 578        }
 0579    }
 580
 581    public void OnCloseWindowToggleInputPress()
 582    {
 0583        if (mouseCatcher.isLocked)
 0584            return;
 585
 0586        view.chatButton.SetToggleState(true);
 0587        view.chatButton.SetToggleState(false, false);
 0588        worldChatWindowHud.view.chatHudView.ResetInputField();
 0589        worldChatWindowHud.view.ActivatePreview();
 0590    }
 591
 0592    public void SetVoiceChatRecording(bool recording) { view?.voiceChatButton.SetOnRecording(recording); }
 593
 0594    public void SetVoiceChatEnabledByScene(bool enabled) { view?.voiceChatButton.SetEnabledByScene(enabled); }
 595
 596    private void OnFriendsToggleInputPress()
 597    {
 0598        bool anyInputFieldIsSelected = EventSystem.current != null &&
 599                                       EventSystem.current.currentSelectedGameObject != null &&
 600                                       EventSystem.current.currentSelectedGameObject.GetComponent<TMPro.TMP_InputField>(
 601                                       (!worldChatWindowHud.view.chatHudView.inputField.isFocused || !worldChatWindowHud
 602
 0603        if (anyInputFieldIsSelected)
 0604            return;
 605
 0606        Utils.UnlockCursor();
 0607        view.leftWindowContainerAnimator.Show();
 0608        view.friendsButton.SetToggleState(!view.friendsButton.toggledOn);
 0609    }
 610
 611    void OnAddMessage(ChatMessage message)
 612    {
 1613        if (!AnyWindowsDifferentThanChatIsOpen() && message.messageType == ChatMessage.Type.PUBLIC)
 0614            worldChatWindowHud.MarkWorldChatMessagesAsRead((long) message.timestamp);
 1615    }
 616
 617    private bool AnyWindowsDifferentThanChatIsOpen()
 618    {
 2619        return (friendsHud != null && friendsHud.view.gameObject.activeSelf) ||
 620               (privateChatWindowHud != null && privateChatWindowHud.view.gameObject.activeSelf);
 621    }
 622
 623    private void MarkWorldChatAsReadIfOtherWindowIsOpen()
 624    {
 1625        if (!AnyWindowsDifferentThanChatIsOpen())
 0626            worldChatWindowHud.MarkWorldChatMessagesAsRead();
 1627    }
 628
 629    public void ShowTutorialOption(bool isActive)
 630    {
 0631        if (view != null && view.moreMenu != null)
 0632            view.moreMenu.ShowTutorialButton(isActive);
 0633    }
 634
 635    private void SceneController_OnNewPortableExperienceSceneAdded(IParcelScene scene)
 636    {
 0637        GlobalScene newPortableExperienceScene = scene as GlobalScene;
 638
 0639        if ( newPortableExperienceScene == null )
 640        {
 0641            Debug.LogError("Portable experience must be of type GlobalScene!");
 0642            return;
 643        }
 644
 0645        view.AddPortableExperienceElement(
 646            scene.sceneData.id,
 647            newPortableExperienceScene.sceneName,
 648            newPortableExperienceScene.iconUrl);
 0649    }
 650
 0651    private void SceneController_OnNewPortableExperienceSceneRemoved(string portableExperienceSceneIdToRemove) { view.Re
 652
 0653    public void KillPortableExperience(string portableExperienceSceneIdToKill) { WebInterface.KillPortableExperience(por
 654
 655    private void OnBuilderProjectsPanelTriggered(bool isOn, bool prev)
 656    {
 0657        if (isOn)
 658        {
 0659            OnAnyTaskbarButtonClicked?.Invoke();
 660        }
 661
 0662        DataStore.i.HUDs.builderProjectsPanelVisible.Set(isOn);
 0663        view.builderInWorldButton.SetToggleState(isOn, false);
 0664    }
 665}

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)