feat: 하트 시스템 정상 동작 하도록 변경

This commit is contained in:
aube.lee
2025-02-26 21:06:30 +09:00
parent 11639c0f47
commit c0f4ace138
5 changed files with 1616 additions and 1290 deletions

View File

@@ -12,7 +12,7 @@ namespace TON
public HeartData currentHeartData { get; private set; }
private int characterId;
public int maxHearts = 3;
public int maxHearts = 5;
public int heartRechargeTime = 360; // 하트 충전 시간 6분
public int GetCurrentHearts() => currentHeartData.currentHearts;

View File

@@ -13,6 +13,7 @@ namespace TON
public Sprite fullHeartSprite; // 채워진 하트
public Sprite emptyHeartSprite; // 빈 하트
public TextMeshProUGUI timerText; // 하트 충전 타이머 UI
public GameObject overHeartText; // 하트 충전 타이머 UI
private void OnEnable()
@@ -33,6 +34,16 @@ namespace TON
{
heartImages[i].sprite = (i < currentHearts) ? fullHeartSprite : emptyHeartSprite;
}
if (currentHearts > HeartDataManager.Singleton.maxHearts)
{
overHeartText.SetActive(true);
overHeartText.GetComponent<TextMeshProUGUI>().text = $"+ {currentHearts - HeartDataManager.Singleton.maxHearts}";
}
else
{
overHeartText.SetActive(false);
}
}
private void UpdateTimer()

View File

@@ -12,6 +12,8 @@ namespace TON
[SerializeField]
private TextMeshProUGUI characterName;
[SerializeField]
private TextMeshProUGUI characterLevel;
[SerializeField]
private TextMeshProUGUI characterHp;
[SerializeField]
private TextMeshProUGUI characterMp;
@@ -28,6 +30,8 @@ namespace TON
public GameObject stagePagePrefab;
public Transform stagePageGroup;
public GameObject emptyHeartAlert;
private void Start()
{
SetCharacterData();
@@ -44,6 +48,7 @@ namespace TON
characterName.text = player.name;
characterHp.text = $"{player.hp}";
characterMp.text = $"{player.mp}";
characterLevel.text = $"Lv {player.level}";
characterAttck.text = $"{player.attackPower}";
characterDefence.text = $"{player.defensivePower}";
characterCritical.text = $"{player.critical}";
@@ -94,22 +99,28 @@ namespace TON
public void OnClickStagePlayButton()
{
// FIXME: 개발 편의를 위해 스테이지 입장시 하트 소모 로직 주석처리
// // 가지고 있는 하트가 없다면 입장 불가
// if (HeartDataManager.Singleton.GetCurrentHearts() < 1)
// {
// // TODO: 입장 불가 modal 출력
// Debug.Log("보유한 하트 없음");
// return;
// }
// 가지고 있는 하트가 없다면 입장 불가
if (HeartDataManager.Singleton.GetCurrentHearts() < 1)
{
// 입장 불가 modal 출력
emptyHeartAlert.SetActive(true);
// 입장 불가 modal 1초 후 숨김
Invoke(nameof(EnactiveAlert), 1f);
return;
}
// // 입장 시 하트 소모
// HeartDataManager.Singleton.UseHeart();
// 입장 시 하트 소모
HeartDataManager.Singleton.UseHeart();
OnClickChangeStageButton();
Main.Singleton.ChangeScene(SceneType.Stage);
}
private void EnactiveAlert()
{
emptyHeartAlert.SetActive(true);
}
public void OnClickSkillSettingButton()
{
UIManager.Show<SkillSettingUI>(UIList.SkillSettingUI);