EerieVillage/Assets/Scripts/Progression/SkillCardPlaceholderPool.cs

32 lines
1.1 KiB
C#
Raw Normal View History

BT12-MVP-A Phase 2-A: 경험치·레벨업 시스템 코드 + JSON 테이블 PD 직접 지시 2026-05-08 — (b) 채택 + JSON 테이블 영역 관리. 신규 영역 (8 파일): - Assets/Resources/Progression/level_xp_table.json — Lv 1~30 EXP 테이블 (balance-designer SOT) - Assets/Scripts/Progression/LevelXPTableLoader.cs — Resources.Load + JsonUtility 캐시 - Assets/Scripts/Progression/PlayerProgression.cs — Level·EXP 진행도 (BT12-Dev v1 PlayerStats와 직무 분리) - Assets/Scripts/Progression/ExperienceSystem.cs — EXP 발급 정적 게이트웨이 - Assets/Scripts/Progression/SkillCardPlaceholder.cs — placeholder ScriptableObject - Assets/Scripts/Progression/SkillCardPlaceholderPool.cs — 카드 풀·Draw3Random - Assets/Scripts/Progression/LevelUpManager.cs — 레벨업 발화·일시정지·UI placeholder (Phase 2-B 통합) 기존 파일 수정 (2 파일): - EnemyDeath.cs Execute 마지막 영역 ExperienceSystem.OnEnemyKilled 호출 - PlayerController.cs Awake PlayerProgression 자동 부착 회귀 위험: - BT5-Dev 발판/몬스터 영역 영향 X (EnemyDeath 호출 마지막·PlayerController 자동 부착) - BT7-Dev VS 순수형 영향 X (Schedule 영역 변경 X) - BT12-Dev v1 영역 충돌 X (PlayerStats 분리·신규 namespace EerieVillage.Progression) Phase 2-A 영역 검증: - 적 처치 → EXP 누적 → Lv 임계점 → Console [LevelUpManager] 영역 출력 확증 - Phase 2-B 영역 = SkillSelectionUI prefab + 5 placeholder asset + Scene 통합
2026-05-08 08:53:39 +00:00
using System.Collections.Generic;
using UnityEngine;
namespace EerieVillage.Progression
{
/// <summary>
/// BT12-MVP-A 영역 placeholder 카드 풀. Inspector 영역 SkillCardPlaceholder 5~8장 등록.
/// 차기 BT12-Dev 본격 영역 = SkillRuntimeFactory 영역 활용.
/// </summary>
public class SkillCardPlaceholderPool : MonoBehaviour
{
[SerializeField] List<SkillCardPlaceholder> _allCards = new List<SkillCardPlaceholder>();
public IReadOnlyList<SkillCardPlaceholder> AllCards => _allCards;
/// <summary>5~8장에서 무작위 3장 추출 (중복 X). 카드 영역 부족 시 가능 영역만.</summary>
public List<SkillCardPlaceholder> Draw3Random()
{
var copy = new List<SkillCardPlaceholder>(_allCards);
var result = new List<SkillCardPlaceholder>();
int draw = Mathf.Min(3, copy.Count);
for (int i = 0; i < draw; i++)
{
int idx = Random.Range(0, copy.Count);
result.Add(copy[idx]);
copy.RemoveAt(idx);
}
return result;
}
}
}