< Summary

Class:PlayerInfoCardHUDView
Assembly:PlayerInfoCardHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/PlayerInfoCardHUD/PlayerInfoCardHUDView.cs
Covered lines:87
Uncovered lines:21
Coverable lines:108
Total lines:277
Line coverage:80.5% (87 of 108)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
PlayerInfoCardHUDView()0%110100%
Awake()0%110100%
CreateView()0%110100%
Initialize(...)0%6.026091.18%
SetCardActive(...)0%3.073080%
UpdateTabs()0%220100%
SetFaceSnapshot(...)0%2100%
SetName(...)0%110100%
SetDescription(...)0%220100%
HideFriendshipInteraction()0%2100%
UpdateFriendshipInteraction(...)0%7.27084%
SetIsBlocked(...)0%110100%
SetVisibility(...)0%4.683042.86%
ClearCollectibles()0%220100%
SetWearables(...)0%440100%
OnPointerDown()0%2100%
OnDestroy()0%3.143075%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/PlayerInfoCardHUD/PlayerInfoCardHUDView.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using DCL;
 5using DCL.Helpers;
 6using TMPro;
 7using UnityEngine;
 8using UnityEngine.Assertions;
 9using UnityEngine.Events;
 10using UnityEngine.UI;
 11
 12public class PlayerInfoCardHUDView : MonoBehaviour
 13{
 14    private const string PREFAB_PATH = "PlayerInfoCardHUD";
 15
 16    public enum Tabs
 17    {
 18        Passport,
 19        Trade,
 20        Block
 21    }
 22
 23    [Serializable]
 24    internal class TabsMapping
 25    {
 26        public GameObject container;
 27        public Toggle toggle;
 28        public Tabs tab;
 29    }
 30
 31    [SerializeField] internal GenericFactory collectiblesFactory;
 32    [SerializeField] internal Canvas cardCanvas;
 33    [SerializeField] internal TabsMapping[] tabsMapping;
 34    [SerializeField] internal Button hideCardButton;
 35
 36    [Space][SerializeField] internal RawImage avatarPicture;
 37    [SerializeField] internal Image blockedAvatarOverlay;
 38    [SerializeField] internal TextMeshProUGUI name;
 39
 40    [Header("Friends")][SerializeField] internal GameObject friendStatusContainer;
 41    [SerializeField] internal Button requestSentButton;
 42    [SerializeField] internal Button addFriendButton;
 43    [SerializeField] internal GameObject alreadyFriendsContainer;
 44    [SerializeField] internal GameObject requestReceivedContainer;
 45    [SerializeField] internal Button acceptRequestButton;
 46    [SerializeField] internal Button rejectRequestButton;
 47
 48    [Header("Passport")][SerializeField] internal TextMeshProUGUI description;
 49
 50    [Header("Trade")][SerializeField] private RectTransform wearablesContainer;
 51    [SerializeField] private GameObject emptyCollectiblesImage;
 52
 53    [Header("Block")][SerializeField] internal Button reportPlayerButton;
 54    [SerializeField] internal Button blockPlayerButton;
 55    [SerializeField] internal Button unblockPlayerButton;
 56
 2857    internal readonly List<PlayerInfoCollectibleItem> playerInfoCollectibles = new List<PlayerInfoCollectibleItem>(10);
 458    private UnityAction<bool> toggleChangedDelegate => (x) => UpdateTabs();
 59
 60    private MouseCatcher mouseCatcher;
 61    private HUDCanvasCameraModeController hudCanvasCameraModeController;
 62
 5463    private void Awake() { hudCanvasCameraModeController = new HUDCanvasCameraModeController(GetComponent<Canvas>(), Dat
 64
 65    public static PlayerInfoCardHUDView CreateView()
 66    {
 2767        return Instantiate(Resources.Load<GameObject>(PREFAB_PATH)).GetComponent<PlayerInfoCardHUDView>();
 68    }
 69
 70    public void Initialize(UnityAction cardClosedCallback,
 71        UnityAction reportPlayerCallback,
 72        UnityAction blockPlayerCallback,
 73        UnityAction unblockPlayerCallback,
 74        UnityAction addFriendCallback,
 75        UnityAction cancelInvitation,
 76        UnityAction acceptFriendRequest,
 77        UnityAction rejectFriendRequest)
 78    {
 2879        hideCardButton.onClick.RemoveAllListeners();
 2880        hideCardButton.onClick.AddListener(cardClosedCallback);
 81
 2882        reportPlayerButton.onClick.RemoveAllListeners();
 2883        reportPlayerButton.onClick.AddListener(reportPlayerCallback);
 84
 2885        blockPlayerButton.onClick.RemoveAllListeners();
 2886        blockPlayerButton.onClick.AddListener(blockPlayerCallback);
 87
 2888        unblockPlayerButton.onClick.RemoveAllListeners();
 2889        unblockPlayerButton.onClick.AddListener(unblockPlayerCallback);
 90
 2891        addFriendButton.onClick.RemoveAllListeners();
 2892        addFriendButton.onClick.AddListener(addFriendCallback);
 93
 2894        requestSentButton.onClick.RemoveAllListeners();
 2895        requestSentButton.onClick.AddListener(cancelInvitation);
 96
 2897        acceptRequestButton.onClick.RemoveAllListeners();
 2898        acceptRequestButton.onClick.AddListener(acceptFriendRequest);
 99
 28100        rejectRequestButton.onClick.RemoveAllListeners();
 28101        rejectRequestButton.onClick.AddListener(rejectFriendRequest);
 102
 224103        for (int index = 0; index < tabsMapping.Length; index++)
 104        {
 84105            var tab = tabsMapping[index];
 84106            tab.toggle.onValueChanged.RemoveListener(toggleChangedDelegate);
 84107            tab.toggle.onValueChanged.AddListener(toggleChangedDelegate);
 108        }
 109
 56110        for (int index = 0; index < tabsMapping.Length; index++)
 111        {
 28112            if (tabsMapping[index].tab == Tabs.Passport)
 113            {
 28114                tabsMapping[index].toggle.isOn = true;
 28115                break;
 116            }
 117        }
 118
 28119        if (SceneReferences.i != null)
 120        {
 28121            var mouseCatcher = DCL.SceneReferences.i.mouseCatcher;
 122
 28123            if (mouseCatcher != null)
 124            {
 0125                this.mouseCatcher = mouseCatcher;
 0126                mouseCatcher.OnMouseDown += OnPointerDown;
 127            }
 128        }
 28129    }
 130
 131    public void SetCardActive(bool active)
 132    {
 47133        if (active && mouseCatcher != null)
 134        {
 0135            mouseCatcher.UnlockCursor();
 136        }
 137
 47138        cardCanvas.enabled = active;
 47139        CommonScriptableObjects.playerInfoCardVisibleState.Set(active);
 47140    }
 141
 142    private void UpdateTabs()
 143    {
 32144        for (int index = 0; index < tabsMapping.Length; index++)
 145        {
 12146            tabsMapping[index].container.SetActive(tabsMapping[index].toggle.isOn);
 147        }
 4148    }
 149
 150    public void SetFaceSnapshot(Texture2D texture)
 151    {
 0152        avatarPicture.texture = texture;
 0153    }
 154
 31155    public void SetName(string name) => this.name.text = name;
 156
 157    public void SetDescription(string description)
 158    {
 31159        if (description != null)
 26160            this.description.text = description;
 31161    }
 162
 163    public void HideFriendshipInteraction()
 164    {
 0165        requestReceivedContainer.SetActive(false);
 0166        addFriendButton.gameObject.SetActive(false);
 0167        alreadyFriendsContainer.SetActive(false);
 0168        requestSentButton.gameObject.SetActive(false);
 0169    }
 170
 171    public void UpdateFriendshipInteraction(bool canUseFriendButton,
 172        UserStatus status)
 173    {
 31174        if (status == null)
 175        {
 27176            requestReceivedContainer.SetActive(false);
 27177            addFriendButton.gameObject.SetActive(false);
 27178            alreadyFriendsContainer.SetActive(false);
 27179            requestSentButton.gameObject.SetActive(false);
 27180            return;
 181        }
 182
 4183        friendStatusContainer.SetActive(canUseFriendButton);
 184
 4185        if (!canUseFriendButton)
 186        {
 0187            addFriendButton.gameObject.SetActive(false);
 0188            alreadyFriendsContainer.SetActive(false);
 0189            requestSentButton.gameObject.SetActive(false);
 0190            return;
 191        }
 192
 4193        addFriendButton.gameObject.SetActive(false);
 4194        alreadyFriendsContainer.SetActive(false);
 4195        requestReceivedContainer.SetActive(false);
 4196        requestSentButton.gameObject.SetActive(false);
 197
 4198        switch (status.friendshipStatus)
 199        {
 200            case FriendshipStatus.NOT_FRIEND:
 1201                addFriendButton.gameObject.SetActive(true);
 1202                break;
 203            case FriendshipStatus.FRIEND:
 1204                alreadyFriendsContainer.SetActive(true);
 1205                break;
 206            case FriendshipStatus.REQUESTED_FROM:
 1207                requestReceivedContainer.SetActive(true);
 1208                break;
 209            case FriendshipStatus.REQUESTED_TO:
 1210                requestSentButton.gameObject.SetActive(true);
 211                break;
 212        }
 1213    }
 214
 215    public void SetIsBlocked(bool isBlocked)
 216    {
 31217        unblockPlayerButton.gameObject.SetActive(isBlocked);
 31218        blockedAvatarOverlay.gameObject.SetActive(isBlocked);
 31219    }
 220
 221    public void SetVisibility(bool visible)
 222    {
 1223        if (gameObject.activeSelf != visible)
 224        {
 0225            if (visible)
 226            {
 0227                AudioScriptableObjects.dialogOpen.Play(true);
 0228            }
 229            else
 230            {
 0231                AudioScriptableObjects.dialogClose.Play(true);
 232            }
 233        }
 234
 1235        gameObject.SetActive(visible);
 1236    }
 237
 238    public void ClearCollectibles()
 239    {
 192240        for (var i = playerInfoCollectibles.Count - 1; i >= 0; i--)
 241        {
 65242            var playerInfoCollectible = playerInfoCollectibles[i];
 65243            playerInfoCollectibles.RemoveAt(i);
 65244            Destroy(playerInfoCollectible.gameObject);
 245        }
 31246    }
 247
 248    public void SetWearables(IEnumerable<WearableItem> wearables)
 249    {
 31250        var emptyWearables = true;
 251
 372252        foreach (var wearable in wearables)
 253        {
 155254            emptyWearables = false;
 155255            var playerInfoCollectible =
 256                collectiblesFactory.Instantiate<PlayerInfoCollectibleItem>(wearable.rarity,
 257                    wearablesContainer.transform);
 155258            if (playerInfoCollectible == null) continue;
 155259            playerInfoCollectibles.Add(playerInfoCollectible);
 155260            playerInfoCollectible.Initialize(wearable);
 261        }
 262
 31263        emptyCollectiblesImage.SetActive(emptyWearables);
 31264    }
 265
 266    private void OnPointerDown()
 267    {
 0268        hideCardButton.onClick.Invoke();
 0269    }
 270
 271    private void OnDestroy()
 272    {
 27273        hudCanvasCameraModeController?.Dispose();
 27274        if (mouseCatcher != null)
 0275            mouseCatcher.OnMouseDown -= OnPointerDown;
 27276    }
 277}