46 lines
1.2 KiB
C#
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)
|
|
{
|
|
}
|
|
}
|