Fix standard enemy logic

This commit is contained in:
2025-10-27 19:41:03 -07:00
parent 2d55ae9cc4
commit eed50bc04e
18 changed files with 106 additions and 88 deletions

View File

@@ -65,18 +65,19 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
_enemyLogic.Set(_player);
SetPhysicsProcess(true);
EnemyModelView.HitPlayer += EnemyModelView_HitPlayer;
}
public void OnResolved()
{
EnemyBinding = _enemyLogic.Bind();
EnemyBinding
.Handle((in EnemyLogic.Output.Activate _) =>
{
if (!_activated)
{
Activate();
_activated = true;
_activated = true;
if (this is IHaveFollowBehavior)
_enemyLogic.Input(new EnemyLogic.Input.Follow());
}
})
.Handle((in EnemyLogic.Output.Idle _) =>
{
@@ -99,7 +100,6 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
public virtual void Activate()
{
}
public virtual void Idle()
@@ -114,7 +114,7 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
public virtual void PerformAction()
{
PerformAction();
EnemyModelView.PlayPrimaryAttackAnimation();
}
public virtual void ReturnToDefaultState()