using DG.Tweening;
using Presenter;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

namespace View.UI {
	public class UIVisibility : MonoBehaviour, IExpressionInput {
		[SerializeField] private CanvasGroup ui;
		[SerializeField] private float fadeDuration = .5f;

		[Space]
		[SerializeField] private Image titleImage;
		[SerializeField] private float titleFadeDuration = 1f;

		private bool _wasVisible = true;
		private bool _titleVisible = true;
		private Tween _fadeTween;

		private void Update() {
			bool isPointerOver = EventSystem.current.IsPointerOverGameObject();

			if (_wasVisible && !isPointerOver) {
				_fadeTween?.Kill();
				_fadeTween = ui.DOFade(0, fadeDuration).SetDelay(5f);
				_wasVisible = false;
			} else if (!_wasVisible && isPointerOver) {
				_fadeTween?.Kill();
				_fadeTween = ui.DOFade(1, fadeDuration);
				_wasVisible = true;
			}
		}

		public void UpdateView(int score) {
			if (!_titleVisible) return;
			_titleVisible = false;

			titleImage.DOFade(0, titleFadeDuration);
		}
	}
}