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) { } }