66 lines
2.0 KiB
C#
66 lines
2.0 KiB
C#
|
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);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|