using Chickensoft.Introspection; using Godot; namespace GameJamDungeon { public partial class EnemyLogic { public partial record State { [Meta, Id("enemy_logic_state_alive")] public abstract partial record Alive : State, IGet, IGet, IGet { public Transition On(in Input.HitByPlayer input) { var enemy = Get(); enemy.CurrentHP.OnNext(enemy.CurrentHP.Value - input.Damage); GD.Print("Current HP: " + enemy.CurrentHP.Value); Output(new Output.HitByPlayer()); Input(new Input.Alerted()); return ToSelf(); } public Transition On(in Input.AttackTimer input) { Output(new Output.Attack()); return ToSelf(); } public Transition On(in Input.EnemyDefeated input) { Output(new Output.Defeated()); return To(); } } } } }