< Summary

Class:FriendEntryBase
Assembly:FriendsHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/FriendsHUD/Scripts/Entries/FriendEntryBase.cs
Covered lines:21
Uncovered lines:8
Coverable lines:29
Total lines:90
Line coverage:72.4% (21 of 29)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
OnSpriteUpdate(...)0%6200%
FriendEntryBase()0%110100%
Awake()0%110100%
OnPointerEnter(...)0%6200%
OnPointerExit(...)0%110100%
OnDisable()0%110100%
OnDestroy()0%110100%
Populate(...)0%440100%
OnAvatarImageChange(...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/FriendsHUD/Scripts/Entries/FriendEntryBase.cs

#LineLine coverage
 1using DCL.Helpers;
 2using TMPro;
 3using UnityEngine;
 4using UnityEngine.EventSystems;
 5using UnityEngine.UI;
 6
 7public class FriendEntryBase : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
 8{
 9    public class Model
 10    {
 11        public PresenceStatus status;
 12        public string userName;
 13        public Vector2 coords;
 14        public string realm;
 15        public string realmServerName;
 16        public string realmLayerName;
 17        public Texture2D avatarImage;
 18        public bool blocked;
 19
 20        public event System.Action<Texture2D> OnTextureUpdateEvent;
 21        public void OnSpriteUpdate(Texture2D texture)
 22        {
 023            avatarImage = texture;
 024            OnTextureUpdateEvent?.Invoke(texture);
 025        }
 26    }
 27
 8328    public Model model { get; private set; } = new Model();
 29    [System.NonSerialized] public string userId;
 30
 31    public Image playerBlockedImage;
 32    public Transform menuPositionReference;
 33
 34    [SerializeField] protected internal TextMeshProUGUI playerNameText;
 35    [SerializeField] protected internal RawImage playerImage;
 36    [SerializeField] protected internal Button menuButton;
 37    [SerializeField] protected internal Image backgroundImage;
 38    [SerializeField] protected internal Sprite hoveredBackgroundSprite;
 39    [SerializeField] protected internal AudioEvent audioEventHover;
 40    protected internal Sprite unhoveredBackgroundSprite;
 41
 42    public event System.Action<FriendEntryBase> OnMenuToggle;
 43
 44    public virtual void Awake()
 45    {
 7946        unhoveredBackgroundSprite = backgroundImage.sprite;
 7947        menuButton.onClick.RemoveAllListeners();
 8548        menuButton.onClick.AddListener(() => OnMenuToggle?.Invoke(this));
 7949    }
 50
 51    public void OnPointerEnter(PointerEventData eventData)
 52    {
 053        backgroundImage.sprite = hoveredBackgroundSprite;
 054        menuButton.gameObject.SetActive(true);
 55
 056        if (audioEventHover != null)
 057            audioEventHover.Play(true);
 058    }
 59
 60    public void OnPointerExit(PointerEventData eventData)
 61    {
 12562        backgroundImage.sprite = unhoveredBackgroundSprite;
 12563        menuButton.gameObject.SetActive(false);
 12564    }
 65
 25066    protected virtual void OnDisable() { OnPointerExit(null); }
 67
 15868    protected void OnDestroy() { model.OnTextureUpdateEvent -= OnAvatarImageChange; }
 69
 70    public virtual void Populate(Model model)
 71    {
 4072        this.model = model;
 73
 4074        if (playerNameText.text != model.userName)
 3975            playerNameText.text = model.userName;
 76
 4077        if (model.avatarImage == null)
 78        {
 3779            model.OnTextureUpdateEvent -= OnAvatarImageChange;
 3780            model.OnTextureUpdateEvent += OnAvatarImageChange;
 81        }
 82
 4083        if (model.avatarImage != playerImage.texture)
 384            OnAvatarImageChange(model.avatarImage);
 85
 4086        playerBlockedImage.enabled = model.blocked;
 4087    }
 88
 689    private void OnAvatarImageChange(Texture2D texture) { playerImage.texture = texture; }
 90}