Actor defeat script

This commit is contained in:
Marco 2025-02-23 19:32:36 +01:00
commit d49f5e2a45
4 changed files with 63 additions and 3 deletions

View file

@ -9,6 +9,11 @@ public partial class Actor : CharacterBody2D
[Export]
public float MovementSpeed { get; private set; }
[ExportCategory("Defeat Script")]
[Export] public Node2D DefeatScript { get; set; }
[Export] public ActivationType ActivationType { get; private set; } = ActivationType.Toggle;
public Vector2 MovementDirection { get; set; }
public Vector2 FacingDirection { get; set; }

View file

@ -0,0 +1,46 @@
using Godot;
namespace Cirno.Scripts.Components.Actors;
public partial class ActorDefeatScriptHandler : ActorModule
{
[Export] public Node2D DefeatScript { get; private set; }
[Export] public ActivationType ActivationType { get; private set; }
protected Actor _actor;
public override void Init(Actor actor)
{
_actor = actor;
DefeatScript = actor.DefeatScript;
ActivationType = actor.ActivationType;
_actor.OnDeath += ActorOnOnDeath;
}
private void ActorOnOnDeath()
{
ActivateDefeatScript();
}
public override void Update(double delta)
{
}
public override void PhysicsUpdate(double delta)
{
}
protected void ActivateDefeatScript()
{
if (DefeatScript is not IActivable target)
{
GD.PrintErr($"Target {DefeatScript.Name} is not activable");
return;
}
target?.Activate();
GD.Print($"{DefeatScript.Name} activated");
}
}