From c8f59a7080b2b2896248c04952ae9383a54f0ddf Mon Sep 17 00:00:00 2001 From: HaeinLEE Date: Thu, 20 Mar 2025 15:38:32 +0900 Subject: [PATCH] =?UTF-8?q?[Feat]=20=EB=A6=AC=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=EC=97=90=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84=20=EC=A0=95=EB=B3=B4=20=EC=A0=80=EC=9E=A5=ED=95=A0=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Script/Game/GameLogic.cs | 2 +- Assets/Script/Replay/ReplayCell.cs | 9 +++---- Assets/Script/Replay/ReplayController.cs | 3 ++- Assets/Script/Replay/ReplayManager.cs | 32 +++++++++++++++++++++--- 4 files changed, 36 insertions(+), 10 deletions(-) diff --git a/Assets/Script/Game/GameLogic.cs b/Assets/Script/Game/GameLogic.cs index 94c54f0..e762153 100644 --- a/Assets/Script/Game/GameLogic.cs +++ b/Assets/Script/Game/GameLogic.cs @@ -202,7 +202,7 @@ public class GameLogic : MonoBehaviour }; } - //TODO: 기보 매니저에게 플레이어 닉네임 넘겨주기 + //TODO: 기보 매니저에게 플레이어 닉네임 넘겨주기, 프로필정보도 넘겨줘야 합니다. ReplayManager.Instance.InitReplayData("PlayerA","nicknameB"); diff --git a/Assets/Script/Replay/ReplayCell.cs b/Assets/Script/Replay/ReplayCell.cs index 0a0c075..3f1cf71 100644 --- a/Assets/Script/Replay/ReplayCell.cs +++ b/Assets/Script/Replay/ReplayCell.cs @@ -81,10 +81,9 @@ public class ReplayCell : MonoBehaviour public void OnClickReplayButton() { - //TODO: 확인 패널 띄우고 밑의 내용 콜백 함수로 옮기기 - // GameManager.Instance.OpenConfirmPanel($"{_opponentNickname}님 과의 대결을 다시 보시겠습니까?", () => { }); - ReplayManager.Instance.SetReplayData(_storedReplayRecord); - SceneManager.LoadScene("Replay"); + GameManager.Instance.panelManager.OpenConfirmPanel($"{_opponentNickname}님 과의 대결을 다시 보시겠습니까?", + () => { + ReplayManager.Instance.SetReplayData(_storedReplayRecord); + SceneManager.LoadScene("Replay"); }); } - } diff --git a/Assets/Script/Replay/ReplayController.cs b/Assets/Script/Replay/ReplayController.cs index b44b2b1..999c602 100644 --- a/Assets/Script/Replay/ReplayController.cs +++ b/Assets/Script/Replay/ReplayController.cs @@ -11,6 +11,8 @@ public class ReplayController : MonoBehaviour [SerializeField] private TMP_Text playerBNicknameText; [SerializeField] private Image playerAImage; [SerializeField] private Image playerBImage; + [SerializeField] private GameObject[] userAProfileImages; + [SerializeField] private GameObject[] userBProfileImages; void Start() { InitReplayUI(); @@ -56,5 +58,4 @@ public class ReplayController : MonoBehaviour playerANicknameText.text = ReplayManager.Instance.GetPlayerANickname(); playerBNicknameText.text = ReplayManager.Instance.GetPlayerBNickname(); } - } diff --git a/Assets/Script/Replay/ReplayManager.cs b/Assets/Script/Replay/ReplayManager.cs index a6601f8..f44a573 100644 --- a/Assets/Script/Replay/ReplayManager.cs +++ b/Assets/Script/Replay/ReplayManager.cs @@ -12,7 +12,11 @@ public class ReplayRecord public string playerA; public string playerB; public List moves = new List(); + //TODO: winnerPlayerType삭제 public string winnerPlayerType; + public string gameResult; //무승부를 반영하기위해 승자가 아닌 게임 결과를 저장. + public string playerAPofileImageIndex; + public string playerBPofileImageIndex; } [Serializable] public class Move @@ -91,11 +95,13 @@ public class ReplayManager : Singleton /// /// 게임 시작에 호출해서 기보 데이터 초기화 /// - public void InitReplayData(string playerANickname="", string playerBNickname="") + public void InitReplayData(string playerANickname="", string playerBNickname="", int playerAProfileIndex=0, int playerBProfileIndex=0) { _recordingReplayData = new ReplayRecord(); _recordingReplayData.playerA = playerANickname; _recordingReplayData.playerB = playerBNickname; + _recordingReplayData.playerAPofileImageIndex = playerBNickname.ToString(); + _recordingReplayData.playerBPofileImageIndex = playerAProfileIndex.ToString(); } /// @@ -106,8 +112,7 @@ public class ReplayManager : Singleton string stoneColor = stoneType.ToString(); _recordingReplayData.moves.Add(new Move(stoneColor, row, col)); } - - + /// /// 게임 종료 후 호출하여 리플레이 데이터를 저장합니다. /// @@ -134,6 +139,27 @@ public class ReplayManager : Singleton Debug.LogError($"An error occurred while saving replay data:{e.Message}"); } } + public void SaveReplayDataResult(Enums.GameResult gameResultType) + { + try + { + string time = DateTime.Now.ToString(("yyyy-MM-dd HH_mm_ss")); + _recordingReplayData.gameDate = time; + _recordingReplayData.gameResult = gameResultType.ToString(); + + // Json데이터로 변환해서 저장 + string json = JsonUtility.ToJson(_recordingReplayData, true); + string path = Path.Combine(Application.persistentDataPath, $"{time}.json"); + File.WriteAllText(path, json); + + //최신 데이터 10개만 유지되도록 저장 + RecordCountChecker(); + } + catch(Exception e) + { + Debug.LogError($"An error occurred while saving replay data:{e.Message}"); + } + } #endregion