< Summary

Class:InteractionHoverCanvasController
Assembly:DCL.Components.Events
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/UUIDEventComponentsPlugin/UUIDComponent/InteractionHoverCanvas/InteractionHoverCanvasController.cs
Covered lines:41
Uncovered lines:10
Coverable lines:51
Total lines:125
Line coverage:80.3% (41 of 51)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Awake()0%110100%
OnDestroy()0%2.012085.71%
OnChangeFeedbackHoverState(...)0%110100%
OnChangeFeedbackEnabled(...)0%110100%
OnChangeFeedbackText(...)0%110100%
OnChangeFeedbackButton(...)0%110100%
Setup(...)0%2100%
ConfigureIcon(...)0%7.736063.64%
SetHoverState(...)0%330100%
GetCurrentHoverIcon()0%2100%
UpdateCanvas()0%440100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/UUIDEventComponentsPlugin/UUIDComponent/InteractionHoverCanvas/InteractionHoverCanvasController.cs

#LineLine coverage
 1using System;
 2using DCL.Models;
 3using DCL.Components;
 4using UnityEngine;
 5using TMPro;
 6using System.Collections.Generic;
 7using DCL;
 8
 9public class InteractionHoverCanvasController : MonoBehaviour
 10{
 11    public Canvas canvas;
 12    public RectTransform backgroundTransform;
 13    public TextMeshProUGUI text;
 14    public GameObject[] icons;
 15
 16    bool isHovered = false;
 17    GameObject hoverIcon;
 18    Vector3 meshCenteredPos;
 19
 20    const string ACTION_BUTTON_POINTER = "POINTER";
 21    const string ACTION_BUTTON_PRIMARY = "PRIMARY";
 22    const string ACTION_BUTTON_SECONDARY = "SECONDARY";
 23
 24    private DataStore_Cursor dataStore;
 25
 26    void Awake()
 27    {
 8328        dataStore = DataStore.i.Get<DataStore_Cursor>();
 8329        backgroundTransform.gameObject.SetActive(false);
 30
 8331        dataStore.hoverFeedbackButton.OnChange += OnChangeFeedbackButton;
 8332        dataStore.hoverFeedbackText.OnChange += OnChangeFeedbackText;
 8333        dataStore.hoverFeedbackEnabled.OnChange += OnChangeFeedbackEnabled;
 8334        dataStore.hoverFeedbackHoverState.OnChange += OnChangeFeedbackHoverState;
 35
 8336        UpdateCanvas();
 8337    }
 38
 39    private void OnDestroy()
 40    {
 8341        if (dataStore == null)
 042            return;
 43
 8344        dataStore.hoverFeedbackButton.OnChange -= OnChangeFeedbackButton;
 8345        dataStore.hoverFeedbackText.OnChange -= OnChangeFeedbackText;
 8346        dataStore.hoverFeedbackEnabled.OnChange -= OnChangeFeedbackEnabled;
 8347        dataStore.hoverFeedbackHoverState.OnChange -= OnChangeFeedbackHoverState;
 8348    }
 49
 50    private void OnChangeFeedbackHoverState(bool current, bool previous)
 51    {
 1652        SetHoverState(current);
 1653    }
 54
 55    private void OnChangeFeedbackEnabled(bool current, bool previous)
 56    {
 1457        enabled = current;
 1458        UpdateCanvas();
 1459    }
 60
 61    private void OnChangeFeedbackText(string current, string previous)
 62    {
 1363        text.text = current;
 1364        UpdateCanvas();
 1365    }
 66
 67    private void OnChangeFeedbackButton(string current, string previous)
 68    {
 1369        ConfigureIcon(current);
 1370        UpdateCanvas();
 1371    }
 72
 73    public void Setup(string button, string feedbackText)
 74    {
 075        text.text = feedbackText;
 076        ConfigureIcon(button);
 077        UpdateCanvas();
 078    }
 79
 80    void ConfigureIcon(string button)
 81    {
 1382        hoverIcon?.SetActive(false);
 83
 84        switch (button)
 85        {
 86            case ACTION_BUTTON_POINTER:
 087                hoverIcon = icons[0];
 088                break;
 89            case ACTION_BUTTON_PRIMARY:
 190                hoverIcon = icons[1];
 191                break;
 92            case ACTION_BUTTON_SECONDARY:
 093                hoverIcon = icons[2];
 094                break;
 95            default: // ANY
 1296                hoverIcon = icons[3];
 97                break;
 98        }
 99
 13100        hoverIcon.SetActive(true);
 13101        backgroundTransform.gameObject.SetActive(true);
 13102    }
 103
 104    public void SetHoverState(bool hoverState)
 105    {
 285106        if (!enabled || hoverState == isHovered)
 269107            return;
 108
 16109        isHovered = hoverState;
 16110        UpdateCanvas();
 16111    }
 112
 113    public GameObject GetCurrentHoverIcon()
 114    {
 0115        return hoverIcon;
 116    }
 117
 118    void UpdateCanvas()
 119    {
 139120        bool newValue = enabled && isHovered;
 121
 139122        if (canvas.enabled != newValue)
 99123            canvas.enabled = newValue;
 139124    }
 125}