You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/3rd/D2D_Scripts/UI/UIAnimations/UIAnim.cs

61 lines
1.8 KiB
C#

3 months ago
using System;
using UnityEngine;
namespace D2D.UI
{
public enum UIEvent {Click, Hover, /* Window */ }
/// <summary>
/// Plays animations when attached event invokes.
/// This class is not so flexible, but this done to save time managing and connecting
/// variables in inspector, thus there is not so many ways to expand this class.
/// </summary>
public abstract class UIAnim : MonoBehaviour
{
[SerializeField] private UIEvent eventType;
[SerializeField] protected float duration = .2f;
private bool IsButtonRequired => eventType == UIEvent.Click || eventType == UIEvent.Hover;
// rivate bool IsWindowRequired => eventType == UIEvent.Window;
private void OnDrawGizmos()
{
var button = GetComponent<DButton>();
// var window = GetComponent<Window>();
if (IsButtonRequired && button == null)
gameObject.AddComponent<DButton>();
// if (IsWindowRequired && window == null)
// gameObject.AddComponent<Window>();
}
private void OnEnable()
{
var button = GetComponent<DButton>();
// var window = GetComponent<Window>();
if (eventType == UIEvent.Click)
{
button.PointerDown += Positive;
button.PointerUp += Negative;
}
if (eventType == UIEvent.Hover)
{
button.MouseEnter += Positive;
button.MouseExit += Negative;
}
// if (eventType == UIEvent.Window)
// {
// window.Opened += Positive;
// window.Closed += Negative;
// }
}
protected abstract void Positive();
protected abstract void Negative();
}
}