EerieVillage/Assets/Scripts/Progression/ExperienceSystem.cs

34 lines
1.6 KiB
C#

using UnityEngine;
using Platformer.Mechanics;
namespace EerieVillage.Progression
{
/// <summary>
/// EXP 발급 정적 영역. EnemyDeath 영역 단일 호출 통로.
/// 차기 BT12-Dev 영역 P19 XPMultiplier 영역 적용 hook.
/// </summary>
public static class ExperienceSystem
{
// [BT12-MVP-A 임시] PD 직접 지시 2026-05-09 — 기능 테스트 영역 EXP 보상 1 고정. 차기 BT12-Dev 본격 영역 = enemy_xp_reward.json 분리 + 본 임시 영역 제거 의무.
const int DEFAULT_XP_REWARD = 1;
/// <summary>적 처치 시 호출 — Player 영역 PlayerProgression 갱신.</summary>
public static void OnEnemyKilled(EnemyController enemy, PlayerController player)
{
Debug.Log($"[ExperienceSystem] OnEnemyKilled — player={(player == null ? "NULL" : player.name)} enemy={(enemy == null ? "NULL" : enemy.name)}");
if (player == null) { Debug.LogWarning("[ExperienceSystem] player == null → EXP 발급 X"); return; }
var prog = player.GetComponent<PlayerProgression>();
if (prog == null) { Debug.LogWarning("[ExperienceSystem] PlayerProgression == null → 자동 부착 영역 실패 가능"); return; }
int xp = ComputeXPReward(enemy);
Debug.Log($"[ExperienceSystem] GainXP({xp}) 호출 → PlayerProgression");
prog.GainXP(xp);
}
/// <summary>placeholder — 적 종류·등급별 XP 영역 차기 BT12-Dev 영역 (enemy_xp_reward.json 분리).</summary>
static int ComputeXPReward(EnemyController enemy)
{
return DEFAULT_XP_REWARD;
}
}
}