feat: 스테이지 저장 로직 수정 작업 1차

This commit is contained in:
aube.lee
2025-02-26 22:39:55 +09:00
parent 4c480241ab
commit 379d9431d0
2 changed files with 41 additions and 26 deletions

View File

@@ -11,7 +11,7 @@ namespace TON
if (collision.CompareTag("Player")) if (collision.CompareTag("Player"))
{ {
// 캐릭터가 StageDeadZone에 들어옴과 동시에 게임오버 정보를 저장하도록 함 // 캐릭터가 StageDeadZone에 들어옴과 동시에 게임오버 정보를 저장하도록 함
StageManager.Singleton.StageGameOver(); // StageManager.Singleton.StageGameOver();
// 캐릭터 Dead 로직 실행 // 캐릭터 Dead 로직 실행
CharacterBase character = collision.gameObject.GetComponentInChildren<CharacterBase>(); CharacterBase character = collision.gameObject.GetComponentInChildren<CharacterBase>();

View File

@@ -14,9 +14,14 @@ namespace TON
// 현재 플레이 시간을 초 단위로 반환하는 프로퍼티 // 현재 플레이 시간을 초 단위로 반환하는 프로퍼티
public float PlayTime => Time.time - stageStartTime; public float PlayTime => Time.time - stageStartTime;
public int goldReward { get; private set; } = 0; // 골드 획득 보상
public int expReward { get; private set; } = 0; // 경험치 획득 보상
public int waveCount { get; private set; } // 클리어한 웨이브 넘버
public int gameScore { get; private set; } = 0; // 몬스터 처치로 얻은 점수 보상
private float stageStartTime; // 스테이지 시작 시간 private float stageStartTime; // 스테이지 시작 시간
private string stageId; // 스테이지 아이디 // private string stageId; // 스테이지 아이디
public void Initialize() public void Initialize()
{ {
@@ -78,43 +83,53 @@ namespace TON
public void StartStage(string stageId) public void StartStage(string stageId)
{ {
stageStartTime = Time.time; stageStartTime = Time.time;
this.stageId = stageId; // this.stageId = stageId;
} }
public int GetStarCount(float elapsedTime) // public int GetStarCount(float elapsedTime)
// {
// if (elapsedTime <= 180f)
// return 3;
// else if (elapsedTime <= 300f)
// return 2;
// else
// return 1;
// }
/// <summary>
/// 게임 웨이브 진행 시 획득한 골드와 경험치 정보를 저장하게 함
/// </summary>
public void SetWaveData(int wave, int gold, int exp, int score)
{ {
if (elapsedTime <= 180f) waveCount = wave;
return 3; goldReward += gold;
else if (elapsedTime <= 300f) expReward += exp;
return 2; gameScore += score;
else
return 1;
} }
public void StageClear() public void StageClear()
{ {
string characterId = PlayerDataManager.Singleton.player.id; string characterId = PlayerPrefs.GetString("BackendCustomID", string.Empty);
float clearTime = Time.time - stageStartTime; float clearTime = Time.time - stageStartTime;
int starCount = GetStarCount(clearTime); // int starCount = GetStarCount(clearTime);
Debug.Log($"스테이지 클리어! 별 개수: {starCount}");
// UI 업데이트, 데이터 저장 로직 추가 // TODO: UI 업데이트, 데이터 저장 로직 추가
StageClearData stageClearData = new StageClearData(characterId, stageId, clearTime, starCount); // StageClearData stageClearData = new StageClearData(characterId, stageId, clearTime, starCount);
stageClearDatas.Add(stageClearData); // stageClearDatas.Add(stageClearData);
SaveStageClearData(); SaveStageClearData();
} }
public void StageGameOver() // public void StageGameOver()
{ // {
string characterId = PlayerDataManager.Singleton.player.id; // string characterId = PlayerDataManager.Singleton.player.id;
float clearTime = Time.time - stageStartTime; // float clearTime = Time.time - stageStartTime;
int starCount = -1; // int starCount = -1;
// UI 업데이트, 데이터 저장 로직 추가 // // UI 업데이트, 데이터 저장 로직 추가
StageClearData stageClearData = new StageClearData(characterId, stageId, clearTime, starCount); // StageClearData stageClearData = new StageClearData(characterId, stageId, clearTime, starCount);
stageClearDatas.Add(stageClearData); // stageClearDatas.Add(stageClearData);
SaveStageClearData(); // SaveStageClearData();
} // }
} }
} }