feat: 스테이지 클리어 데이터 저장 및 불러오기 로직 추가
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user