cirnogodot/Scripts/Components/FSM/Enemy/Dead.cs

39 lines
No EOL
1.1 KiB
C#

using Cirno.Scripts.Enums;
using Godot;
namespace Cirno.Scripts.Components.FSM.Enemy;
public partial class Dead : EnemyStateBase
{
public override EnemyState StateId => EnemyState.Dead;
private EnemyStorageModule StorageModule { get; set; }
private EnemyDropsProvider DropsProvider { get; set; }
public override void Init(IStateMachine<EnemyState, CharacterBody2D> machine)
{
base.Init(machine);
StorageModule ??= StateMachine.GetModule<EnemyStorageModule>();
DropsProvider ??= StateMachine.GetModule<EnemyDropsProvider>();
}
public override void EnterState()
{
base.EnterState();
// Play death script
if (StorageModule.Root.DefeatScript is IActivable activatable)
{
activatable.Activate(StorageModule.Root.ActivationType);
}
DropsProvider.DropLoot();
GameManager.Instance.AddMotivation(StorageModule.EnemyData.MotivationReward);
StorageModule.Root.TriggerDeath();
StorageModule.Root.QueueFree();
}
}