using Platformer.Core; using EerieVillage.Skills.Effectors; namespace EerieVillage.Skills { /// /// 스킬 발동 이벤트. Simulation.Event<T> 계승. /// ActiveSkillRuntime.Fire()에서 Simulation.Schedule<SkillFireEvent>() 호출. /// BT12-Dev v1 §3-4 정합. /// /// Phase 2-A: Execute = stub. /// Phase 2-B: ActiveCategory.Projectile → ProjectileSpawner 연결 완료. /// 나머지 카테고리 (MeleeArea·PlacementPersistent·Minion·Debuff·SpecialJudge) = Phase 2-C~ 예정. /// public class SkillFireEvent : Simulation.Event { /// 발동 요청한 액티브 스킬 런타임 public ActiveSkillRuntime Runtime; /// 플레이어 스킬 인벤토리 (Stats·위치·방향 조회 경로) public PlayerSkillInventory Inventory; public override void Execute() { if (Runtime == null) return; var data = Runtime.ActiveData; if (data == null) return; if (Inventory == null) return; // 카테고리 분기 → IEffector 호출 IEffector effector = null; switch (data.Category) { case ActiveCategory.Projectile: effector = new ProjectileSpawner(); break; // Phase 2-C~ 예정: MeleeArea·PlacementPersistent·Minion·Debuff·SpecialJudge default: return; } effector?.Trigger(Runtime, Inventory); } internal override void Cleanup() { Runtime = null; Inventory = null; } } }