using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; namespace MoreMountains.Tools { /// /// A class used to bind a button to a MMDebugMenu /// 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; /// /// Triggers a button event using the button's event name /// 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; } } /// /// Starts listening for events /// public virtual void OnEnable() { if (!_listening) { _listening = true; MMDebugMenuButtonEvent.Register(OnMMDebugMenuButtonEvent); } } /// /// Stops listening for events /// public virtual void OnDestroy() { _listening = false; MMDebugMenuButtonEvent.Unregister(OnMMDebugMenuButtonEvent); } } }