< Summary

Class:PlayerInfoCardHUDView
Assembly:PlayerInfoCardHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/PlayerInfoCardHUD/PlayerInfoCardHUDView.cs
Covered lines:83
Uncovered lines:23
Coverable lines:106
Total lines:275
Line coverage:78.3% (83 of 106)
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.143075%
UpdateTabs()0%220100%
SetFaceSnapshot(...)0%2100%
SetName(...)0%110100%
SetDescription(...)0%220100%
HideFriendshipInteraction()0%2100%
UpdateFriendshipInteraction(...)0%7.27084%
SetIsBlocked(...)0%110100%
SetVisibility(...)0%12300%
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 DCL;
 2using DCL.Helpers;
 3using DCL.Social.Friends;
 4using System;
 5using System.Collections.Generic;
 6using TMPro;
 7using UnityEngine;
 8using UnityEngine.Events;
 9using UnityEngine.UI;
 10
 11public class PlayerInfoCardHUDView : MonoBehaviour
 12{
 13    private const string PREFAB_PATH = "PlayerInfoCardHUD";
 14
 15    public enum Tabs
 16    {
 17        Passport,
 18        Trade,
 19        Block
 20    }
 21
 22    [Serializable]
 23    internal class TabsMapping
 24    {
 25        public GameObject container;
 26        public Toggle toggle;
 27        public Tabs tab;
 28    }
 29
 30    [SerializeField] internal GenericFactory collectiblesFactory;
 31    [SerializeField] internal Canvas cardCanvas;
 32    [SerializeField] internal TabsMapping[] tabsMapping;
 33    [SerializeField] internal Button hideCardButton;
 34
 35    [Space][SerializeField] internal RawImage avatarPicture;
 36    [SerializeField] internal Image blockedAvatarOverlay;
 37    [SerializeField] internal TextMeshProUGUI name;
 38
 39    [Header("Friends")][SerializeField] internal GameObject friendStatusContainer;
 40    [SerializeField] internal Button requestSentButton;
 41    [SerializeField] internal Button addFriendButton;
 42    [SerializeField] internal GameObject alreadyFriendsContainer;
 43    [SerializeField] internal GameObject requestReceivedContainer;
 44    [SerializeField] internal Button acceptRequestButton;
 45    [SerializeField] internal Button rejectRequestButton;
 46
 47    [Header("Passport")][SerializeField] internal TextMeshProUGUI description;
 48
 49    [Header("Trade")][SerializeField] private RectTransform wearablesContainer;
 50    [SerializeField] private GameObject emptyCollectiblesImage;
 51
 52    [Header("Block")][SerializeField] internal Button reportPlayerButton;
 53    [SerializeField] internal Button blockPlayerButton;
 54    [SerializeField] internal Button unblockPlayerButton;
 55
 2756    internal readonly List<PlayerInfoCollectibleItem> playerInfoCollectibles = new List<PlayerInfoCollectibleItem>(10);
 16657    private UnityAction<bool> toggleChangedDelegate => (x) => UpdateTabs();
 58
 59    private MouseCatcher mouseCatcher;
 60    private HUDCanvasCameraModeController hudCanvasCameraModeController;
 61
 5262    private void Awake() { hudCanvasCameraModeController = new HUDCanvasCameraModeController(GetComponent<Canvas>(), Dat
 63
 64    public static PlayerInfoCardHUDView CreateView()
 65    {
 2666        return Instantiate(Resources.Load<GameObject>(PREFAB_PATH)).GetComponent<PlayerInfoCardHUDView>();
 67    }
 68
 69    public void Initialize(UnityAction cardClosedCallback,
 70        UnityAction reportPlayerCallback,
 71        UnityAction blockPlayerCallback,
 72        UnityAction unblockPlayerCallback,
 73        UnityAction addFriendCallback,
 74        UnityAction cancelInvitation,
 75        UnityAction acceptFriendRequest,
 76        UnityAction rejectFriendRequest)
 77    {
 2778        hideCardButton.onClick.RemoveAllListeners();
 2779        hideCardButton.onClick.AddListener(cardClosedCallback);
 80
 2781        reportPlayerButton.onClick.RemoveAllListeners();
 2782        reportPlayerButton.onClick.AddListener(reportPlayerCallback);
 83
 2784        blockPlayerButton.onClick.RemoveAllListeners();
 2785        blockPlayerButton.onClick.AddListener(blockPlayerCallback);
 86
 2787        unblockPlayerButton.onClick.RemoveAllListeners();
 2788        unblockPlayerButton.onClick.AddListener(unblockPlayerCallback);
 89
 2790        addFriendButton.onClick.RemoveAllListeners();
 2791        addFriendButton.onClick.AddListener(addFriendCallback);
 92
 2793        requestSentButton.onClick.RemoveAllListeners();
 2794        requestSentButton.onClick.AddListener(cancelInvitation);
 95
 2796        acceptRequestButton.onClick.RemoveAllListeners();
 2797        acceptRequestButton.onClick.AddListener(acceptFriendRequest);
 98
 2799        rejectRequestButton.onClick.RemoveAllListeners();
 27100        rejectRequestButton.onClick.AddListener(rejectFriendRequest);
 101
 216102        for (int index = 0; index < tabsMapping.Length; index++)
 103        {
 81104            var tab = tabsMapping[index];
 81105            tab.toggle.onValueChanged.RemoveListener(toggleChangedDelegate);
 81106            tab.toggle.onValueChanged.AddListener(toggleChangedDelegate);
 107        }
 108
 54109        for (int index = 0; index < tabsMapping.Length; index++)
 110        {
 27111            if (tabsMapping[index].tab == Tabs.Passport)
 112            {
 27113                tabsMapping[index].toggle.isOn = true;
 27114                break;
 115            }
 116        }
 117
 27118        if (SceneReferences.i != null)
 119        {
 27120            var mouseCatcher = SceneReferences.i.mouseCatcher;
 121
 27122            if (mouseCatcher != null)
 123            {
 0124                this.mouseCatcher = mouseCatcher;
 0125                mouseCatcher.OnMouseDown += OnPointerDown;
 126            }
 127        }
 27128    }
 129
 130    public void SetCardActive(bool active)
 131    {
 46132        if (active && mouseCatcher != null)
 133        {
 0134            mouseCatcher.UnlockCursor();
 135        }
 136
 46137        cardCanvas.enabled = active;
 46138    }
 139
 140    private void UpdateTabs()
 141    {
 32142        for (int index = 0; index < tabsMapping.Length; index++)
 143        {
 12144            tabsMapping[index].container.SetActive(tabsMapping[index].toggle.isOn);
 145        }
 4146    }
 147
 148    public void SetFaceSnapshot(Texture2D texture)
 149    {
 0150        avatarPicture.texture = texture;
 0151    }
 152
 31153    public void SetName(string name) => this.name.text = name;
 154
 155    public void SetDescription(string description)
 156    {
 31157        if (description != null)
 29158            this.description.text = description;
 31159    }
 160
 161    public void HideFriendshipInteraction()
 162    {
 0163        requestReceivedContainer.SetActive(false);
 0164        addFriendButton.gameObject.SetActive(false);
 0165        alreadyFriendsContainer.SetActive(false);
 0166        requestSentButton.gameObject.SetActive(false);
 0167    }
 168
 169    public void UpdateFriendshipInteraction(bool canUseFriendButton,
 170        UserStatus status)
 171    {
 31172        if (status == null)
 173        {
 27174            requestReceivedContainer.SetActive(false);
 27175            addFriendButton.gameObject.SetActive(false);
 27176            alreadyFriendsContainer.SetActive(false);
 27177            requestSentButton.gameObject.SetActive(false);
 27178            return;
 179        }
 180
 4181        friendStatusContainer.SetActive(canUseFriendButton);
 182
 4183        if (!canUseFriendButton)
 184        {
 0185            addFriendButton.gameObject.SetActive(false);
 0186            alreadyFriendsContainer.SetActive(false);
 0187            requestSentButton.gameObject.SetActive(false);
 0188            return;
 189        }
 190
 4191        addFriendButton.gameObject.SetActive(false);
 4192        alreadyFriendsContainer.SetActive(false);
 4193        requestReceivedContainer.SetActive(false);
 4194        requestSentButton.gameObject.SetActive(false);
 195
 4196        switch (status.friendshipStatus)
 197        {
 198            case FriendshipStatus.NOT_FRIEND:
 1199                addFriendButton.gameObject.SetActive(true);
 1200                break;
 201            case FriendshipStatus.FRIEND:
 1202                alreadyFriendsContainer.SetActive(true);
 1203                break;
 204            case FriendshipStatus.REQUESTED_FROM:
 1205                requestReceivedContainer.SetActive(true);
 1206                break;
 207            case FriendshipStatus.REQUESTED_TO:
 1208                requestSentButton.gameObject.SetActive(true);
 209                break;
 210        }
 1211    }
 212
 213    public void SetIsBlocked(bool isBlocked)
 214    {
 31215        unblockPlayerButton.gameObject.SetActive(isBlocked);
 31216        blockedAvatarOverlay.gameObject.SetActive(isBlocked);
 31217    }
 218
 219    public void SetVisibility(bool visible)
 220    {
 0221        if (gameObject.activeSelf != visible)
 222        {
 0223            if (visible)
 224            {
 0225                AudioScriptableObjects.dialogOpen.Play(true);
 226            }
 227            else
 228            {
 0229                AudioScriptableObjects.dialogClose.Play(true);
 230            }
 231        }
 232
 0233        gameObject.SetActive(visible);
 0234    }
 235
 236    public void ClearCollectibles()
 237    {
 192238        for (var i = playerInfoCollectibles.Count - 1; i >= 0; i--)
 239        {
 65240            var playerInfoCollectible = playerInfoCollectibles[i];
 65241            playerInfoCollectibles.RemoveAt(i);
 65242            Destroy(playerInfoCollectible.gameObject);
 243        }
 31244    }
 245
 246    public void SetWearables(IEnumerable<WearableItem> wearables)
 247    {
 31248        var emptyWearables = true;
 249
 372250        foreach (var wearable in wearables)
 251        {
 155252            emptyWearables = false;
 155253            var playerInfoCollectible =
 254                collectiblesFactory.Instantiate<PlayerInfoCollectibleItem>(wearable.rarity,
 255                    wearablesContainer.transform);
 155256            if (playerInfoCollectible == null) continue;
 155257            playerInfoCollectibles.Add(playerInfoCollectible);
 155258            playerInfoCollectible.Initialize(wearable);
 259        }
 260
 31261        emptyCollectiblesImage.SetActive(emptyWearables);
 31262    }
 263
 264    private void OnPointerDown()
 265    {
 0266        hideCardButton.onClick.Invoke();
 0267    }
 268
 269    private void OnDestroy()
 270    {
 26271        hudCanvasCameraModeController?.Dispose();
 26272        if (mouseCatcher != null)
 0273            mouseCatcher.OnMouseDown -= OnPointerDown;
 26274    }
 275}