From a81305e261232e032db75470b0527e086f85cc38 Mon Sep 17 00:00:00 2001 From: HaeinLEE Date: Mon, 24 Mar 2025 09:47:46 +0900 Subject: [PATCH 1/5] =?UTF-8?q?[Fix]=20=EA=B8=B0=EB=B3=B4=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EC=A0=80=EC=9E=A5=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PlayerB 프로필 인덱스가 저장되어야 하는데 닉네임이 중복 저장되던 버그 수정 --- Assets/Script/Replay/ReplayManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/Script/Replay/ReplayManager.cs b/Assets/Script/Replay/ReplayManager.cs index f44a573..e7025c8 100644 --- a/Assets/Script/Replay/ReplayManager.cs +++ b/Assets/Script/Replay/ReplayManager.cs @@ -100,7 +100,7 @@ public class ReplayManager : Singleton _recordingReplayData = new ReplayRecord(); _recordingReplayData.playerA = playerANickname; _recordingReplayData.playerB = playerBNickname; - _recordingReplayData.playerAPofileImageIndex = playerBNickname.ToString(); + _recordingReplayData.playerAPofileImageIndex = playerAProfileIndex.ToString(); _recordingReplayData.playerBPofileImageIndex = playerAProfileIndex.ToString(); } From efa37d0e3d353d13f330f7a8c40d1d90e07f4761 Mon Sep 17 00:00:00 2001 From: HaeinLEE Date: Mon, 24 Mar 2025 10:42:29 +0900 Subject: [PATCH 2/5] =?UTF-8?q?[Feat]=20ReplayPanelItemsController=20?= =?UTF-8?q?=EC=8A=B9=ED=8C=A8=20=EA=B2=B0=EA=B3=BC=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EC=84=A4=EC=A0=95=ED=95=98=EB=8A=94=20=ED=83=80?= =?UTF-8?q?=EC=9E=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PlayerA,B비교에서 결과값으로 변경 --- Assets/Script/Replay/ReplayController.cs | 5 ++- Assets/Script/Replay/ReplayManager.cs | 45 ++++++------------- .../ReplayPanelItemsController.cs | 3 +- 3 files changed, 19 insertions(+), 34 deletions(-) diff --git a/Assets/Script/Replay/ReplayController.cs b/Assets/Script/Replay/ReplayController.cs index d6adca1..db65028 100644 --- a/Assets/Script/Replay/ReplayController.cs +++ b/Assets/Script/Replay/ReplayController.cs @@ -19,8 +19,7 @@ public class ReplayController : MonoBehaviour public void OnclickExitButton() { - //TODO: 메인씬으로 다시 넘어갈 때 호출해야하는 함수 등등이 있을지.... - SceneManager.LoadScene("Main-Jay"); + SceneManager.LoadScene("Main"); } public void OnclickFirstButton() @@ -57,6 +56,8 @@ public class ReplayController : MonoBehaviour playerBNicknameText.text = ReplayManager.Instance.GetPlayerBNickname(); //TODO: ReplayManager에서 프로필 인덱스 가져와서 SetUserProfileImages호출하기 + int playerAProgileIndex = ReplayManager.Instance.GetPlayerAProfileIndex(); + int playerBProgileIndex = ReplayManager.Instance.GetPlayerBProfileIndex(); } private void SetUserProfileImages(int imageIndex,GameObject[] profileImages) diff --git a/Assets/Script/Replay/ReplayManager.cs b/Assets/Script/Replay/ReplayManager.cs index e7025c8..19c7157 100644 --- a/Assets/Script/Replay/ReplayManager.cs +++ b/Assets/Script/Replay/ReplayManager.cs @@ -12,11 +12,9 @@ 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; + public int playerAPofileImageIndex; + public int playerBPofileImageIndex; } [Serializable] public class Move @@ -100,8 +98,8 @@ public class ReplayManager : Singleton _recordingReplayData = new ReplayRecord(); _recordingReplayData.playerA = playerANickname; _recordingReplayData.playerB = playerBNickname; - _recordingReplayData.playerAPofileImageIndex = playerAProfileIndex.ToString(); - _recordingReplayData.playerBPofileImageIndex = playerAProfileIndex.ToString(); + _recordingReplayData.playerAPofileImageIndex = playerAProfileIndex; + _recordingReplayData.playerBPofileImageIndex = playerAProfileIndex; } /// @@ -116,29 +114,6 @@ public class ReplayManager : Singleton /// /// 게임 종료 후 호출하여 리플레이 데이터를 저장합니다. /// - public void SaveReplayData(Enums.PlayerType winnerPlayerType) - { - try - { - string time = DateTime.Now.ToString(("yyyy-MM-dd HH_mm_ss")); - _recordingReplayData.gameDate = time; - _recordingReplayData.winnerPlayerType = winnerPlayerType.ToString(); - - - 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}"); - } - } public void SaveReplayDataResult(Enums.GameResult gameResultType) { try @@ -265,8 +240,16 @@ public class ReplayManager : Singleton { return _selectedReplayRecord.playerB; } - - + + public int GetPlayerAProfileIndex() + { + return _selectedReplayRecord.playerAPofileImageIndex; + } + + public int GetPlayerBProfileIndex() + { + return _selectedReplayRecord.playerBPofileImageIndex; + } #endregion protected override void OnSceneLoaded(Scene scene, LoadSceneMode mode) diff --git a/Assets/Script/UI/PanelController/ReplayPanelItemsController.cs b/Assets/Script/UI/PanelController/ReplayPanelItemsController.cs index 9a8cd5b..8b64119 100644 --- a/Assets/Script/UI/PanelController/ReplayPanelItemsController.cs +++ b/Assets/Script/UI/PanelController/ReplayPanelItemsController.cs @@ -35,7 +35,8 @@ public class ReplayPanelItemsController : ScrollPanelController string opponentNickname = myPlayerType==Enums.PlayerType.PlayerA ? replayRecord.playerB : replayRecord.playerA; replayCell.SetMyPlayerType(myPlayerType); - replayCell.SetWinImage(myPlayerType.ToString().Equals(replayRecord.winnerPlayerType)); + replayCell.SetWinImage(Enums.GameResult.Win.ToString() == replayRecord.gameResult); + replayCell.SetOpponentPlayerNickname(opponentNickname); replayCell.SetRecordDate(replayRecord.gameDate); replayCell.SetReplayRecord(replayRecord); From ccfc4b702a5ab326e4c10b28c5c4c3d2b670e863 Mon Sep 17 00:00:00 2001 From: HaeinLEE Date: Mon, 24 Mar 2025 11:24:22 +0900 Subject: [PATCH 3/5] =?UTF-8?q?[Feat]=20=EB=AC=B4=EC=8A=B9=EB=B6=80=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=ED=95=98=EC=97=AC=20=EC=8A=B9=ED=8C=A8=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 아직 사용은 bool로 승패만 판단하고 있습니다. --- Assets/Script/Replay/ReplayCell.cs | 25 +++++++++++++++++++++++- Assets/Script/Replay/ReplayController.cs | 9 ++++++--- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/Assets/Script/Replay/ReplayCell.cs b/Assets/Script/Replay/ReplayCell.cs index 3f1cf71..25a38b1 100644 --- a/Assets/Script/Replay/ReplayCell.cs +++ b/Assets/Script/Replay/ReplayCell.cs @@ -10,6 +10,7 @@ public class ReplayCell : MonoBehaviour { [SerializeField] private Image winImage; [SerializeField] private Image loseImage; + [SerializeField] private Image drawImage; [SerializeField] private TMP_Text playerNicknameText; [SerializeField] private TMP_Text recordDateText; @@ -18,7 +19,7 @@ public class ReplayCell : MonoBehaviour private string _opponentNickname; - //유저가 이겼을 경우 '승'(파랑)이미지 졌을 경우'패'(빨강)이미지 + //TODO:승, 패 외에 무승부 반영하기. bool => int public void SetWinImage(bool isWin) { if (isWin == true) @@ -32,6 +33,28 @@ public class ReplayCell : MonoBehaviour winImage.gameObject.SetActive(false); } } + + public void SetWinImage(Enums.GameResult gameResult) + { + switch(gameResult) + { + case Enums.GameResult.Win: + winImage.gameObject.SetActive(true); + loseImage.gameObject.SetActive(false); + drawImage.gameObject.SetActive(false); + break; + case Enums.GameResult.Lose: + winImage.gameObject.SetActive(false); + loseImage.gameObject.SetActive(true); + drawImage.gameObject.SetActive(false); + break; + case Enums.GameResult.Draw: + winImage.gameObject.SetActive(false); + loseImage.gameObject.SetActive(false); + drawImage.gameObject.SetActive(true); + break; + } + } public void SetMyPlayerType(Enums.PlayerType myPlayerType) { diff --git a/Assets/Script/Replay/ReplayController.cs b/Assets/Script/Replay/ReplayController.cs index db65028..68ddce5 100644 --- a/Assets/Script/Replay/ReplayController.cs +++ b/Assets/Script/Replay/ReplayController.cs @@ -13,8 +13,7 @@ public class ReplayController : MonoBehaviour [SerializeField] private GameObject[] userBProfileImages; void Start() { - // InitReplayUI(); - //TODO: 프로필 이미지 불러오기 + InitReplayUI(); } public void OnclickExitButton() @@ -52,12 +51,16 @@ public class ReplayController : MonoBehaviour public void InitReplayUI() { + //유저 닉네임 설정 + //TODO: 유니티 에디터에서 폰트 설정바꾸기 playerANicknameText.text = ReplayManager.Instance.GetPlayerANickname(); playerBNicknameText.text = ReplayManager.Instance.GetPlayerBNickname(); - //TODO: ReplayManager에서 프로필 인덱스 가져와서 SetUserProfileImages호출하기 + //프로필 이미지 설정 int playerAProgileIndex = ReplayManager.Instance.GetPlayerAProfileIndex(); int playerBProgileIndex = ReplayManager.Instance.GetPlayerBProfileIndex(); + SetUserProfileImages(playerAProgileIndex, userAProfileImages); + SetUserProfileImages(playerBProgileIndex, userBProfileImages); } private void SetUserProfileImages(int imageIndex,GameObject[] profileImages) From d2deaa195be58fa54a4b2a7466d6a56d870ef487 Mon Sep 17 00:00:00 2001 From: HaeinLEE Date: Mon, 24 Mar 2025 11:53:25 +0900 Subject: [PATCH 4/5] =?UTF-8?q?[Feat]=20=EB=AC=B4=EC=8A=B9=EB=B6=80=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 폰트와 UI 이미지 일부 수정 --- .../ScrollItem/ReplayScrollItem.prefab | 77 +++++++++++++++++++ .../Prefabs/Panels/Main Panel.prefab | 2 +- Assets/Scenes/Replay.unity | 8 +- Assets/Script/Replay/ReplayCell.cs | 2 +- Assets/Script/Replay/ReplayManager.cs | 6 +- .../ReplayPanelItemsController.cs | 4 +- 6 files changed, 88 insertions(+), 11 deletions(-) diff --git a/Assets/KJM/KJMprefabs/ScrollItem/ReplayScrollItem.prefab b/Assets/KJM/KJMprefabs/ScrollItem/ReplayScrollItem.prefab index f14a3f7..e4b3b83 100644 --- a/Assets/KJM/KJMprefabs/ScrollItem/ReplayScrollItem.prefab +++ b/Assets/KJM/KJMprefabs/ScrollItem/ReplayScrollItem.prefab @@ -418,6 +418,81 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &6725069296890934698 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4035312119661202039} + - component: {fileID: 8616790052716066886} + - component: {fileID: 2590408022327786383} + m_Layer: 5 + m_Name: DrawImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4035312119661202039 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6725069296890934698} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 782808433606758938} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8616790052716066886 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6725069296890934698} + m_CullTransparentMesh: 1 +--- !u!114 &2590408022327786383 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6725069296890934698} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &6889607079215043674 GameObject: m_ObjectHideFlags: 0 @@ -447,6 +522,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 4035312119661202039} - {fileID: 6243070150297500116} - {fileID: 379352358508670316} m_Father: {fileID: 423109112585897887} @@ -614,5 +690,6 @@ MonoBehaviour: m_EditorClassIdentifier: winImage: {fileID: 5279064539717668063} loseImage: {fileID: 7205159236927224312} + drawImage: {fileID: 2590408022327786383} playerNicknameText: {fileID: 1459786160726782322} recordDateText: {fileID: 857776554898951878} diff --git a/Assets/Resources/Prefabs/Panels/Main Panel.prefab b/Assets/Resources/Prefabs/Panels/Main Panel.prefab index 834ee12..0414738 100644 --- a/Assets/Resources/Prefabs/Panels/Main Panel.prefab +++ b/Assets/Resources/Prefabs/Panels/Main Panel.prefab @@ -1713,7 +1713,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: "\uD638\uB7AD\uC774" + m_text: "\uD14C\uC2A4\uD2B8\uC0BC\uBC88" m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 85a19688db53c77469fc4406b01045da, type: 2} m_sharedMaterial: {fileID: -2477908578676791210, guid: 85a19688db53c77469fc4406b01045da, type: 2} diff --git a/Assets/Scenes/Replay.unity b/Assets/Scenes/Replay.unity index 6ec0a84..a0d9294 100644 --- a/Assets/Scenes/Replay.unity +++ b/Assets/Scenes/Replay.unity @@ -18363,8 +18363,8 @@ MonoBehaviour: m_Calls: [] m_text: Player B m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontAsset: {fileID: 11400000, guid: 85a19688db53c77469fc4406b01045da, type: 2} + m_sharedMaterial: {fileID: -2477908578676791210, guid: 85a19688db53c77469fc4406b01045da, type: 2} m_fontSharedMaterials: [] m_fontMaterial: {fileID: 0} m_fontMaterials: [] @@ -18762,8 +18762,8 @@ MonoBehaviour: m_Calls: [] m_text: Player A m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontAsset: {fileID: 11400000, guid: 85a19688db53c77469fc4406b01045da, type: 2} + m_sharedMaterial: {fileID: -2477908578676791210, guid: 85a19688db53c77469fc4406b01045da, type: 2} m_fontSharedMaterials: [] m_fontMaterial: {fileID: 0} m_fontMaterials: [] diff --git a/Assets/Script/Replay/ReplayCell.cs b/Assets/Script/Replay/ReplayCell.cs index 25a38b1..08a231e 100644 --- a/Assets/Script/Replay/ReplayCell.cs +++ b/Assets/Script/Replay/ReplayCell.cs @@ -33,7 +33,7 @@ public class ReplayCell : MonoBehaviour winImage.gameObject.SetActive(false); } } - +//TODO: 무승부 이미지 제작해서 에디터에 추가해주세요 public void SetWinImage(Enums.GameResult gameResult) { switch(gameResult) diff --git a/Assets/Script/Replay/ReplayManager.cs b/Assets/Script/Replay/ReplayManager.cs index 19c7157..1bece03 100644 --- a/Assets/Script/Replay/ReplayManager.cs +++ b/Assets/Script/Replay/ReplayManager.cs @@ -11,10 +11,10 @@ public class ReplayRecord public string gameDate; public string playerA; public string playerB; - public List moves = new List(); - public string gameResult; //무승부를 반영하기위해 승자가 아닌 게임 결과를 저장. + public Enums.GameResult gameResult; public int playerAPofileImageIndex; public int playerBPofileImageIndex; + public List moves = new List(); } [Serializable] public class Move @@ -120,7 +120,7 @@ public class ReplayManager : Singleton { string time = DateTime.Now.ToString(("yyyy-MM-dd HH_mm_ss")); _recordingReplayData.gameDate = time; - _recordingReplayData.gameResult = gameResultType.ToString(); + _recordingReplayData.gameResult = gameResultType; // Json데이터로 변환해서 저장 string json = JsonUtility.ToJson(_recordingReplayData, true); diff --git a/Assets/Script/UI/PanelController/ReplayPanelItemsController.cs b/Assets/Script/UI/PanelController/ReplayPanelItemsController.cs index 8b64119..bdce6c7 100644 --- a/Assets/Script/UI/PanelController/ReplayPanelItemsController.cs +++ b/Assets/Script/UI/PanelController/ReplayPanelItemsController.cs @@ -25,9 +25,9 @@ public class ReplayPanelItemsController : ScrollPanelController // ReplayManager에서 가져온 기보 데이터들을 패널 셀에 초기화 records = ReplayManager.Instance.LoadReplayDatas(); - foreach (var replayRecord in records) { + Debug.Log($"{replayRecord.gameDate}의 결과는 {replayRecord.gameResult}"); var replayCellButtonObject = Instantiate(scrollItemPrefab, content.transform); ReplayCell replayCell = replayCellButtonObject.GetComponent(); @@ -35,7 +35,7 @@ public class ReplayPanelItemsController : ScrollPanelController string opponentNickname = myPlayerType==Enums.PlayerType.PlayerA ? replayRecord.playerB : replayRecord.playerA; replayCell.SetMyPlayerType(myPlayerType); - replayCell.SetWinImage(Enums.GameResult.Win.ToString() == replayRecord.gameResult); + replayCell.SetWinImage(replayRecord.gameResult); replayCell.SetOpponentPlayerNickname(opponentNickname); replayCell.SetRecordDate(replayRecord.gameDate); From d2c6d279c5b12f1754244669cefc02f9cabf3c3b Mon Sep 17 00:00:00 2001 From: HaeinLEE Date: Mon, 24 Mar 2025 13:09:53 +0900 Subject: [PATCH 5/5] =?UTF-8?q?[Fix]=20=ED=94=84=EB=A1=9C=ED=95=84?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=97=85=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8=20=EC=98=A4=ED=83=80=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Script/Replay/ReplayManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/Script/Replay/ReplayManager.cs b/Assets/Script/Replay/ReplayManager.cs index 1bece03..1269f06 100644 --- a/Assets/Script/Replay/ReplayManager.cs +++ b/Assets/Script/Replay/ReplayManager.cs @@ -99,7 +99,7 @@ public class ReplayManager : Singleton _recordingReplayData.playerA = playerANickname; _recordingReplayData.playerB = playerBNickname; _recordingReplayData.playerAPofileImageIndex = playerAProfileIndex; - _recordingReplayData.playerBPofileImageIndex = playerAProfileIndex; + _recordingReplayData.playerBPofileImageIndex = playerBProfileIndex; } ///