< Summary

Class:PlayerInfoCardHUDView
Assembly:PlayerInfoCardHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/PlayerInfoCardHUD/PlayerInfoCardHUDView.cs
Covered lines:85
Uncovered lines:21
Coverable lines:106
Total lines:273
Line coverage:80.1% (85 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.073080%
UpdateTabs()0%220100%
SetFaceSnapshot(...)0%2100%
SetName(...)0%110100%
SetDescription(...)0%110100%
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
 31157    public void SetDescription(string description) => this.description.text = description;
 158
 159    public void HideFriendshipInteraction()
 160    {
 0161        requestReceivedContainer.SetActive(false);
 0162        addFriendButton.gameObject.SetActive(false);
 0163        alreadyFriendsContainer.SetActive(false);
 0164        requestSentButton.gameObject.SetActive(false);
 0165    }
 166
 167    public void UpdateFriendshipInteraction(bool canUseFriendButton,
 168        FriendsController.UserStatus status)
 169    {
 31170        if (status == null)
 171        {
 27172            requestReceivedContainer.SetActive(false);
 27173            addFriendButton.gameObject.SetActive(false);
 27174            alreadyFriendsContainer.SetActive(false);
 27175            requestSentButton.gameObject.SetActive(false);
 27176            return;
 177        }
 178
 4179        friendStatusContainer.SetActive(canUseFriendButton);
 180
 4181        if (!canUseFriendButton)
 182        {
 0183            addFriendButton.gameObject.SetActive(false);
 0184            alreadyFriendsContainer.SetActive(false);
 0185            requestSentButton.gameObject.SetActive(false);
 0186            return;
 187        }
 188
 4189        addFriendButton.gameObject.SetActive(false);
 4190        alreadyFriendsContainer.SetActive(false);
 4191        requestReceivedContainer.SetActive(false);
 4192        requestSentButton.gameObject.SetActive(false);
 193
 4194        switch (status.friendshipStatus)
 195        {
 196            case FriendshipStatus.NOT_FRIEND:
 1197                addFriendButton.gameObject.SetActive(true);
 1198                break;
 199            case FriendshipStatus.FRIEND:
 1200                alreadyFriendsContainer.SetActive(true);
 1201                break;
 202            case FriendshipStatus.REQUESTED_FROM:
 1203                requestReceivedContainer.SetActive(true);
 1204                break;
 205            case FriendshipStatus.REQUESTED_TO:
 1206                requestSentButton.gameObject.SetActive(true);
 207                break;
 208        }
 1209    }
 210
 211    public void SetIsBlocked(bool isBlocked)
 212    {
 31213        unblockPlayerButton.gameObject.SetActive(isBlocked);
 31214        blockedAvatarOverlay.gameObject.SetActive(isBlocked);
 31215    }
 216
 217    public void SetVisibility(bool visible)
 218    {
 1219        if (gameObject.activeSelf != visible)
 220        {
 0221            if (visible)
 222            {
 0223                AudioScriptableObjects.dialogOpen.Play(true);
 0224            }
 225            else
 226            {
 0227                AudioScriptableObjects.dialogClose.Play(true);
 228            }
 229        }
 230
 1231        gameObject.SetActive(visible);
 1232    }
 233
 234    public void ClearCollectibles()
 235    {
 192236        for (var i = playerInfoCollectibles.Count - 1; i >= 0; i--)
 237        {
 65238            var playerInfoCollectible = playerInfoCollectibles[i];
 65239            playerInfoCollectibles.RemoveAt(i);
 65240            Destroy(playerInfoCollectible.gameObject);
 241        }
 31242    }
 243
 244    public void SetWearables(IEnumerable<WearableItem> wearables)
 245    {
 31246        var emptyWearables = true;
 247
 372248        foreach (var wearable in wearables)
 249        {
 155250            emptyWearables = false;
 155251            var playerInfoCollectible =
 252                collectiblesFactory.Instantiate<PlayerInfoCollectibleItem>(wearable.rarity,
 253                    wearablesContainer.transform);
 155254            if (playerInfoCollectible == null) continue;
 155255            playerInfoCollectibles.Add(playerInfoCollectible);
 155256            playerInfoCollectible.Initialize(wearable);
 257        }
 258
 31259        emptyCollectiblesImage.SetActive(emptyWearables);
 31260    }
 261
 262    private void OnPointerDown()
 263    {
 0264        hideCardButton.onClick.Invoke();
 0265    }
 266
 267    private void OnDestroy()
 268    {
 27269        hudCanvasCameraModeController?.Dispose();
 27270        if (mouseCatcher != null)
 0271            mouseCatcher.OnMouseDown -= OnPointerDown;
 27272    }
 273}