diff --git a/Gameton-06/Assets/Gameton/Scripts/GameData/StageClearData.cs b/Gameton-06/Assets/Gameton/Scripts/GameData/StageClearData.cs index c39c91a1..8cabf799 100644 --- a/Gameton-06/Assets/Gameton/Scripts/GameData/StageClearData.cs +++ b/Gameton-06/Assets/Gameton/Scripts/GameData/StageClearData.cs @@ -15,18 +15,18 @@ namespace TON // 클리어한 스테이지 아이디 public string stageId; // 클리어에 소요된 시간 - public int clearTime; + public float clearTime; // 클리어 시간에 따른 별점 public int starRating; // 클리어한 날짜와 시간 정보 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}"; this.characterId = characterId; this.stageId = stageId; - this.clearTime = clearTime; + this.clearTime = Mathf.Round(clearTime * 100f) / 100f; ; this.starRating = starRating; dateTime = DateTime.UtcNow.ToString(); } diff --git a/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs b/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs index 4c5d2fef..04ec05a4 100644 --- a/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs +++ b/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs @@ -1,23 +1,46 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using UnityEngine.Assertions; namespace TON { public class StageManager : SingletonBase { + public List stageClearDatas { get; private set; } private float stageStartTime; // 스테이지 시작 시간 + public void Initialize() + { + LoadStageClearData(); + } + + private void LoadStageClearData() + { +#if UNITY_EDITOR + JSONLoader.SaveJsonToPersistentData("stageClear"); +#endif + stageClearDatas = JSONLoader.LoadJsonFromPersistentData>("stageClear"); + if (stageClearDatas == null) + { + stageClearDatas = new List(); + } + } + + private void SaveStageClearData() + { + Assert.IsTrue(JSONLoader.SaveUpdatedJsonToPersistentData(stageClearDatas, "stageClear")); + Initialize(); + } + public void StartStage() { stageStartTime = Time.time; } - public int GetStarCount() + public int GetStarCount(float elapsedTime) { - float elapsedTime = Time.time - stageStartTime; - if (elapsedTime <= 180f) return 3; else if (elapsedTime <= 300f) @@ -26,11 +49,16 @@ namespace TON 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}"); - // UI 업데이트, 데이터 저장 로직 추가 가능 + + // UI 업데이트, 데이터 저장 로직 추가 + StageClearData stageClearData = new StageClearData(characterId, stageId, clearTime, starCount); + stageClearDatas.Add(stageClearData); + SaveStageClearData(); } }