[Feat] 리플레이데이터에 프로필 정보 저장할 수 있도록 함수 추가

This commit is contained in:
HaeinLEE 2025-03-20 15:38:32 +09:00
parent 105566f85f
commit c8f59a7080
4 changed files with 36 additions and 10 deletions

View File

@ -202,7 +202,7 @@ public class GameLogic : MonoBehaviour
};
}
//TODO: 기보 매니저에게 플레이어 닉네임 넘겨주기
//TODO: 기보 매니저에게 플레이어 닉네임 넘겨주기, 프로필정보도 넘겨줘야 합니다.
ReplayManager.Instance.InitReplayData("PlayerA","nicknameB");

View File

@ -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"); });
}
}

View File

@ -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();
}
}

View File

@ -12,7 +12,11 @@ public class ReplayRecord
public string playerA;
public string playerB;
public List<Move> moves = new List<Move>();
//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<ReplayManager>
///<summary>
/// 게임 시작에 호출해서 기보 데이터 초기화
/// </summary>
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();
}
///<summary>
@ -106,8 +112,7 @@ public class ReplayManager : Singleton<ReplayManager>
string stoneColor = stoneType.ToString();
_recordingReplayData.moves.Add(new Move(stoneColor, row, col));
}
/// <summary>
/// 게임 종료 후 호출하여 리플레이 데이터를 저장합니다.
/// </summary>
@ -134,6 +139,27 @@ public class ReplayManager : Singleton<ReplayManager>
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