EerieVillage/Assets/Scripts/Progression/ExperienceSystem.cs

31 lines
1.0 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 UnityEngine;
using Platformer.Mechanics;
namespace EerieVillage.Progression
{
/// <summary>
/// EXP 발급 정적 영역. EnemyDeath 영역 단일 호출 통로.
/// 차기 BT12-Dev 영역 P19 XPMultiplier 영역 적용 hook.
/// </summary>
public static class ExperienceSystem
{
const int DEFAULT_XP_REWARD = 5;
/// <summary>적 처치 시 호출 — Player 영역 PlayerProgression 갱신.</summary>
public static void OnEnemyKilled(EnemyController enemy, PlayerController player)
{
if (player == null) return;
var prog = player.GetComponent<PlayerProgression>();
if (prog == null) return;
int xp = ComputeXPReward(enemy);
prog.GainXP(xp);
}
/// <summary>placeholder — 적 종류·등급별 XP 영역 차기 BT12-Dev 영역 (enemy_xp_reward.json 분리).</summary>
static int ComputeXPReward(EnemyController enemy)
{
return DEFAULT_XP_REWARD;
}
}
}