< Summary

Class:DCL.AvatarModifierAreaFeedback.AvatarModifierAreaFeedbackView
Assembly:AvatarModifieraAreaHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/AvatarModifierAreaHUD/Scripts/AvatarModifierAreaFeedbackView.cs
Covered lines:64
Uncovered lines:12
Coverable lines:76
Total lines:175
Line coverage:84.2% (64 of 76)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
AvatarModifierAreaFeedbackView()0%110100%
Create()0%110100%
Awake()0%110100%
SetUp(...)0%330100%
RemovedWarning(...)0%220100%
AddedNewWarning(...)0%110100%
Show()0%3.263069.23%
Hide()0%2.012088.89%
OnPointerEnter(...)0%2.032080%
OnPointerExit(...)0%2.032080%
HideFirstTimeWarningMessageUniTask()0%21.196025%
Dispose()0%440100%
GetWarningMessage(...)0%3.333066.67%
ResetAllTriggers()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/AvatarModifierAreaHUD/Scripts/AvatarModifierAreaFeedbackView.cs

#LineLine coverage
 1using System;
 2using System.Collections;
 3using System.Collections.Generic;
 4using System.Threading;
 5using Cysharp.Threading.Tasks;
 6using TMPro;
 7using UnityEngine;
 8using UnityEngine.EventSystems;
 9
 10namespace DCL.AvatarModifierAreaFeedback
 11{
 12    public class AvatarModifierAreaFeedbackView : MonoBehaviour, IAvatarModifierAreaFeedbackView, IPointerEnterHandler, 
 13    {
 14
 15        internal enum AvatarModifierAreaFeedbackState { NEVER_SHOWN, ICON_VISIBLE, WARNING_MESSAGE_VISIBLE, NONE_VISIBLE
 16
 17        private const string PATH = "_AvatarModifierAreaFeedbackHUD";
 18        private const string PATH_TO_WARNING_MESSAGE = "_WarningMessageAreaFeedbackHUD";
 19        private BaseRefCounter<AvatarModifierAreaID> avatarAreaWarningsCounter;
 20        private HUDCanvasCameraModeController hudCanvasCameraModeController;
 21
 22
 23        [SerializeField] internal RectTransform warningContainer;
 24        [SerializeField] private CanvasGroup pointerEnterTriggerArea;
 25        [SerializeField] private Animator messageAnimator;
 26
 27        internal bool isVisible;
 28        internal AvatarModifierAreaFeedbackState currentState;
 29        internal Dictionary<AvatarModifierAreaID, GameObject> warningMessagesDictionary;
 530        internal CancellationTokenSource deactivatePreviewCancellationToken = new CancellationTokenSource();
 31
 532        private string msgOutAnimationTrigger = "MsgOut";
 533        private string msgInAnimationTrigger = "MsgIn";
 534        private string iconInAnimationTrigger = "IconIn";
 535        private string iconOutAnimationTrigger = "IconOut";
 36
 437        public static AvatarModifierAreaFeedbackView Create() { return Instantiate(Resources.Load<GameObject>(PATH)).Get
 38
 39        public void Awake()
 40        {
 441            currentState = AvatarModifierAreaFeedbackState.NEVER_SHOWN;
 442            hudCanvasCameraModeController = new HUDCanvasCameraModeController(GetComponent<Canvas>(), DataStore.i.camera
 443        }
 44
 45        public void SetUp(BaseRefCounter<AvatarModifierAreaID> avatarAreaWarnings)
 46        {
 447            avatarAreaWarningsCounter = avatarAreaWarnings;
 448            avatarAreaWarningsCounter.OnAdded += AddedNewWarning;
 449            avatarAreaWarningsCounter.OnRemoved += RemovedWarning;
 50
 451            warningMessagesDictionary = new Dictionary<AvatarModifierAreaID, GameObject>();
 52
 2453            foreach (AvatarModifierAreaID warningMessageEnum in Enum.GetValues(typeof(AvatarModifierAreaID)))
 54            {
 855                GameObject newWarningMessage = Instantiate(Resources.Load<GameObject>(PATH_TO_WARNING_MESSAGE), warningC
 856                newWarningMessage.GetComponent<TMP_Text>().text = GetWarningMessage(warningMessageEnum);
 857                newWarningMessage.SetActive(false);
 858                warningMessagesDictionary.Add(warningMessageEnum, newWarningMessage);
 59            }
 460        }
 61
 62        private void RemovedWarning(AvatarModifierAreaID obj)
 63        {
 264            warningMessagesDictionary[obj].gameObject.SetActive(false);
 265            if (avatarAreaWarningsCounter.Count().Equals(0))
 66            {
 167                Hide();
 68            }
 269        }
 70        private void AddedNewWarning(AvatarModifierAreaID obj)
 71        {
 572            warningMessagesDictionary[obj].gameObject.SetActive(true);
 573            Show();
 574        }
 75
 76        private void Show()
 77        {
 678            if (isVisible) return;
 479            isVisible = true;
 480            ResetAllTriggers();
 81
 482            if (currentState.Equals(AvatarModifierAreaFeedbackState.NEVER_SHOWN))
 83            {
 484                messageAnimator.SetTrigger(msgInAnimationTrigger);
 485                HideFirstTimeWarningMessageUniTask(deactivatePreviewCancellationToken.Token).Forget();
 486                currentState = AvatarModifierAreaFeedbackState.WARNING_MESSAGE_VISIBLE;
 487            }
 88            else
 89            {
 090                messageAnimator.SetTrigger(iconInAnimationTrigger);
 091                pointerEnterTriggerArea.blocksRaycasts = true;
 092                currentState = AvatarModifierAreaFeedbackState.ICON_VISIBLE;
 93            }
 094        }
 95
 96        private void Hide()
 97        {
 198            isVisible = false;
 99
 1100            deactivatePreviewCancellationToken.Cancel();
 101
 1102            pointerEnterTriggerArea.blocksRaycasts = false;
 103
 1104            if (currentState.Equals(AvatarModifierAreaFeedbackState.WARNING_MESSAGE_VISIBLE))
 105            {
 1106                messageAnimator.SetTrigger(msgOutAnimationTrigger);
 1107            }
 108            else
 109            {
 0110                messageAnimator.SetTrigger(iconOutAnimationTrigger);
 111            }
 1112            currentState = AvatarModifierAreaFeedbackState.NONE_VISIBLE;
 1113        }
 114
 115        public void OnPointerEnter(PointerEventData eventData)
 116        {
 1117            if (!isVisible) return;
 118
 1119            messageAnimator.SetTrigger(msgInAnimationTrigger);
 1120            currentState = AvatarModifierAreaFeedbackState.WARNING_MESSAGE_VISIBLE;
 1121        }
 122
 123        public void OnPointerExit(PointerEventData eventData)
 124        {
 1125            if (!isVisible) return;
 126
 1127            messageAnimator.SetTrigger(iconInAnimationTrigger);
 1128            currentState = AvatarModifierAreaFeedbackState.ICON_VISIBLE;
 1129        }
 130
 131
 132        async UniTaskVoid HideFirstTimeWarningMessageUniTask(CancellationToken cancellationToken)
 133        {
 12134            await UniTask.Delay(5000, cancellationToken: cancellationToken);
 0135            await UniTask.SwitchToMainThread(cancellationToken);
 0136            if (cancellationToken.IsCancellationRequested) return;
 0137            messageAnimator.SetTrigger(iconInAnimationTrigger);
 138
 0139            currentState = AvatarModifierAreaFeedbackState.ICON_VISIBLE;
 0140            pointerEnterTriggerArea.blocksRaycasts = true;
 0141        }
 142
 143        public void Dispose()
 144        {
 4145            deactivatePreviewCancellationToken?.Cancel();
 4146            deactivatePreviewCancellationToken?.Dispose();
 4147            avatarAreaWarningsCounter.OnAdded -= AddedNewWarning;
 4148            avatarAreaWarningsCounter.OnRemoved -= RemovedWarning;
 4149      hudCanvasCameraModeController?.Dispose();
 4150        }
 151
 152        private string GetWarningMessage(AvatarModifierAreaID idToSet)
 153        {
 154            switch (idToSet)
 155            {
 156                case AvatarModifierAreaID.HIDE_AVATAR:
 4157                    return "\u2022  The avatars are hidden";
 158                case AvatarModifierAreaID.DISABLE_PASSPORT:
 4159                    return "\u2022  Your passport is disable for\n    other players";
 160                default:
 0161                    throw new NotImplementedException();
 162            }
 163        }
 164
 165        private void ResetAllTriggers()
 166        {
 4167            messageAnimator.ResetTrigger(msgOutAnimationTrigger);
 4168            messageAnimator.ResetTrigger(msgInAnimationTrigger);
 4169            messageAnimator.ResetTrigger(iconInAnimationTrigger);
 4170            messageAnimator.ResetTrigger(iconOutAnimationTrigger);
 4171        }
 172
 173
 174    }
 175}