hellbound/Assets/Sources/Feel/MMTools/Tools/MMDebugMenu/Scripts/MMDebugMenuItems/MMDebugMenuItemButton.cs

66 lines
2.0 KiB
C#
Raw Normal View History

2021-11-26 11:16:25 +03:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
namespace MoreMountains.Tools
{
/// <summary>
/// A class used to bind a button to a MMDebugMenu
/// </summary>
public class MMDebugMenuItemButton : MonoBehaviour
{
[Header("Bindings")]
/// the associated button
public Button TargetButton;
/// the button's text comp
public Text ButtonText;
/// the button's background image
public Image ButtonBg;
/// the name of the event bound to this button
public string ButtonEventName = "Button";
protected bool _listening = false;
/// <summary>
/// Triggers a button event using the button's event name
/// </summary>
public virtual void TriggerButtonEvent()
{
MMDebugMenuButtonEvent.Trigger(ButtonEventName);
}
protected virtual void OnMMDebugMenuButtonEvent(string checkboxEventName, bool active, MMDebugMenuButtonEvent.EventModes eventMode)
{
if ((eventMode == MMDebugMenuButtonEvent.EventModes.SetButton)
&& (checkboxEventName == ButtonEventName)
&& (TargetButton != null))
{
TargetButton.interactable = active;
}
}
/// <summary>
/// Starts listening for events
/// </summary>
public virtual void OnEnable()
{
if (!_listening)
{
_listening = true;
MMDebugMenuButtonEvent.Register(OnMMDebugMenuButtonEvent);
}
}
/// <summary>
/// Stops listening for events
/// </summary>
public virtual void OnDestroy()
{
_listening = false;
MMDebugMenuButtonEvent.Unregister(OnMMDebugMenuButtonEvent);
}
}
}