feat: 스테이지 클리어 데이터 저장 및 불러오기 로직 추가

This commit is contained in:
aube.lee
2025-02-13 22:58:15 +09:00
parent 4a6d251829
commit d75adaacbf
2 changed files with 37 additions and 9 deletions

View File

@@ -15,18 +15,18 @@ namespace TON
// 클리어한 스테이지 아이디 // 클리어한 스테이지 아이디
public string stageId; public string stageId;
// 클리어에 소요된 시간 // 클리어에 소요된 시간
public int clearTime; public float clearTime;
// 클리어 시간에 따른 별점 // 클리어 시간에 따른 별점
public int starRating; public int starRating;
// 클리어한 날짜와 시간 정보 // 클리어한 날짜와 시간 정보
public string dateTime; public string dateTime;
public StageClearData(string characterId, string stageId, int clearTime, int starRating) public StageClearData(string characterId, string stageId, float clearTime, int starRating)
{ {
id = $"SC{DateTime.UtcNow:yyyyMMddHHmmss}-{characterId}-{stageId}"; id = $"SC{DateTime.UtcNow:yyyyMMddHHmmss}-{characterId}-{stageId}";
this.characterId = characterId; this.characterId = characterId;
this.stageId = stageId; this.stageId = stageId;
this.clearTime = clearTime; this.clearTime = Mathf.Round(clearTime * 100f) / 100f; ;
this.starRating = starRating; this.starRating = starRating;
dateTime = DateTime.UtcNow.ToString(); dateTime = DateTime.UtcNow.ToString();
} }

View File

@@ -1,23 +1,46 @@
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using UnityEngine.Assertions;
namespace TON namespace TON
{ {
public class StageManager : SingletonBase<StageManager> public class StageManager : SingletonBase<StageManager>
{ {
public List<StageClearData> stageClearDatas { get; private set; }
private float stageStartTime; // 스테이지 시작 시간 private float stageStartTime; // 스테이지 시작 시간
public void Initialize()
{
LoadStageClearData();
}
private void LoadStageClearData()
{
#if UNITY_EDITOR
JSONLoader.SaveJsonToPersistentData("stageClear");
#endif
stageClearDatas = JSONLoader.LoadJsonFromPersistentData<List<StageClearData>>("stageClear");
if (stageClearDatas == null)
{
stageClearDatas = new List<StageClearData>();
}
}
private void SaveStageClearData()
{
Assert.IsTrue(JSONLoader.SaveUpdatedJsonToPersistentData(stageClearDatas, "stageClear"));
Initialize();
}
public void StartStage() public void StartStage()
{ {
stageStartTime = Time.time; stageStartTime = Time.time;
} }
public int GetStarCount() public int GetStarCount(float elapsedTime)
{ {
float elapsedTime = Time.time - stageStartTime;
if (elapsedTime <= 180f) if (elapsedTime <= 180f)
return 3; return 3;
else if (elapsedTime <= 300f) else if (elapsedTime <= 300f)
@@ -26,11 +49,16 @@ namespace TON
return 1; return 1;
} }
public void StageClear() public void StageClear(string characterId, string stageId)
{ {
int starCount = GetStarCount(); float clearTime = Time.time - stageStartTime;
int starCount = GetStarCount(clearTime);
Debug.Log($"스테이지 클리어! 별 개수: {starCount}"); Debug.Log($"스테이지 클리어! 별 개수: {starCount}");
// UI 업데이트, 데이터 저장 로직 추가 가능
// UI 업데이트, 데이터 저장 로직 추가
StageClearData stageClearData = new StageClearData(characterId, stageId, clearTime, starCount);
stageClearDatas.Add(stageClearData);
SaveStageClearData();
} }
} }