using Platformer.Core;
namespace EerieVillage.Skills
{
///
/// 스킬 발동 이벤트. Simulation.Event<T> 계승.
/// ActiveSkillRuntime.Fire()에서 Simulation.Schedule<SkillFireEvent>() 호출.
/// BT12-Dev v1 §3-4 정합.
///
/// Phase 2-A: Execute = stub (카테고리 분기 구조만 명시).
/// Phase 2-B: 카테고리별 실 발동기 (ProjectileSpawner·AttackHitbox 등) 연결 예정.
///
public class SkillFireEvent : Simulation.Event
{
/// 발동 요청한 액티브 스킬 런타임
public ActiveSkillRuntime Runtime;
/// 플레이어 스킬 인벤토리 (Stats·위치·방향 조회 경로)
public PlayerSkillInventory Inventory;
public override void Execute()
{
if (Runtime == null) return;
// Phase 2-B 카테고리별 실 발동기 호출 예정 영역
// 현재 Phase 2-A = 구조 stub만 배치.
//
// switch (Runtime.ActiveData.Category)
// {
// case ActiveCategory.Projectile:
// ProjectileSpawner.Spawn(Runtime, Inventory); break;
// case ActiveCategory.MeleeArea:
// AttackHitbox.Fire(Runtime, Inventory); break;
// case ActiveCategory.PlacementPersistent:
// AuraZone.Place(Runtime, Inventory); break;
// case ActiveCategory.Minion:
// MinionSpawner.Spawn(Runtime, Inventory); break;
// case ActiveCategory.Debuff:
// DebuffApplier.Apply(Runtime, Inventory); break;
// case ActiveCategory.SpecialJudge:
// SpecialJudgeHandler.Execute(Runtime, Inventory); break;
// }
}
internal override void Cleanup()
{
Runtime = null;
Inventory = null;
}
}
}