< 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:20
Coverable lines:107
Total lines:278
Line coverage:81.3% (87 of 107)
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.123050%
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 DCL.Social.Friends;
 7using TMPro;
 8using UnityEngine;
 9using UnityEngine.Assertions;
 10using UnityEngine.Events;
 11using UnityEngine.UI;
 12
 13public class PlayerInfoCardHUDView : MonoBehaviour
 14{
 15    private const string PREFAB_PATH = "PlayerInfoCardHUD";
 16
 17    public enum Tabs
 18    {
 19        Passport,
 20        Trade,
 21        Block
 22    }
 23
 24    [Serializable]
 25    internal class TabsMapping
 26    {
 27        public GameObject container;
 28        public Toggle toggle;
 29        public Tabs tab;
 30    }
 31
 32    [SerializeField] internal GenericFactory collectiblesFactory;
 33    [SerializeField] internal Canvas cardCanvas;
 34    [SerializeField] internal TabsMapping[] tabsMapping;
 35    [SerializeField] internal Button hideCardButton;
 36
 37    [Space][SerializeField] internal RawImage avatarPicture;
 38    [SerializeField] internal Image blockedAvatarOverlay;
 39    [SerializeField] internal TextMeshProUGUI name;
 40
 41    [Header("Friends")][SerializeField] internal GameObject friendStatusContainer;
 42    [SerializeField] internal Button requestSentButton;
 43    [SerializeField] internal Button addFriendButton;
 44    [SerializeField] internal GameObject alreadyFriendsContainer;
 45    [SerializeField] internal GameObject requestReceivedContainer;
 46    [SerializeField] internal Button acceptRequestButton;
 47    [SerializeField] internal Button rejectRequestButton;
 48
 49    [Header("Passport")][SerializeField] internal TextMeshProUGUI description;
 50
 51    [Header("Trade")][SerializeField] private RectTransform wearablesContainer;
 52    [SerializeField] private GameObject emptyCollectiblesImage;
 53
 54    [Header("Block")][SerializeField] internal Button reportPlayerButton;
 55    [SerializeField] internal Button blockPlayerButton;
 56    [SerializeField] internal Button unblockPlayerButton;
 57
 2858    internal readonly List<PlayerInfoCollectibleItem> playerInfoCollectibles = new List<PlayerInfoCollectibleItem>(10);
 17259    private UnityAction<bool> toggleChangedDelegate => (x) => UpdateTabs();
 60
 61    private MouseCatcher mouseCatcher;
 62    private HUDCanvasCameraModeController hudCanvasCameraModeController;
 63
 5464    private void Awake() { hudCanvasCameraModeController = new HUDCanvasCameraModeController(GetComponent<Canvas>(), Dat
 65
 66    public static PlayerInfoCardHUDView CreateView()
 67    {
 2768        return Instantiate(Resources.Load<GameObject>(PREFAB_PATH)).GetComponent<PlayerInfoCardHUDView>();
 69    }
 70
 71    public void Initialize(UnityAction cardClosedCallback,
 72        UnityAction reportPlayerCallback,
 73        UnityAction blockPlayerCallback,
 74        UnityAction unblockPlayerCallback,
 75        UnityAction addFriendCallback,
 76        UnityAction cancelInvitation,
 77        UnityAction acceptFriendRequest,
 78        UnityAction rejectFriendRequest)
 79    {
 2880        hideCardButton.onClick.RemoveAllListeners();
 2881        hideCardButton.onClick.AddListener(cardClosedCallback);
 82
 2883        reportPlayerButton.onClick.RemoveAllListeners();
 2884        reportPlayerButton.onClick.AddListener(reportPlayerCallback);
 85
 2886        blockPlayerButton.onClick.RemoveAllListeners();
 2887        blockPlayerButton.onClick.AddListener(blockPlayerCallback);
 88
 2889        unblockPlayerButton.onClick.RemoveAllListeners();
 2890        unblockPlayerButton.onClick.AddListener(unblockPlayerCallback);
 91
 2892        addFriendButton.onClick.RemoveAllListeners();
 2893        addFriendButton.onClick.AddListener(addFriendCallback);
 94
 2895        requestSentButton.onClick.RemoveAllListeners();
 2896        requestSentButton.onClick.AddListener(cancelInvitation);
 97
 2898        acceptRequestButton.onClick.RemoveAllListeners();
 2899        acceptRequestButton.onClick.AddListener(acceptFriendRequest);
 100
 28101        rejectRequestButton.onClick.RemoveAllListeners();
 28102        rejectRequestButton.onClick.AddListener(rejectFriendRequest);
 103
 224104        for (int index = 0; index < tabsMapping.Length; index++)
 105        {
 84106            var tab = tabsMapping[index];
 84107            tab.toggle.onValueChanged.RemoveListener(toggleChangedDelegate);
 84108            tab.toggle.onValueChanged.AddListener(toggleChangedDelegate);
 109        }
 110
 56111        for (int index = 0; index < tabsMapping.Length; index++)
 112        {
 28113            if (tabsMapping[index].tab == Tabs.Passport)
 114            {
 28115                tabsMapping[index].toggle.isOn = true;
 28116                break;
 117            }
 118        }
 119
 28120        if (SceneReferences.i != null)
 121        {
 28122            var mouseCatcher = DCL.SceneReferences.i.mouseCatcher;
 123
 28124            if (mouseCatcher != null)
 125            {
 0126                this.mouseCatcher = mouseCatcher;
 0127                mouseCatcher.OnMouseDown += OnPointerDown;
 128            }
 129        }
 28130    }
 131
 132    public void SetCardActive(bool active)
 133    {
 47134        if (active && mouseCatcher != null)
 135        {
 0136            mouseCatcher.UnlockCursor();
 137        }
 138
 47139        cardCanvas.enabled = active;
 47140        CommonScriptableObjects.playerInfoCardVisibleState.Set(active);
 47141    }
 142
 143    private void UpdateTabs()
 144    {
 32145        for (int index = 0; index < tabsMapping.Length; index++)
 146        {
 12147            tabsMapping[index].container.SetActive(tabsMapping[index].toggle.isOn);
 148        }
 4149    }
 150
 151    public void SetFaceSnapshot(Texture2D texture)
 152    {
 0153        avatarPicture.texture = texture;
 0154    }
 155
 31156    public void SetName(string name) => this.name.text = name;
 157
 158    public void SetDescription(string description)
 159    {
 31160        if (description != null)
 26161            this.description.text = description;
 31162    }
 163
 164    public void HideFriendshipInteraction()
 165    {
 0166        requestReceivedContainer.SetActive(false);
 0167        addFriendButton.gameObject.SetActive(false);
 0168        alreadyFriendsContainer.SetActive(false);
 0169        requestSentButton.gameObject.SetActive(false);
 0170    }
 171
 172    public void UpdateFriendshipInteraction(bool canUseFriendButton,
 173        UserStatus status)
 174    {
 31175        if (status == null)
 176        {
 27177            requestReceivedContainer.SetActive(false);
 27178            addFriendButton.gameObject.SetActive(false);
 27179            alreadyFriendsContainer.SetActive(false);
 27180            requestSentButton.gameObject.SetActive(false);
 27181            return;
 182        }
 183
 4184        friendStatusContainer.SetActive(canUseFriendButton);
 185
 4186        if (!canUseFriendButton)
 187        {
 0188            addFriendButton.gameObject.SetActive(false);
 0189            alreadyFriendsContainer.SetActive(false);
 0190            requestSentButton.gameObject.SetActive(false);
 0191            return;
 192        }
 193
 4194        addFriendButton.gameObject.SetActive(false);
 4195        alreadyFriendsContainer.SetActive(false);
 4196        requestReceivedContainer.SetActive(false);
 4197        requestSentButton.gameObject.SetActive(false);
 198
 4199        switch (status.friendshipStatus)
 200        {
 201            case FriendshipStatus.NOT_FRIEND:
 1202                addFriendButton.gameObject.SetActive(true);
 1203                break;
 204            case FriendshipStatus.FRIEND:
 1205                alreadyFriendsContainer.SetActive(true);
 1206                break;
 207            case FriendshipStatus.REQUESTED_FROM:
 1208                requestReceivedContainer.SetActive(true);
 1209                break;
 210            case FriendshipStatus.REQUESTED_TO:
 1211                requestSentButton.gameObject.SetActive(true);
 212                break;
 213        }
 1214    }
 215
 216    public void SetIsBlocked(bool isBlocked)
 217    {
 31218        unblockPlayerButton.gameObject.SetActive(isBlocked);
 31219        blockedAvatarOverlay.gameObject.SetActive(isBlocked);
 31220    }
 221
 222    public void SetVisibility(bool visible)
 223    {
 1224        if (gameObject.activeSelf != visible)
 225        {
 0226            if (visible)
 227            {
 0228                AudioScriptableObjects.dialogOpen.Play(true);
 229            }
 230            else
 231            {
 0232                AudioScriptableObjects.dialogClose.Play(true);
 233            }
 234        }
 235
 1236        gameObject.SetActive(visible);
 1237    }
 238
 239    public void ClearCollectibles()
 240    {
 192241        for (var i = playerInfoCollectibles.Count - 1; i >= 0; i--)
 242        {
 65243            var playerInfoCollectible = playerInfoCollectibles[i];
 65244            playerInfoCollectibles.RemoveAt(i);
 65245            Destroy(playerInfoCollectible.gameObject);
 246        }
 31247    }
 248
 249    public void SetWearables(IEnumerable<WearableItem> wearables)
 250    {
 31251        var emptyWearables = true;
 252
 372253        foreach (var wearable in wearables)
 254        {
 155255            emptyWearables = false;
 155256            var playerInfoCollectible =
 257                collectiblesFactory.Instantiate<PlayerInfoCollectibleItem>(wearable.rarity,
 258                    wearablesContainer.transform);
 155259            if (playerInfoCollectible == null) continue;
 155260            playerInfoCollectibles.Add(playerInfoCollectible);
 155261            playerInfoCollectible.Initialize(wearable);
 262        }
 263
 31264        emptyCollectiblesImage.SetActive(emptyWearables);
 31265    }
 266
 267    private void OnPointerDown()
 268    {
 0269        hideCardButton.onClick.Invoke();
 0270    }
 271
 272    private void OnDestroy()
 273    {
 27274        hudCanvasCameraModeController?.Dispose();
 27275        if (mouseCatcher != null)
 0276            mouseCatcher.OnMouseDown -= OnPointerDown;
 27277    }
 278}