From d84b5fa1d89d489c4c473732cfbe05cc9b4b8808 Mon Sep 17 00:00:00 2001 From: Lim0_C Date: Wed, 26 Mar 2025 16:52:23 +0900 Subject: [PATCH 1/2] =?UTF-8?q?DO-46=20[Fix]=20=EB=A9=80=ED=8B=B0=20?= =?UTF-8?q?=EC=8B=9C=20=ED=84=B4=20=EA=B0=95=EC=A1=B0=20=EB=B2=84=EA=B7=B8?= =?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 | 50 ++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/Assets/Script/Game/GameLogic.cs b/Assets/Script/Game/GameLogic.cs index 497eb19..6e67408 100644 --- a/Assets/Script/Game/GameLogic.cs +++ b/Assets/Script/Game/GameLogic.cs @@ -341,9 +341,29 @@ public class GameLogic : MonoBehaviour Debug.Log("해당 플레이어가 선공 입니다"); firstPlayerState = new PlayerState(true, _multiplayManager, joinRoomData.roomId); secondPlayerState = new MultiPlayerState(false, _multiplayManager); + UnityMainThreadDispatcher.Instance().Enqueue(() => + { + GameManager.Instance.InitPlayersName(UserManager.Instance.Nickname, joinRoomData.opponentNickname); + GameManager.Instance.InitProfileImages(UserManager.Instance.imageIndex, joinRoomData.opponentImageIndex); + + // 리플레이 데이터 업데이트 + ReplayManager.Instance.InitReplayData(UserManager.Instance.Nickname, joinRoomData.opponentNickname, UserManager.Instance.imageIndex, joinRoomData.opponentImageIndex); + }); } else { + Debug.Log("해당 플레이어가 후공 입니다"); + firstPlayerState = new MultiPlayerState(true, _multiplayManager); + secondPlayerState = new PlayerState(false, _multiplayManager, _roomId); + UnityMainThreadDispatcher.Instance().Enqueue(() => + { + GameManager.Instance.InitPlayersName(joinRoomData.opponentNickname, UserManager.Instance.Nickname); + GameManager.Instance.InitProfileImages(joinRoomData.opponentImageIndex, UserManager.Instance.imageIndex); + + // 리플레이 데이터 업데이트 + ReplayManager.Instance.InitReplayData(joinRoomData.opponentNickname, UserManager.Instance.Nickname, joinRoomData.opponentImageIndex, UserManager.Instance.imageIndex); + }); + Debug.Log("해당 플레이어가 후공 입니다"); firstPlayerState = new MultiPlayerState(true, _multiplayManager); secondPlayerState = new PlayerState(false, _multiplayManager, joinRoomData.roomId); @@ -352,12 +372,6 @@ public class GameLogic : MonoBehaviour // 메인 스레드에서 실행 - UI 업데이트는 메인 스레드에서 실행 필요 UnityMainThreadDispatcher.Instance().Enqueue(() => { - GameManager.Instance.InitPlayersName(UserManager.Instance.Nickname, joinRoomData.opponentNickname); - GameManager.Instance.InitProfileImages(UserManager.Instance.imageIndex, joinRoomData.opponentImageIndex); - - // 리플레이 데이터 업데이트 - ReplayManager.Instance.InitReplayData(UserManager.Instance.Nickname, joinRoomData.opponentNickname, UserManager.Instance.imageIndex, joinRoomData.opponentImageIndex); - // 로딩 패널 열려있으면 닫기 GameManager.Instance.panelManager.CloseLoadingPanel(); @@ -386,24 +400,34 @@ public class GameLogic : MonoBehaviour { Debug.Log("해당 플레이어가 선공 입니다"); firstPlayerState = new PlayerState(true, _multiplayManager, _roomId); - secondPlayerState = new MultiPlayerState(false, _multiplayManager); + secondPlayerState = new MultiPlayerState(false, _multiplayManager); + UnityMainThreadDispatcher.Instance().Enqueue(() => + { + GameManager.Instance.InitPlayersName(UserManager.Instance.Nickname, startGameData.opponentNickname); + GameManager.Instance.InitProfileImages(UserManager.Instance.imageIndex, startGameData.opponentImageIndex); + + // 리플레이 데이터 업데이트 + ReplayManager.Instance.InitReplayData(UserManager.Instance.Nickname, startGameData.opponentNickname, UserManager.Instance.imageIndex, startGameData.opponentImageIndex); + }); } else { Debug.Log("해당 플레이어가 후공 입니다"); firstPlayerState = new MultiPlayerState(true, _multiplayManager); secondPlayerState = new PlayerState(false, _multiplayManager, _roomId); + UnityMainThreadDispatcher.Instance().Enqueue(() => + { + GameManager.Instance.InitPlayersName(startGameData.opponentNickname, UserManager.Instance.Nickname); + GameManager.Instance.InitProfileImages(startGameData.opponentImageIndex, UserManager.Instance.imageIndex); + + // 리플레이 데이터 업데이트 + ReplayManager.Instance.InitReplayData(startGameData.opponentNickname, UserManager.Instance.Nickname, startGameData.opponentImageIndex, UserManager.Instance.imageIndex); + }); } // 메인 스레드에서 실행 - UI 업데이트는 메인 스레드에서 실행 필요 UnityMainThreadDispatcher.Instance().Enqueue(() => { - GameManager.Instance.InitPlayersName(UserManager.Instance.Nickname, startGameData.opponentNickname); - GameManager.Instance.InitProfileImages(UserManager.Instance.imageIndex, startGameData.opponentImageIndex); - - // 리플레이 데이터 업데이트 - ReplayManager.Instance.InitReplayData(UserManager.Instance.Nickname, startGameData.opponentNickname, UserManager.Instance.imageIndex, startGameData.opponentImageIndex); - // 로딩 패널 열려있으면 닫기 GameManager.Instance.panelManager.CloseLoadingPanel(); From 5ca832c9f9d311b6a7d8e0086cfb44270330084f Mon Sep 17 00:00:00 2001 From: Lim0_C Date: Wed, 26 Mar 2025 17:46:58 +0900 Subject: [PATCH 2/2] =?UTF-8?q?DO-46=20[Fix]=20=EB=A9=80=ED=8B=B0=ED=94=8C?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=20=ED=84=B4=20=ED=91=9C=EC=8B=9C=20=EB=B0=8F?= =?UTF-8?q?=20=EC=8A=B9=ED=8C=A8=20=EB=B2=84=EA=B7=B8=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 | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Assets/Script/Game/GameLogic.cs b/Assets/Script/Game/GameLogic.cs index 6e67408..b0977f1 100644 --- a/Assets/Script/Game/GameLogic.cs +++ b/Assets/Script/Game/GameLogic.cs @@ -20,7 +20,6 @@ public abstract class BasePlayerState public void ProcessMove(GameLogic gameLogic, Enums.PlayerType playerType, int row, int col) { gameLogic.fioTimer.PauseTimer(); - gameLogic.SetNewBoardValue(playerType, row, col); gameLogic.CountStoneCounter(); @@ -32,6 +31,13 @@ public abstract class BasePlayerState if (gameLogic.CheckGameWin(playerType, row, col)) { var gameResult = playerType == Enums.PlayerType.PlayerA? Enums.GameResult.Win:Enums.GameResult.Lose; + if (gameLogic.gameType == Enums.GameType.MultiPlay) + { + if (gameLogic.firstPlayerState.GetType() != typeof(PlayerState)) + { + gameResult = gameResult == Enums.GameResult.Win ? Enums.GameResult.Lose : Enums.GameResult.Win; + } + } GameManager.Instance.panelManager.OpenEffectPanel(gameResult); gameLogic.EndGame(gameResult); } @@ -354,7 +360,8 @@ public class GameLogic : MonoBehaviour { Debug.Log("해당 플레이어가 후공 입니다"); firstPlayerState = new MultiPlayerState(true, _multiplayManager); - secondPlayerState = new PlayerState(false, _multiplayManager, _roomId); + secondPlayerState = new PlayerState(false, _multiplayManager, joinRoomData.roomId); + UnityMainThreadDispatcher.Instance().Enqueue(() => { GameManager.Instance.InitPlayersName(joinRoomData.opponentNickname, UserManager.Instance.Nickname); @@ -363,10 +370,6 @@ public class GameLogic : MonoBehaviour // 리플레이 데이터 업데이트 ReplayManager.Instance.InitReplayData(joinRoomData.opponentNickname, UserManager.Instance.Nickname, joinRoomData.opponentImageIndex, UserManager.Instance.imageIndex); }); - - Debug.Log("해당 플레이어가 후공 입니다"); - firstPlayerState = new MultiPlayerState(true, _multiplayManager); - secondPlayerState = new PlayerState(false, _multiplayManager, joinRoomData.roomId); } // 메인 스레드에서 실행 - UI 업데이트는 메인 스레드에서 실행 필요