< Summary

Class:TooltipController
Assembly:BuildModeHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/BuildModeHUD/Scripts/Common/TooltipController.cs
Covered lines:30
Uncovered lines:7
Coverable lines:37
Total lines:87
Line coverage:81% (30 of 37)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Initialize(...)0%110100%
Dispose()0%220100%
SetTooltipText(...)0%110100%
ShowTooltip(...)0%110100%
ShowTooltip(...)0%2.012085.71%
HideTooltip()0%2100%
ChangeAlpha()0%5.255078.57%
KillTooltipCoroutine()0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/BuildModeHUD/Scripts/Common/TooltipController.cs

#LineLine coverage
 1using System.Collections;
 2using UnityEngine;
 3using UnityEngine.EventSystems;
 4
 5public interface ITooltipController
 6{
 7    void Initialize(ITooltipView view);
 8    void Dispose();
 9    void SetTooltipText(string text);
 10    void ShowTooltip(BaseEventData data);
 11    void ShowTooltip(BaseEventData data, Vector3 offset);
 12    void HideTooltip();
 13}
 14
 15public class TooltipController : ITooltipController
 16{
 17    internal ITooltipView view;
 18    internal Coroutine changeAlphaCoroutine;
 19
 20    public void Initialize(ITooltipView view)
 21    {
 322        this.view = view;
 23
 324        view.OnHideTooltip += HideTooltip;
 325    }
 26
 27    public void Dispose()
 28    {
 529        KillTooltipCoroutine();
 30
 531        if (view == null)
 232            return;
 33
 334        view.OnHideTooltip -= HideTooltip;
 335    }
 36
 237    public void SetTooltipText(string text) { view.SetText(text); }
 38
 239    public void ShowTooltip(BaseEventData data) { ShowTooltip(data, Vector3.zero); }
 40
 41    public void ShowTooltip(BaseEventData data, Vector3 offset)
 42    {
 243        if (!(data is PointerEventData dataConverted))
 044            return;
 45
 246        RectTransform selectedRT = dataConverted.pointerEnter.GetComponent<RectTransform>();
 247        view.SetTooltipPosition(offset + selectedRT.position);
 48
 249        KillTooltipCoroutine();
 50
 251        changeAlphaCoroutine = CoroutineStarter.Start(ChangeAlpha(0, 1));
 252    }
 53
 54    public void HideTooltip()
 55    {
 056        KillTooltipCoroutine();
 057        changeAlphaCoroutine = CoroutineStarter.Start(ChangeAlpha(1, 0));
 058    }
 59
 60    internal IEnumerator ChangeAlpha(float from, float to)
 61    {
 262        if (view.currentAlpha == to)
 063            yield break;
 64
 265        view.SetTooltipAlpha(from);
 66
 267        float currentAlpha = from;
 268        float destinationAlpha = to;
 69
 270        float fractionOfJourney = 0;
 271        float speed = view.alphaTranstionSpeed;
 272        while (fractionOfJourney < 1)
 73        {
 274            fractionOfJourney += Time.unscaledDeltaTime * speed;
 275            float lerpedAlpha = Mathf.Lerp(currentAlpha, destinationAlpha, fractionOfJourney);
 276            view.SetTooltipAlpha(lerpedAlpha);
 277            yield return null;
 78        }
 079        changeAlphaCoroutine = null;
 080    }
 81
 82    internal void KillTooltipCoroutine()
 83    {
 784        if (changeAlphaCoroutine != null)
 285            CoroutineStarter.Stop(changeAlphaCoroutine);
 786    }
 87}