EerieVillage/Assets/Scripts/Skills/Events/SkillFireEvent.cs

52 lines
2.0 KiB
C#

using Platformer.Core;
namespace EerieVillage.Skills
{
/// <summary>
/// 스킬 발동 이벤트. Simulation.Event&lt;T&gt; 계승.
/// ActiveSkillRuntime.Fire()에서 Simulation.Schedule&lt;SkillFireEvent&gt;() 호출.
/// BT12-Dev v1 §3-4 정합.
///
/// Phase 2-A: Execute = stub (카테고리 분기 구조만 명시).
/// Phase 2-B: 카테고리별 실 발동기 (ProjectileSpawner·AttackHitbox 등) 연결 예정.
/// </summary>
public class SkillFireEvent : Simulation.Event<SkillFireEvent>
{
/// <summary>발동 요청한 액티브 스킬 런타임</summary>
public ActiveSkillRuntime Runtime;
/// <summary>플레이어 스킬 인벤토리 (Stats·위치·방향 조회 경로)</summary>
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;
}
}
}