using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.UI;

public class VisorUIModule : MonoBehaviour
{
    [SerializeField]
    private CanvasGroup _mainPanel;
    [SerializeField]
    private CanvasGroup _tutorPanel;
    [SerializeField]
    private Image _progressBarImage;


    public InputActionReference LeftTrigger;
    public InputActionReference RightTrigger;

    private float _visibleValue = 0;

    private bool _visorActivated = false;

    public UnityEvent OnVisorActivated = new UnityEvent();

    private void Update()
    {
        if (_visorActivated)
            return;

        if (RightTrigger.action.inProgress && LeftTrigger.action.inProgress)
        {
            _visibleValue = Mathf.Clamp01(_visibleValue + Time.deltaTime);
        }
        else
        {
            _visibleValue = Mathf.Clamp01(_visibleValue - Time.deltaTime);
        }

        UpdateVisorValue();
    }

    private void UpdateVisorValue()
    {
        _mainPanel.alpha = _visibleValue;
        _tutorPanel.alpha = 1 - _visibleValue;
        _progressBarImage.fillAmount = _visibleValue;

        if (_visibleValue == 1)
        {
            ActivateVisor();
        }
    }

    private void ActivateVisor()
    {
        _visorActivated = true;
        OnVisorActivated?.Invoke();
    }
}