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