71 lines
1.5 KiB
C#
71 lines
1.5 KiB
C#
|
|
using System.Collections;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using UnityEngine;
|
|||
|
|
|
|||
|
|
public class RandomStatCardInstance
|
|||
|
|
{
|
|||
|
|
private RandomStatCardData data;
|
|||
|
|
|
|||
|
|
private StatType statType;
|
|||
|
|
private int value;
|
|||
|
|
|
|||
|
|
private bool isConfirmed = false;
|
|||
|
|
|
|||
|
|
private Stats stats; // ⭐ 대상 Stats
|
|||
|
|
|
|||
|
|
public RandomStatCardInstance(RandomStatCardData data, Stats stats)
|
|||
|
|
{
|
|||
|
|
this.data = data;
|
|||
|
|
this.stats = stats;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 🔍 미리보기용 랜덤
|
|||
|
|
public void RollPreview()
|
|||
|
|
{
|
|||
|
|
statType = data.possibleStats[Random.Range(0, data.possibleStats.Length)];
|
|||
|
|
value = Random.Range(data.minValue, data.maxValue + 1);
|
|||
|
|
isConfirmed = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// UI 표시용
|
|||
|
|
public string GetText()
|
|||
|
|
{
|
|||
|
|
string sign = value >= 0 ? "+" : "";
|
|||
|
|
return $"{statType} {sign}{value}";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ✅ 선택 시 호출
|
|||
|
|
public void Confirm()
|
|||
|
|
{
|
|||
|
|
if (isConfirmed) return;
|
|||
|
|
|
|||
|
|
ApplyStat();
|
|||
|
|
isConfirmed = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ⭐ 실제 스탯 적용
|
|||
|
|
private void ApplyStat()
|
|||
|
|
{
|
|||
|
|
if (stats == null) return;
|
|||
|
|
|
|||
|
|
switch (statType)
|
|||
|
|
{
|
|||
|
|
case StatType.MaxHealth:
|
|||
|
|
stats.AddMaxHealth(value);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case StatType.MoveSpeed:
|
|||
|
|
stats.AddMoveSpeed(value);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case StatType.Strength:
|
|||
|
|
stats.AddStrength(value);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case StatType.AttackDamage:
|
|||
|
|
stats.AddAttackDamage(value);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|