EscapeShooter/My project/Assets/Project Files/Game/Scripts/UI/AttackButtonBehavior.cs

68 lines
1.8 KiB
C#
Raw Permalink Normal View History

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace Watermelon
{
public class AttackButtonBehavior : Button
{
private static AttackButtonBehavior instance;
private Image radialFillImage;
private UIGamepadButton uiGamepadButton;
public static bool IsButtonPressed { get; private set; }
public static event SimpleBoolCallback onStatusChanged;
protected override void Awake()
{
instance = this;
radialFillImage = transform.GetChild(0).GetComponent<Image>();
uiGamepadButton = GetComponent<UIGamepadButton>();
base.Awake();
}
private void Update()
{
if (Control.InputType == InputType.Gamepad)
{
if (GamepadControl.WasButtonPressedThisFrame(uiGamepadButton.ButtonType))
{
IsButtonPressed = true;
onStatusChanged?.Invoke(true);
}
else if (GamepadControl.WasButtonReleasedThisFrame(uiGamepadButton.ButtonType))
{
IsButtonPressed = false;
onStatusChanged?.Invoke(false);
}
}
}
public override void OnPointerUp(PointerEventData eventData)
{
base.OnPointerUp(eventData);
IsButtonPressed = false;
onStatusChanged?.Invoke(false);
}
public override void OnPointerDown(PointerEventData eventData)
{
base.OnPointerDown(eventData);
IsButtonPressed = true;
onStatusChanged?.Invoke(true);
}
public static void SetReloadFill(float t)
{
if (instance == null) return;
instance.radialFillImage.fillAmount = t;
}
}
}