Refactor Player class to use components, also use components in Enemy class types and fiddle with boss structure

This commit is contained in:
2025-10-22 02:41:08 -07:00
parent 44fd8c82b0
commit 6ec45c4805
85 changed files with 941 additions and 1449 deletions

View File

@@ -1,18 +0,0 @@
using Chickensoft.Introspection;
namespace Zennysoft.Ma.Adapter;
public partial class PlayerLogic
{
public partial record State
{
[Meta]
public partial record Attacking : Alive, IGet<Input.AttackAnimationFinished>
{
public Transition On(in Input.AttackAnimationFinished input)
{
return To<Idle>();
}
}
}
}

View File

@@ -1,22 +0,0 @@
using Chickensoft.Introspection;
using Godot;
namespace Zennysoft.Ma.Adapter;
public partial class PlayerLogic
{
public abstract partial record State
{
[Meta, Id("player_logic_state_alive_idle")]
public partial record Idle : Alive, IGet<Input.Attack>
{
public virtual Transition On(in Input.Attack input)
{
GD.Print("Attacking...");
Output(new Output.Animations.Attack());
return To<Attacking>();
}
}
}
}

View File

@@ -8,7 +8,7 @@ public partial class PlayerLogic
public partial record State
{
[Meta, Id("player_logic_alive")]
public abstract partial record Alive : State, IGet<Input.PhysicsTick>, IGet<Input.Die>
public partial record Alive : State, IGet<Input.PhysicsTick>, IGet<Input.Die>
{
public virtual Transition On(in Input.PhysicsTick input)
{

View File

@@ -16,7 +16,7 @@ public partial class PlayerLogic
OnDetach(() => Get<IAppRepo>().GameEntered -= OnGameEntered);
}
public Transition On(in Input.Enable input) => To<Idle>();
public Transition On(in Input.Enable input) => To<Alive>();
public void OnGameEntered() => Input(new Input.Enable());
}