< Summary

Class:TaskbarHUDController
Assembly:TaskbarHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/TaskbarHUD/TaskbarHUDController.cs
Covered lines:165
Uncovered lines:135
Coverable lines:300
Total lines:599
Line coverage:55% (165 of 300)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
CreateView()0%110100%
Initialize(...)0%6.066088.46%
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%
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%
AddHelpAndSupportWindow(...)0%3.213071.43%
OnAddVoiceChat()0%2100%
AddControlsMoreOption()0%110100%
DisableFriendsWindow()0%2100%
OpenPrivateChatWindow(...)0%2.032080%
Dispose()0%8.018094.12%
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;
 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 HelpAndSupportHUDController helpAndSupportHud;
 29
 30    IMouseCatcher mouseCatcher;
 31    protected IChatController chatController;
 32    protected IFriendsController friendsController;
 33
 34    private InputAction_Trigger toggleFriendsTrigger;
 35    private InputAction_Trigger closeWindowTrigger;
 36    private InputAction_Trigger toggleWorldChatTrigger;
 37    private ISceneController sceneController;
 38    private IWorldState worldState;
 39
 40    public event System.Action OnAnyTaskbarButtonClicked;
 41
 042    public RectTransform tutorialTooltipReference { get => view.moreTooltipReference; }
 43
 044    public RectTransform exploreTooltipReference { get => view.exploreTooltipReference; }
 45
 046    public RectTransform socialTooltipReference { get => view.socialTooltipReference; }
 47
 048    public TaskbarMoreMenu moreMenu { get => view.moreMenu; }
 49
 50    protected internal virtual TaskbarHUDView CreateView()
 51    {
 1152        return TaskbarHUDView.Create(this, chatController, friendsController);
 53    }
 54
 55    public void Initialize(
 56        IMouseCatcher mouseCatcher,
 57        IChatController chatController,
 58        IFriendsController friendsController,
 59        ISceneController sceneController,
 60        IWorldState worldState)
 61    {
 1162        this.friendsController = friendsController;
 1163        this.mouseCatcher = mouseCatcher;
 1164        this.chatController = chatController;
 65
 1166        view = CreateView();
 67
 1168        this.sceneController = sceneController;
 1169        this.worldState = worldState;
 70
 1171        if (mouseCatcher != null)
 72        {
 073            mouseCatcher.OnMouseLock -= MouseCatcher_OnMouseLock;
 074            mouseCatcher.OnMouseUnlock -= MouseCatcher_OnMouseUnlock;
 075            mouseCatcher.OnMouseLock += MouseCatcher_OnMouseLock;
 076            mouseCatcher.OnMouseUnlock += MouseCatcher_OnMouseUnlock;
 77        }
 78
 1179        view.chatHeadsGroup.OnHeadToggleOn += ChatHeadsGroup_OnHeadOpen;
 1180        view.chatHeadsGroup.OnHeadToggleOff += ChatHeadsGroup_OnHeadClose;
 81
 1182        view.leftWindowContainerLayout.enabled = false;
 83
 1184        view.OnChatToggleOff += View_OnChatToggleOff;
 1185        view.OnChatToggleOn += View_OnChatToggleOn;
 1186        view.OnFriendsToggleOff += View_OnFriendsToggleOff;
 1187        view.OnFriendsToggleOn += View_OnFriendsToggleOn;
 1188        view.OnSettingsToggleOff += View_OnSettingsToggleOff;
 1189        view.OnSettingsToggleOn += View_OnSettingsToggleOn;
 1190        view.OnBuilderInWorldToggleOff += View_OnBuilderInWorldToggleOff;
 1191        view.OnBuilderInWorldToggleOn += View_OnBuilderInWorldToggleOn;
 1192        view.OnExploreToggleOff += View_OnExploreToggleOff;
 1193        view.OnExploreToggleOn += View_OnExploreToggleOn;
 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;
 11134    }
 135
 136    private void View_OnQuestPanelToggled(bool value)
 137    {
 0138        QuestsUIAnalytics.SendQuestLogVisibiltyChanged(value, "taskbar");
 0139        DataStore.i.HUDs.questsPanelVisible.Set(value);
 0140    }
 141
 2142    private void ChatHeadsGroup_OnHeadClose(TaskbarButton obj) { privateChatWindowHud.SetVisibility(false); }
 143
 144    private void View_OnFriendsToggleOn()
 145    {
 2146        friendsHud?.SetVisibility(true);
 2147        OnAnyTaskbarButtonClicked?.Invoke();
 0148    }
 149
 4150    private void View_OnFriendsToggleOff() { friendsHud?.SetVisibility(false); }
 151
 152    private void ToggleFriendsTrigger_OnTriggered(DCLAction_Trigger action)
 153    {
 0154        if (!view.friendsButton.gameObject.activeSelf)
 0155            return;
 156
 0157        OnFriendsToggleInputPress();
 0158    }
 159
 0160    private void ToggleWorldChatTrigger_OnTriggered(DCLAction_Trigger action) { OnWorldChatToggleInputPress(); }
 161
 162    private void OnToggleQuestsPanelTriggered(bool current, bool previous)
 163    {
 1164        bool anyInputFieldIsSelected = EventSystem.current != null &&
 165                                       EventSystem.current.currentSelectedGameObject != null &&
 166                                       EventSystem.current.currentSelectedGameObject.GetComponent<TMPro.TMP_InputField>(
 167                                       (!worldChatWindowHud.view.chatHudView.inputField.isFocused || !worldChatWindowHud
 168
 1169        if (anyInputFieldIsSelected)
 0170            return;
 171
 1172        view.questPanelButton.SetToggleState(current, false);
 1173        if (current)
 1174            view.SelectButton(view.questPanelButton);
 1175    }
 176
 0177    private void CloseWindowTrigger_OnTriggered(DCLAction_Trigger action) { OnCloseWindowToggleInputPress(); }
 178
 179    private void View_OnChatToggleOn()
 180    {
 3181        worldChatWindowHud.SetVisibility(true);
 3182        worldChatWindowHud.MarkWorldChatMessagesAsRead();
 3183        worldChatWindowHud.view.DeactivatePreview();
 3184        worldChatWindowHud.OnPressReturn();
 3185        OnAnyTaskbarButtonClicked?.Invoke();
 0186    }
 187
 188    private void View_OnChatToggleOff()
 189    {
 2190        if (view.AllButtonsToggledOff())
 191        {
 2192            worldChatWindowHud.SetVisibility(true);
 2193            worldChatWindowHud.view.ActivatePreview();
 2194        }
 195        else
 196        {
 0197            worldChatWindowHud.SetVisibility(false);
 198        }
 0199    }
 200
 201    private void ChatHeadsGroup_OnHeadOpen(TaskbarButton taskbarBtn)
 202    {
 1203        ChatHeadButton head = taskbarBtn as ChatHeadButton;
 204
 1205        if (taskbarBtn == null)
 0206            return;
 207
 1208        OpenPrivateChatWindow(head.profile.userId);
 1209    }
 210
 211    private void View_OnSettingsToggleOn()
 212    {
 0213        settingsPanelHud.SetVisibility(true);
 0214        OnAnyTaskbarButtonClicked?.Invoke();
 0215    }
 216
 0217    private void View_OnSettingsToggleOff() { settingsPanelHud.SetVisibility(false); }
 218
 219    private void View_OnBuilderInWorldToggleOn()
 220    {
 0221        OnBuilderProjectsPanelTriggered(true, false);
 0222        OnAnyTaskbarButtonClicked?.Invoke();
 0223    }
 224
 0225    private void View_OnBuilderInWorldToggleOff() { OnBuilderProjectsPanelTriggered(false, true); }
 226
 227    private void View_OnExploreToggleOn()
 228    {
 0229        exploreHud.SetVisibility(true);
 0230        OnAnyTaskbarButtonClicked?.Invoke();
 0231    }
 232
 2233    private void View_OnExploreToggleOff() { exploreHud.SetVisibility(false); }
 234
 0235    private void MouseCatcher_OnMouseUnlock() { view.leftWindowContainerAnimator.Show(); }
 236
 237    private void MouseCatcher_OnMouseLock()
 238    {
 0239        view.leftWindowContainerAnimator.Hide();
 240
 0241        foreach (var btn in view.GetButtonList())
 242        {
 0243            btn.SetToggleState(false);
 244        }
 245
 0246        worldChatWindowHud.SetVisibility(true);
 0247        worldChatWindowHud.view.ActivatePreview();
 248
 0249        MarkWorldChatAsReadIfOtherWindowIsOpen();
 0250    }
 251
 252    public void SetBuilderInWorldStatus(bool isActive)
 253    {
 1254        view.SetBuilderInWorldStatus(isActive);
 1255        DataStore.i.HUDs.builderProjectsPanelVisible.OnChange -= OnBuilderProjectsPanelTriggered;
 256
 1257        if (isActive)
 1258            DataStore.i.HUDs.builderProjectsPanelVisible.OnChange += OnBuilderProjectsPanelTriggered;
 1259    }
 260
 0261    public void SetQuestsPanelStatus(bool isActive) { view.SetQuestsPanelStatus(isActive); }
 262
 263    public void AddWorldChatWindow(WorldChatWindowHUDController controller)
 264    {
 2265        if (controller == null || controller.view == null)
 266        {
 0267            Debug.LogWarning("AddChatWindow >>> World Chat Window doesn't exist yet!");
 0268            return;
 269        }
 270
 2271        if (controller.view.transform.parent == view.leftWindowContainer)
 0272            return;
 273
 2274        controller.view.transform.SetParent(view.leftWindowContainer, false);
 275
 2276        worldChatWindowHud = controller;
 277
 2278        view.OnAddChatWindow();
 2279        worldChatWindowHud.view.OnClose += () => { view.friendsButton.SetToggleState(false, false); };
 280
 2281        view.chatButton.SetToggleState(true);
 2282        view.chatButton.SetToggleState(false);
 2283    }
 284
 0285    public void OpenFriendsWindow() { view.friendsButton.SetToggleState(true); }
 286
 287    public void OpenPrivateChatTo(string userId)
 288    {
 0289        var button = view.chatHeadsGroup.AddChatHead(userId, (ulong) System.DateTimeOffset.UtcNow.ToUnixTimeMilliseconds
 0290        button.toggleButton.onClick.Invoke();
 0291    }
 292
 293    public void AddPrivateChatWindow(PrivateChatWindowHUDController controller)
 294    {
 2295        if (controller == null || controller.view == null)
 296        {
 0297            Debug.LogWarning("AddPrivateChatWindow >>> Private Chat Window doesn't exist yet!");
 0298            return;
 299        }
 300
 2301        if (controller.view.transform.parent == view.leftWindowContainer)
 0302            return;
 303
 2304        controller.view.transform.SetParent(view.leftWindowContainer, false);
 305
 2306        privateChatWindowHud = controller;
 307
 2308        privateChatWindowHud.view.OnMinimize += () =>
 309        {
 0310            ChatHeadButton btn = view.GetButtonList()
 311                                     .FirstOrDefault(
 0312                                         (x) => x is ChatHeadButton &&
 313                                                (x as ChatHeadButton).profile.userId == privateChatWindowHud.conversatio
 314                ChatHeadButton;
 315
 0316            if (btn != null)
 0317                btn.SetToggleState(false, false);
 318
 0319            MarkWorldChatAsReadIfOtherWindowIsOpen();
 0320        };
 321
 2322        privateChatWindowHud.view.OnClose += () =>
 323        {
 0324            ChatHeadButton btn = view.GetButtonList()
 325                                     .FirstOrDefault(
 0326                                         (x) => x is ChatHeadButton &&
 327                                                (x as ChatHeadButton).profile.userId == privateChatWindowHud.conversatio
 328                ChatHeadButton;
 329
 0330            if (btn != null)
 331            {
 0332                btn.SetToggleState(false, false);
 0333                view.chatHeadsGroup.RemoveChatHead(btn);
 334            }
 335
 0336            MarkWorldChatAsReadIfOtherWindowIsOpen();
 0337        };
 2338    }
 339
 340    public void AddFriendsWindow(FriendsHUDController controller)
 341    {
 3342        if (controller == null || controller.view == null)
 343        {
 0344            Debug.LogWarning("AddFriendsWindow >>> Friends window doesn't exist yet!");
 0345            return;
 346        }
 347
 3348        if (controller.view.transform.parent == view.leftWindowContainer)
 0349            return;
 350
 3351        controller.view.transform.SetParent(view.leftWindowContainer, false);
 352
 3353        friendsHud = controller;
 3354        view.OnAddFriendsWindow();
 3355        friendsHud.view.OnClose += () =>
 356        {
 0357            view.friendsButton.SetToggleState(false, false);
 0358            MarkWorldChatAsReadIfOtherWindowIsOpen();
 0359        };
 360
 3361        friendsHud.view.friendsList.OnDeleteConfirmation += (userIdToRemove) => { view.chatHeadsGroup.RemoveChatHead(use
 3362    }
 363
 364    public void AddSettingsWindow(SettingsPanelHUDController controller)
 365    {
 2366        if (controller == null)
 367        {
 0368            Debug.LogWarning("AddSettingsWindow >>> Settings window doesn't exist yet!");
 0369            return;
 370        }
 371
 2372        settingsPanelHud = controller;
 2373        view.OnAddSettingsWindow();
 2374        settingsPanelHud.OnOpen += () =>
 375        {
 0376            view.settingsButton.SetToggleState(true, false);
 0377            view.exploreButton.SetToggleState(false);
 0378        };
 2379        settingsPanelHud.OnClose += () =>
 380        {
 0381            view.settingsButton.SetToggleState(false, false);
 0382            MarkWorldChatAsReadIfOtherWindowIsOpen();
 0383        };
 2384    }
 385
 386    public void AddExploreWindow(ExploreHUDController controller)
 387    {
 2388        if (controller == null)
 389        {
 0390            Debug.LogWarning("AddExploreWindow >>> Explore window doesn't exist yet!");
 0391            return;
 392        }
 393
 2394        exploreHud = controller;
 2395        view.OnAddExploreWindow();
 2396        exploreHud.OnOpen += () =>
 397        {
 1398            view.exploreButton.SetToggleState(true, false);
 1399            view.settingsButton.SetToggleState(false);
 1400        };
 2401        exploreHud.OnClose += () =>
 402        {
 1403            view.exploreButton.SetToggleState(false, false);
 1404            MarkWorldChatAsReadIfOtherWindowIsOpen();
 1405        };
 2406    }
 407
 408    public void AddHelpAndSupportWindow(HelpAndSupportHUDController controller)
 409    {
 2410        if (controller == null || controller.view == null)
 411        {
 0412            Debug.LogWarning("AddHelpAndSupportWindow >>> Help and Support window doesn't exist yet!");
 0413            return;
 414        }
 415
 2416        helpAndSupportHud = controller;
 2417        view.OnAddHelpAndSupportWindow();
 2418        helpAndSupportHud.view.OnClose += () => { MarkWorldChatAsReadIfOtherWindowIsOpen(); };
 2419    }
 420
 0421    public void OnAddVoiceChat() { view.OnAddVoiceChat(); }
 422
 4423    public void AddControlsMoreOption() { view.OnAddControlsMoreOption(); }
 424
 425    public void DisableFriendsWindow()
 426    {
 0427        view.friendsButton.gameObject.SetActive(false);
 0428        view.chatHeadsGroup.ClearChatHeads();
 0429    }
 430
 431    private void OpenPrivateChatWindow(string userId)
 432    {
 1433        privateChatWindowHud.Configure(userId);
 1434        privateChatWindowHud.SetVisibility(true);
 1435        privateChatWindowHud.ForceFocus();
 1436        OnAnyTaskbarButtonClicked?.Invoke();
 0437    }
 438
 439    public void Dispose()
 440    {
 11441        if (view != null)
 442        {
 11443            view.chatHeadsGroup.OnHeadToggleOn -= ChatHeadsGroup_OnHeadOpen;
 11444            view.chatHeadsGroup.OnHeadToggleOff -= ChatHeadsGroup_OnHeadClose;
 445
 11446            view.OnChatToggleOff -= View_OnChatToggleOff;
 11447            view.OnChatToggleOn -= View_OnChatToggleOn;
 11448            view.OnFriendsToggleOff -= View_OnFriendsToggleOff;
 11449            view.OnFriendsToggleOn -= View_OnFriendsToggleOn;
 11450            view.OnSettingsToggleOff -= View_OnSettingsToggleOff;
 11451            view.OnSettingsToggleOn -= View_OnSettingsToggleOn;
 11452            view.OnBuilderInWorldToggleOff -= View_OnBuilderInWorldToggleOff;
 11453            view.OnBuilderInWorldToggleOn -= View_OnBuilderInWorldToggleOn;
 11454            view.OnExploreToggleOff -= View_OnExploreToggleOff;
 11455            view.OnExploreToggleOn -= View_OnExploreToggleOn;
 11456            view.OnQuestPanelToggled -= View_OnQuestPanelToggled;
 457
 11458            CoroutineStarter.Stop(view.moreMenu.moreMenuAnimationsCoroutine);
 11459            UnityEngine.Object.Destroy(view.gameObject);
 460        }
 461
 11462        if (mouseCatcher != null)
 463        {
 0464            mouseCatcher.OnMouseLock -= MouseCatcher_OnMouseLock;
 0465            mouseCatcher.OnMouseUnlock -= MouseCatcher_OnMouseUnlock;
 466        }
 467
 11468        if (toggleFriendsTrigger != null)
 11469            toggleFriendsTrigger.OnTriggered -= ToggleFriendsTrigger_OnTriggered;
 470
 11471        if (closeWindowTrigger != null)
 11472            closeWindowTrigger.OnTriggered -= CloseWindowTrigger_OnTriggered;
 473
 11474        if (toggleWorldChatTrigger != null)
 11475            toggleWorldChatTrigger.OnTriggered -= ToggleWorldChatTrigger_OnTriggered;
 476
 11477        if (chatController != null)
 11478            chatController.OnAddMessage -= OnAddMessage;
 479
 11480        if (sceneController != null)
 481        {
 1482            sceneController.OnNewPortableExperienceSceneAdded -= SceneController_OnNewPortableExperienceSceneAdded;
 1483            sceneController.OnNewPortableExperienceSceneRemoved -= SceneController_OnNewPortableExperienceSceneRemoved;
 484        }
 485
 11486        DataStore.i.HUDs.questsPanelVisible.OnChange -= OnToggleQuestsPanelTriggered;
 11487        DataStore.i.HUDs.builderProjectsPanelVisible.OnChange -= OnBuilderProjectsPanelTriggered;
 11488        DataStore.i.builderInWorld.showTaskBar.OnChange -= SetVisibility;
 11489    }
 490
 0491    public void SetVisibility(bool visible, bool previus) { SetVisibility(visible); }
 492
 2493    public void SetVisibility(bool visible) { view.SetVisibility(visible); }
 494
 495    public void OnWorldChatToggleInputPress()
 496    {
 0497        bool anyInputFieldIsSelected = EventSystem.current != null &&
 498                                       EventSystem.current.currentSelectedGameObject != null &&
 499                                       EventSystem.current.currentSelectedGameObject.GetComponent<TMPro.TMP_InputField>(
 500
 0501        if (anyInputFieldIsSelected)
 0502            return;
 503
 0504        worldChatWindowHud.OnPressReturn();
 505
 0506        if (AnyWindowsDifferentThanChatIsOpen())
 507        {
 0508            foreach (var btn in view.GetButtonList())
 509            {
 0510                btn.SetToggleState(btn == view.chatButton);
 511            }
 512        }
 0513    }
 514
 515    public void OnCloseWindowToggleInputPress()
 516    {
 0517        if (mouseCatcher.isLocked)
 0518            return;
 519
 0520        view.chatButton.SetToggleState(true);
 0521        view.chatButton.SetToggleState(false, false);
 0522        worldChatWindowHud.view.chatHudView.ResetInputField();
 0523        worldChatWindowHud.view.ActivatePreview();
 0524    }
 525
 0526    public void SetVoiceChatRecording(bool recording) { view?.voiceChatButton.SetOnRecording(recording); }
 527
 0528    public void SetVoiceChatEnabledByScene(bool enabled) { view?.voiceChatButton.SetEnabledByScene(enabled); }
 529
 530    private void OnFriendsToggleInputPress()
 531    {
 0532        bool anyInputFieldIsSelected = EventSystem.current != null &&
 533                                       EventSystem.current.currentSelectedGameObject != null &&
 534                                       EventSystem.current.currentSelectedGameObject.GetComponent<TMPro.TMP_InputField>(
 535                                       (!worldChatWindowHud.view.chatHudView.inputField.isFocused || !worldChatWindowHud
 536
 0537        if (anyInputFieldIsSelected)
 0538            return;
 539
 0540        Utils.UnlockCursor();
 0541        view.leftWindowContainerAnimator.Show();
 0542        view.friendsButton.SetToggleState(!view.friendsButton.toggledOn);
 0543    }
 544
 545    void OnAddMessage(ChatMessage message)
 546    {
 1547        if (!AnyWindowsDifferentThanChatIsOpen() && message.messageType == ChatMessage.Type.PUBLIC)
 0548            worldChatWindowHud.MarkWorldChatMessagesAsRead((long) message.timestamp);
 1549    }
 550
 551    private bool AnyWindowsDifferentThanChatIsOpen()
 552    {
 2553        return (friendsHud != null && friendsHud.view.gameObject.activeSelf) ||
 554               (privateChatWindowHud != null && privateChatWindowHud.view.gameObject.activeSelf);
 555    }
 556
 557    private void MarkWorldChatAsReadIfOtherWindowIsOpen()
 558    {
 1559        if (!AnyWindowsDifferentThanChatIsOpen())
 0560            worldChatWindowHud.MarkWorldChatMessagesAsRead();
 1561    }
 562
 563    public void ShowTutorialOption(bool isActive)
 564    {
 0565        if (view != null && view.moreMenu != null)
 0566            view.moreMenu.ShowTutorialButton(isActive);
 0567    }
 568
 569    private void SceneController_OnNewPortableExperienceSceneAdded(IParcelScene scene)
 570    {
 0571        GlobalScene newPortableExperienceScene = scene as GlobalScene;
 572
 0573        if ( newPortableExperienceScene == null )
 574        {
 0575            Debug.LogError("Portable experience must be of type GlobalScene!");
 0576            return;
 577        }
 578
 0579        view.AddPortableExperienceElement(
 580            scene.sceneData.id,
 581            newPortableExperienceScene.sceneName,
 582            newPortableExperienceScene.iconUrl);
 0583    }
 584
 0585    private void SceneController_OnNewPortableExperienceSceneRemoved(string portableExperienceSceneIdToRemove) { view.Re
 586
 0587    public void KillPortableExperience(string portableExperienceSceneIdToKill) { WebInterface.KillPortableExperience(por
 588
 589    private void OnBuilderProjectsPanelTriggered(bool isOn, bool prev)
 590    {
 0591        if (isOn)
 592        {
 0593            OnAnyTaskbarButtonClicked?.Invoke();
 594        }
 595
 0596        DataStore.i.HUDs.builderProjectsPanelVisible.Set(isOn);
 0597        view.builderInWorldButton.SetToggleState(isOn, false);
 0598    }
 599}

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()
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)
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)