From 896bd636ff9f7b41fd68458601ff8db18306271f Mon Sep 17 00:00:00 2001 From: Jay <96156114+jaydev00a@users.noreply.github.com> Date: Mon, 24 Mar 2025 13:44:57 +0900 Subject: [PATCH 1/6] =?UTF-8?q?DO-50=20[FIX]=20=EC=98=A4=EB=94=94=EC=98=A4?= =?UTF-8?q?=20=EB=A7=A4=EB=8B=88=EC=A0=80=20=EB=B2=84=EA=B7=B8=20=EB=93=B1?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Script/Game/GameLogic.cs | 16 +++++++++++----- Assets/Script/Game/GameManager.cs | 10 ++++++++-- Assets/Script/Main/MainPanelManager.cs | 2 +- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/Assets/Script/Game/GameLogic.cs b/Assets/Script/Game/GameLogic.cs index 95593f3..938f5b2 100644 --- a/Assets/Script/Game/GameLogic.cs +++ b/Assets/Script/Game/GameLogic.cs @@ -2,6 +2,7 @@ using System; using System.Collections; using System.Collections.Generic; using UnityEngine; +using UnityEngine.SceneManagement; public abstract class BasePlayerState { @@ -19,9 +20,11 @@ public abstract class BasePlayerState if (gameLogic.CheckGameWin(playerType, row, col)) { - GameManager.Instance.panelManager.OpenConfirmPanel($"Game Over: {playerType} Win",() =>{}); - var gameResult = playerType == Enums.PlayerType.PlayerA? Enums.GameResult.Win:Enums.GameResult.Lose; - gameLogic.EndGame(gameResult); + GameManager.Instance.panelManager.OpenConfirmPanel($"Game Over: {playerType} Win", () => + { + var gameResult = playerType == Enums.PlayerType.PlayerA? Enums.GameResult.Win:Enums.GameResult.Lose; + gameLogic.EndGame(gameResult); + }); } else { @@ -29,8 +32,10 @@ public abstract class BasePlayerState { if (gameLogic.CheckGameDraw()) { - GameManager.Instance.panelManager.OpenConfirmPanel($"Game Over: Draw",() =>{}); - gameLogic.EndGame(Enums.GameResult.Draw); + GameManager.Instance.panelManager.OpenConfirmPanel($"Game Over: Draw", () => + { + gameLogic.EndGame(Enums.GameResult.Draw); + }); } else { @@ -347,6 +352,7 @@ public class GameLogic : MonoBehaviour SetState(null); ReplayManager.Instance.SaveReplayDataResult(result); //TODO: 게임 종료 후 행동 구현 + SceneManager.LoadScene("Main"); } //승리 확인 함수 diff --git a/Assets/Script/Game/GameManager.cs b/Assets/Script/Game/GameManager.cs index ef4749a..e6c19df 100644 --- a/Assets/Script/Game/GameManager.cs +++ b/Assets/Script/Game/GameManager.cs @@ -38,8 +38,14 @@ public class GameManager : Singleton private void InitPanels() { - panelManager = Instantiate(panelManagerPrefab).GetComponent(); - audioManager = Instantiate(audioManagerPrefab).GetComponent(); + if (panelManager == null) + { + panelManager = Instantiate(panelManagerPrefab).GetComponent(); + } + if (audioManager == null) + { + audioManager = Instantiate(audioManagerPrefab).GetComponent(); + } } public void OnClickConfirmButton() diff --git a/Assets/Script/Main/MainPanelManager.cs b/Assets/Script/Main/MainPanelManager.cs index 94cd0bd..29b2ea6 100644 --- a/Assets/Script/Main/MainPanelManager.cs +++ b/Assets/Script/Main/MainPanelManager.cs @@ -42,7 +42,7 @@ public class MainPanelManager : MonoBehaviour UpdateMainPanelUI(GameManager.Instance.panelManager.OpenMainPanel); // ScoreData.SetScore(userInfo.score); - GameManager.Instance.panelManager.OpenConfirmPanel(userInfo.nickname + "님" + "\n" + "자동 로그인 되었습니다", () => { }); + // GameManager.Instance.panelManager.OpenConfirmPanel(userInfo.nickname + "님" + "\n" + "자동 로그인 되었습니다", () => { }); loadingPanelController.StopLoading(); }, () => From 3021fa3366f72c6b313ee6cd413d9924ee7b7035 Mon Sep 17 00:00:00 2001 From: HaeinLEE Date: Mon, 24 Mar 2025 15:26:41 +0900 Subject: [PATCH 2/6] =?UTF-8?q?[Style]=20=EA=B8=B0=EB=B3=B4=20=EC=B2=98?= =?UTF-8?q?=EC=9D=8C,=20=EB=81=9D=20=ED=81=B4=EB=A6=AD=20=EC=8B=9C=20?= =?UTF-8?q?=EC=8B=9C=EA=B0=84=EC=B0=A8=EB=A5=BC=20=EB=91=90=EA=B3=A0=20?= =?UTF-8?q?=EB=B0=94=EB=91=91=EB=8F=8C=20=EC=83=9D=EC=84=B1,=20=EC=82=AC?= =?UTF-8?q?=EB=9D=BC=EC=A7=80=EA=B2=8C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Script/Replay/ReplayManager.cs | 14 +++++++++++++- .../PanelController/ReplayPanelItemsController.cs | 1 - 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Assets/Script/Replay/ReplayManager.cs b/Assets/Script/Replay/ReplayManager.cs index 1269f06..8b7a7a0 100644 --- a/Assets/Script/Replay/ReplayManager.cs +++ b/Assets/Script/Replay/ReplayManager.cs @@ -2,6 +2,7 @@ using System; using System.Collections; using System.Collections.Generic; using System.IO; +using Unity.VisualScripting; using UnityEngine; using UnityEngine.SceneManagement; @@ -216,21 +217,32 @@ public class ReplayManager : Singleton } public void ReplayFirst() + { + StartCoroutine(IReplayFirst()); + } + + private IEnumerator IReplayFirst() { while (_placedStoneStack.Count > 0) { ReplayUndo(_placedStoneStack.Pop()); + yield return new WaitForSeconds(0.1f); } } public void ReplayFinish() + { + StartCoroutine(IReplayFinish()); + } + + private IEnumerator IReplayFinish() { while(_placedStoneStack.Count < _selectedReplayRecord.moves.Count) { ReplayNext(GetNextMove()); + yield return new WaitForSeconds(0.1f); } } - public string GetPlayerANickname() { return _selectedReplayRecord.playerA; diff --git a/Assets/Script/UI/PanelController/ReplayPanelItemsController.cs b/Assets/Script/UI/PanelController/ReplayPanelItemsController.cs index bdce6c7..abee033 100644 --- a/Assets/Script/UI/PanelController/ReplayPanelItemsController.cs +++ b/Assets/Script/UI/PanelController/ReplayPanelItemsController.cs @@ -27,7 +27,6 @@ public class ReplayPanelItemsController : ScrollPanelController 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(); From 6a3887bdf18d439e38f36609b654bc80614deee2 Mon Sep 17 00:00:00 2001 From: HaeinLEE Date: Mon, 24 Mar 2025 15:27:19 +0900 Subject: [PATCH 3/6] =?UTF-8?q?[Style]=20=EA=B8=B0=EB=B3=B4=EC=94=AC=20?= =?UTF-8?q?=EC=B2=98=EC=9D=8C=EB=B2=84=ED=8A=BC=EC=9D=80=20=EC=8B=9C?= =?UTF-8?q?=EA=B0=84=EC=B0=A8=20=EC=97=86=EC=9D=B4=20=EB=B0=94=EB=91=91?= =?UTF-8?q?=ED=8C=90=20=EB=A6=AC=EC=85=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Script/Replay/ReplayManager.cs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Assets/Script/Replay/ReplayManager.cs b/Assets/Script/Replay/ReplayManager.cs index 8b7a7a0..02d66fa 100644 --- a/Assets/Script/Replay/ReplayManager.cs +++ b/Assets/Script/Replay/ReplayManager.cs @@ -2,7 +2,6 @@ using System; using System.Collections; using System.Collections.Generic; using System.IO; -using Unity.VisualScripting; using UnityEngine; using UnityEngine.SceneManagement; @@ -217,16 +216,10 @@ public class ReplayManager : Singleton } public void ReplayFirst() - { - StartCoroutine(IReplayFirst()); - } - - private IEnumerator IReplayFirst() { while (_placedStoneStack.Count > 0) { ReplayUndo(_placedStoneStack.Pop()); - yield return new WaitForSeconds(0.1f); } } From cdac8eaefa8328c30ae44b69efc27bbe4e0be253 Mon Sep 17 00:00:00 2001 From: HaeinLEE Date: Mon, 24 Mar 2025 15:46:16 +0900 Subject: [PATCH 4/6] =?UTF-8?q?[Fix]=20=EC=B2=98=EC=9D=8C,=20=EC=9D=B4?= =?UTF-8?q?=EC=A0=84,=20=EB=8B=A4=EC=9D=8C=EC=97=90=20=EC=BD=94=EB=A3=A8?= =?UTF-8?q?=ED=8B=B4=20=EB=A9=88=EC=B6=94=EB=8A=94=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/Replay/ReplayController.cs | 4 ++++ Assets/Script/Replay/ReplayManager.cs | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Assets/Script/Replay/ReplayController.cs b/Assets/Script/Replay/ReplayController.cs index 68ddce5..ac39d44 100644 --- a/Assets/Script/Replay/ReplayController.cs +++ b/Assets/Script/Replay/ReplayController.cs @@ -18,16 +18,19 @@ public class ReplayController : MonoBehaviour public void OnclickExitButton() { + ReplayManager.Instance.StopReplayFinish(); SceneManager.LoadScene("Main"); } public void OnclickFirstButton() { + ReplayManager.Instance.StopReplayFinish(); ReplayManager.Instance.ReplayFirst(); } public void OnclickUndoButton() { + ReplayManager.Instance.StopReplayFinish(); Move targetMove = ReplayManager.Instance.PopPlacedMove(); if (targetMove != null) { @@ -37,6 +40,7 @@ public class ReplayController : MonoBehaviour public void OnclickNextButton() { + ReplayManager.Instance.StopReplayFinish(); Move nextMove = ReplayManager.Instance.GetNextMove(); if (nextMove != null) { diff --git a/Assets/Script/Replay/ReplayManager.cs b/Assets/Script/Replay/ReplayManager.cs index 02d66fa..9676b28 100644 --- a/Assets/Script/Replay/ReplayManager.cs +++ b/Assets/Script/Replay/ReplayManager.cs @@ -34,6 +34,7 @@ public class Move public class ReplayManager : Singleton { private ReplayRecord _recordingReplayData; + private Coroutine finishCoroutine; #region 기보 시작 후 데이터를 컨트롤하기 @@ -225,7 +226,16 @@ public class ReplayManager : Singleton public void ReplayFinish() { - StartCoroutine(IReplayFinish()); + finishCoroutine = StartCoroutine(IReplayFinish()); + } + + public void StopReplayFinish() + { + if (finishCoroutine != null) + { + StopCoroutine(finishCoroutine); + finishCoroutine = null; + } } private IEnumerator IReplayFinish() From c46f813b1b7303bba740f37c3f65b06fcf9a29bf Mon Sep 17 00:00:00 2001 From: HaeinLEE Date: Mon, 24 Mar 2025 16:12:22 +0900 Subject: [PATCH 5/6] =?UTF-8?q?[Fix]=20=EB=81=9D=20=EB=B2=84=ED=8A=BC=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=ED=81=B4=EB=A6=AD=20=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scenes/Replay.unity | 1 + Assets/Script/Replay/ReplayController.cs | 30 ++++++++++++++++++++---- Assets/Script/Replay/ReplayManager.cs | 14 +++++++---- 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/Assets/Scenes/Replay.unity b/Assets/Scenes/Replay.unity index a0d9294..79a5794 100644 --- a/Assets/Scenes/Replay.unity +++ b/Assets/Scenes/Replay.unity @@ -19668,6 +19668,7 @@ MonoBehaviour: userBProfileImages: - {fileID: 2288075173090734880} - {fileID: 7536757830621973007} + replayFinishButton: {fileID: 609484620077371465} --- !u!1 &8676936482266105011 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Script/Replay/ReplayController.cs b/Assets/Script/Replay/ReplayController.cs index ac39d44..be78edf 100644 --- a/Assets/Script/Replay/ReplayController.cs +++ b/Assets/Script/Replay/ReplayController.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.SceneManagement; +using UnityEngine.Serialization; using UnityEngine.UI; public class ReplayController : MonoBehaviour @@ -11,6 +12,7 @@ public class ReplayController : MonoBehaviour [SerializeField] private TMP_Text playerBNicknameText; [SerializeField] private GameObject[] userAProfileImages; [SerializeField] private GameObject[] userBProfileImages; + [SerializeField] private Button replayFinishButton; void Start() { InitReplayUI(); @@ -18,19 +20,26 @@ public class ReplayController : MonoBehaviour public void OnclickExitButton() { - ReplayManager.Instance.StopReplayFinish(); + ReplayManager.Instance.StopReplayFinish(() => { });; SceneManager.LoadScene("Main"); } public void OnclickFirstButton() { - ReplayManager.Instance.StopReplayFinish(); + ReplayManager.Instance.StopReplayFinish(() => + { + replayFinishButton.interactable = true; + });; ReplayManager.Instance.ReplayFirst(); } public void OnclickUndoButton() { - ReplayManager.Instance.StopReplayFinish(); + ReplayManager.Instance.StopReplayFinish(() => + { + replayFinishButton.interactable = true; + });; + Move targetMove = ReplayManager.Instance.PopPlacedMove(); if (targetMove != null) { @@ -40,7 +49,10 @@ public class ReplayController : MonoBehaviour public void OnclickNextButton() { - ReplayManager.Instance.StopReplayFinish(); + ReplayManager.Instance.StopReplayFinish(() => + { + replayFinishButton.interactable = true; + });; Move nextMove = ReplayManager.Instance.GetNextMove(); if (nextMove != null) { @@ -48,9 +60,17 @@ public class ReplayController : MonoBehaviour } } + /// + /// 끝 버튼 눌렸을 때 중복 클릭 방지 + /// public void OnClickFinishButton() { - ReplayManager.Instance.ReplayFinish(); + replayFinishButton.interactable = false; + //실행이 끝난 후 끝버튼 다시 활성화 + ReplayManager.Instance.ReplayFinish(() => + { + replayFinishButton.interactable = true; + }); } public void InitReplayUI() diff --git a/Assets/Script/Replay/ReplayManager.cs b/Assets/Script/Replay/ReplayManager.cs index 9676b28..7d931dc 100644 --- a/Assets/Script/Replay/ReplayManager.cs +++ b/Assets/Script/Replay/ReplayManager.cs @@ -224,27 +224,33 @@ public class ReplayManager : Singleton } } - public void ReplayFinish() + public void ReplayFinish(Action onFinishEnd) { - finishCoroutine = StartCoroutine(IReplayFinish()); + finishCoroutine = StartCoroutine(IReplayFinish(onFinishEnd)); } - public void StopReplayFinish() + /// + /// 끝 버튼을 중간에 멈춰야 할 때 사용 + /// + /// 마지막 장면까지 가는 도중에 멈출경우 해야할 일 전달 + public void StopReplayFinish(Action onFinishStop) { if (finishCoroutine != null) { StopCoroutine(finishCoroutine); finishCoroutine = null; } + onFinishStop?.Invoke(); } - private IEnumerator IReplayFinish() + private IEnumerator IReplayFinish(Action onFinishEnd) { while(_placedStoneStack.Count < _selectedReplayRecord.moves.Count) { ReplayNext(GetNextMove()); yield return new WaitForSeconds(0.1f); } + onFinishEnd?.Invoke(); } public string GetPlayerANickname() { From cc34e24dbea0b4a3f1168ee93a3216ff76e2ddd3 Mon Sep 17 00:00:00 2001 From: HaeinLEE Date: Mon, 24 Mar 2025 17:14:08 +0900 Subject: [PATCH 6/6] =?UTF-8?q?[Test]=20AI=20=EC=9D=B4=EB=A6=84=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=20Constants=EC=97=90=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?AI=5FNAMIES?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Script/Common/Constants.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Assets/Script/Common/Constants.cs b/Assets/Script/Common/Constants.cs index 8fae832..c8d7fe7 100644 --- a/Assets/Script/Common/Constants.cs +++ b/Assets/Script/Common/Constants.cs @@ -7,4 +7,6 @@ public const int WIN_COUNT = 5; //무승부 확인을 위한 최소 착수 수 public const int MinCountForDrawCheck = 150; + + public string[] AI_NAMIES = { "이세돌", "신사동호랭이","진짜인간임","종로3가짱돌","마스터김춘배","62세황순자","고준일 강사님"}; } \ No newline at end of file