86 lines
3.5 KiB
C#
86 lines
3.5 KiB
C#
using UnityEngine;
|
|
using UnityEngine.InputSystem;
|
|
using EerieVillage.Skills.Effectors;
|
|
|
|
namespace EerieVillage.Skills.Test
|
|
{
|
|
/// <summary>
|
|
/// PD 지시 (2026-05-13) 테스트용 — 키보드 1~5 키 영역 각 ActiveSkill 즉시 발사.
|
|
/// 1: A02 화염부 (파이어볼·Projectile)
|
|
/// 2: A04 뇌격부 (번개 충격·MeleeArea)
|
|
/// 3: A05 학익진 (Fan Slash·MeleeArea)
|
|
/// 4: 레이저 (Dragonfire Laser·MeleeArea)
|
|
/// 5: A13 천둥발 (Lightningball·Projectile Piercing)
|
|
/// </summary>
|
|
[RequireComponent(typeof(PlayerSkillInventory))]
|
|
public class TestSkillFireOn1to5 : MonoBehaviour
|
|
{
|
|
[Tooltip("키 1 (현재 A02 화염부)")] public ActiveSkillData Skill1;
|
|
[Tooltip("키 2 (현재 A04 뇌격부)")] public ActiveSkillData Skill2;
|
|
[Tooltip("키 3 (A05 학익진)")] public ActiveSkillData Skill3;
|
|
[Tooltip("키 4 (레이저)")] public ActiveSkillData Skill4;
|
|
[Tooltip("키 5 (A13 천둥발)")] public ActiveSkillData Skill5;
|
|
|
|
PlayerSkillInventory _inventory;
|
|
ActiveSkillRuntime[] _runtimes = new ActiveSkillRuntime[5];
|
|
|
|
readonly ProjectileSpawner _projSpawner = new ProjectileSpawner();
|
|
readonly LightningStrikeSpawner _lightningSpawner = new LightningStrikeSpawner();
|
|
readonly MeleeAreaSpawner _meleeSpawner = new MeleeAreaSpawner();
|
|
readonly LaserSpawner _laserSpawner = new LaserSpawner();
|
|
|
|
void Awake()
|
|
{
|
|
EnsureRuntimes();
|
|
}
|
|
|
|
// PD 지시 2026-05-13 — Awake 시점 Inspector reference 미정합 가능성 대비 lazy init.
|
|
void EnsureRuntimes()
|
|
{
|
|
if (_inventory == null) _inventory = GetComponent<PlayerSkillInventory>();
|
|
ActiveSkillData[] datas = { Skill1, Skill2, Skill3, Skill4, Skill5 };
|
|
for (int i = 0; i < 5; i++)
|
|
{
|
|
if (_runtimes[i] != null) continue;
|
|
if (datas[i] == null) continue;
|
|
_runtimes[i] = new ActiveSkillRuntime(datas[i]);
|
|
_runtimes[i].OnEquip(_inventory);
|
|
}
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
EnsureRuntimes();
|
|
if (Keyboard.current == null) return;
|
|
|
|
if (Keyboard.current.digit1Key.wasPressedThisFrame) Fire(0);
|
|
else if (Keyboard.current.digit2Key.wasPressedThisFrame) Fire(1);
|
|
else if (Keyboard.current.digit3Key.wasPressedThisFrame) Fire(2);
|
|
else if (Keyboard.current.digit4Key.wasPressedThisFrame) Fire(3);
|
|
else if (Keyboard.current.digit5Key.wasPressedThisFrame) Fire(4);
|
|
}
|
|
|
|
void Fire(int idx)
|
|
{
|
|
var rt = _runtimes[idx];
|
|
if (rt == null || _inventory == null) return;
|
|
var data = rt.ActiveData;
|
|
|
|
// 카테고리 분기
|
|
if (data.Category == ActiveCategory.Projectile)
|
|
{
|
|
_projSpawner.Trigger(rt, _inventory);
|
|
}
|
|
else if (data.Category == ActiveCategory.MeleeArea)
|
|
{
|
|
// 키 2 (A04 번개 충격) — LightningStrikeSpawner
|
|
// 키 3 (A05 학익진) — MeleeAreaSpawner
|
|
// 키 4 (레이저) — LaserSpawner
|
|
if (idx == 1) _lightningSpawner.Trigger(rt, _inventory);
|
|
else if (idx == 3) _laserSpawner.Trigger(rt, _inventory);
|
|
else _meleeSpawner.Trigger(rt, _inventory);
|
|
}
|
|
}
|
|
}
|
|
}
|