Files
GameJamDungeon/src/ui/pause_menu/PauseMenu.cs
2025-02-07 02:29:50 -08:00

46 lines
1.2 KiB
C#

using Chickensoft.AutoInject;
using Chickensoft.GodotNodeInterfaces;
using Chickensoft.Introspection;
using Godot;
namespace GameJamDungeon;
public interface IPauseMenu : IControl
{
void FadeIn();
void FadeOut();
event PauseMenu.UnpauseButtonPressedEventHandler UnpauseButtonPressed;
event PauseMenu.TransitionCompletedEventHandler TransitionCompleted;
}
[Meta(typeof(IAutoNode))]
public partial class PauseMenu : Control, IPauseMenu
{
public override void _Notification(int what) => this.Notify(what);
[Signal]
public delegate void TransitionCompletedEventHandler();
[Signal]
public delegate void UnpauseButtonPressedEventHandler();
[Node] public IAnimationPlayer AnimationPlayer { get; set; } = default!;
public void OnResolved()
{
AnimationPlayer.AnimationFinished += OnAnimationFinished;
}
public void FadeIn() => AnimationPlayer.Play("fade_in");
public void FadeOut() => AnimationPlayer.Play("fade_out");
public override void _UnhandledInput(InputEvent @event)
{
if (@event.IsActionPressed(GameInputs.Pause))
EmitSignal(SignalName.UnpauseButtonPressed);
}
public void OnAnimationFinished(StringName name)
{
}
}