Files
zzz_REBIRTH__Utils/Score/LockPicking/Scripts/LockButton.cs
2025-06-04 16:44:53 +09:30

64 lines
1.6 KiB
C#

using UnityEngine.Events;
[RequireComponent(typeof(Animator))]
public class LockButton : MonoBehaviour
{
[Header("Animation Trigger Strings")] public string pressDownTrigger = "ButtonPressDown";
public string pressUpTrigger = "ButtonPressUp";
[Header("Plumbing")][SerializeField] private Animator animator;
public LocksetAudio audioButtonPressed;
public LocksetAudio audioButtonReset;
private readonly UnityEvent buttonPressed = new UnityEvent();
private readonly UnityEvent buttonReset = new UnityEvent();
private bool _isUp = true;
private int _pressDownTrigger;
private int _pressUpTrigger;
private void Start()
{
animator = GetComponent<Animator>();
}
private void Awake()
{
_pressDownTrigger = Animator.StringToHash(pressDownTrigger);
_pressUpTrigger = Animator.StringToHash(pressUpTrigger);
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.P))
ToggleButton();
}
public void ToggleButton()
{
if (_isUp)
{
animator.SetTrigger(_pressDownTrigger);
buttonPressed.Invoke();
//Log.Out("LockButton-ToggleButton PLAY SOUND: audioButtonPressed");
audioButtonPressed.PlayOnce();
}
else
{
animator.SetTrigger(_pressUpTrigger);
buttonReset.Invoke();
//Log.Out("LockButton-ToggleButton PLAY SOUND: audioButtonReset");
audioButtonReset.PlayOnce();
}
_isUp = !_isUp;
}
public void ToggleButton(bool up)
{
if (up && !_isUp || !up && _isUp)
ToggleButton();
}
}