DO-73 [Feat] 멀티플레이 재대결 세팅
This commit is contained in:
parent
becbb85b06
commit
153876e4df
@ -25,6 +25,12 @@
|
|||||||
DrawConfirmed,
|
DrawConfirmed,
|
||||||
DrawRejected,
|
DrawRejected,
|
||||||
DrawRejectionConfirmed,
|
DrawRejectionConfirmed,
|
||||||
|
ReceiveRevengeRequest, // 재대결 요청 수신
|
||||||
|
RevengeRequestSent, // 재대결 요청 전송 확인
|
||||||
|
RevengeAccepted, // 재대결 수락 수신
|
||||||
|
RevengeConfirmed, // 재대결 수락 전송 확인
|
||||||
|
RevengeRejected, // 재대결 거절 수신
|
||||||
|
RevengeRejectionConfirmed, // 재대결 거절 전송 확인
|
||||||
ReceiveTimeout // 상대방이 타임 아웃일 때
|
ReceiveTimeout // 상대방이 타임 아웃일 때
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -496,7 +496,7 @@ public class GameLogic : IDisposable
|
|||||||
Debug.Log("무승부 요청 전송 완료");
|
Debug.Log("무승부 요청 전송 완료");
|
||||||
break;
|
break;
|
||||||
case Constants.MultiplayManagerState.DrawAccepted:
|
case Constants.MultiplayManagerState.DrawAccepted:
|
||||||
Debug.Log("무승부 요청이 승락이 들어옴");
|
Debug.Log("무승부 요청이 승낙이 들어옴");
|
||||||
UnityMainThreadDispatcher.Instance().Enqueue(() =>
|
UnityMainThreadDispatcher.Instance().Enqueue(() =>
|
||||||
{
|
{
|
||||||
GameManager.Instance.panelManager.OpenEffectPanel(Enums.GameResult.Draw);
|
GameManager.Instance.panelManager.OpenEffectPanel(Enums.GameResult.Draw);
|
||||||
@ -504,7 +504,7 @@ public class GameLogic : IDisposable
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case Constants.MultiplayManagerState.DrawConfirmed:
|
case Constants.MultiplayManagerState.DrawConfirmed:
|
||||||
Debug.Log("무승부 요청 승락 완료");
|
Debug.Log("무승부 요청 승낙 완료");
|
||||||
break;
|
break;
|
||||||
case Constants.MultiplayManagerState.DrawRejected:
|
case Constants.MultiplayManagerState.DrawRejected:
|
||||||
Debug.Log("무승부 요청이 거부가 들어옴");
|
Debug.Log("무승부 요청이 거부가 들어옴");
|
||||||
@ -525,6 +525,35 @@ public class GameLogic : IDisposable
|
|||||||
EndGame(Enums.GameResult.Win);
|
EndGame(Enums.GameResult.Win);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
case Constants.MultiplayManagerState.RevengeRequestSent:
|
||||||
|
Debug.Log("재대결 요청 전송 완료");
|
||||||
|
break;
|
||||||
|
case Constants.MultiplayManagerState.RevengeAccepted:
|
||||||
|
Debug.Log("재대결 요청이 승낙이 들어옴");
|
||||||
|
InitBoardForRevenge();
|
||||||
|
UnityMainThreadDispatcher.Instance().Enqueue(() =>
|
||||||
|
{
|
||||||
|
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case Constants.MultiplayManagerState.RevengeConfirmed:
|
||||||
|
Debug.Log("재대결 요청 승낙 완료");
|
||||||
|
InitBoardForRevenge();
|
||||||
|
break;
|
||||||
|
case Constants.MultiplayManagerState.RevengeRejected:
|
||||||
|
Debug.Log("재대결 요청이 거부가 들어옴");
|
||||||
|
UnityMainThreadDispatcher.Instance().Enqueue(() =>
|
||||||
|
{
|
||||||
|
GameManager.Instance.panelManager.OpenConfirmPanel("재대결 요청을 거부하였습니다.", () => { });
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case Constants.MultiplayManagerState.RevengeRejectionConfirmed:
|
||||||
|
Debug.Log("재대결 요청 거부 완료");
|
||||||
|
UnityMainThreadDispatcher.Instance().Enqueue(() =>
|
||||||
|
{
|
||||||
|
GameManager.Instance.panelManager.OpenConfirmPanel("재대결 요청을 거부하였습니다.", () => { });
|
||||||
|
});
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
ReplayManager.Instance.InitReplayData(UserManager.Instance.Nickname,"nicknameB");
|
ReplayManager.Instance.InitReplayData(UserManager.Instance.Nickname,"nicknameB");
|
||||||
|
|
||||||
@ -536,7 +565,27 @@ public class GameLogic : IDisposable
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void InitBoardForRevenge()
|
||||||
|
{
|
||||||
|
//보드 초기화
|
||||||
|
_board = new Enums.PlayerType[15, 15];
|
||||||
|
_totalStoneCounter = 0;
|
||||||
|
RequestDrawChance = true;
|
||||||
|
|
||||||
|
selectedRow = -1;
|
||||||
|
selectedCol = -1;
|
||||||
|
|
||||||
|
// 금수 감지기 초기화
|
||||||
|
_forbiddenDetector.RenjuForbiddenMove(_board);
|
||||||
|
|
||||||
|
_lastRow = -1;
|
||||||
|
_lastCol = -1;
|
||||||
|
|
||||||
|
//timer 초기화
|
||||||
|
fioTimer.InitTimer();
|
||||||
|
}
|
||||||
|
|
||||||
//AI닉네임 랜덤 생성
|
//AI닉네임 랜덤 생성
|
||||||
private string RandomAINickname()
|
private string RandomAINickname()
|
||||||
{
|
{
|
||||||
|
@ -91,12 +91,20 @@ public class MultiplayManager : IDisposable
|
|||||||
_socket.On("doSurrender", DoSurrender);
|
_socket.On("doSurrender", DoSurrender);
|
||||||
_socket.On("surrenderConfirmed", SurrenderConfirmed);
|
_socket.On("surrenderConfirmed", SurrenderConfirmed);
|
||||||
_socket.On("receiveTimeout", ReceiveTimeout);
|
_socket.On("receiveTimeout", ReceiveTimeout);
|
||||||
|
// 무승부 관련
|
||||||
_socket.On("receiveDrawRequest", ReceiveDrawRequest);
|
_socket.On("receiveDrawRequest", ReceiveDrawRequest);
|
||||||
_socket.On("drawRequestSent", DrawRequestSent);
|
_socket.On("drawRequestSent", DrawRequestSent);
|
||||||
_socket.On("drawAccepted", DrawAccepted);
|
_socket.On("drawAccepted", DrawAccepted);
|
||||||
_socket.On("drawConfirmed", DrawConfirmed);
|
_socket.On("drawConfirmed", DrawConfirmed);
|
||||||
_socket.On("drawRejected", DrawRejected);
|
_socket.On("drawRejected", DrawRejected);
|
||||||
_socket.On("drawRejectionConfirmed", DrawRejectionConfirmed);
|
_socket.On("drawRejectionConfirmed", DrawRejectionConfirmed);
|
||||||
|
// 재대결 관련
|
||||||
|
_socket.On("receiveRevengeRequest", ReceiveRevengeRequest);
|
||||||
|
_socket.On("revengeRequestSent", DrawRequestSent);
|
||||||
|
_socket.On("revengeAccepted", RevengeAccepted);
|
||||||
|
_socket.On("revengeConfirmed", RevengeConfirmed);
|
||||||
|
_socket.On("revengeRejected", RevengeRejected);
|
||||||
|
_socket.On("revengeRejectionConfirmed", RevengeRejectionConfirmed);
|
||||||
|
|
||||||
_socket.Connect();
|
_socket.Connect();
|
||||||
}
|
}
|
||||||
@ -249,6 +257,8 @@ public class MultiplayManager : IDisposable
|
|||||||
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.ReceiveTimeout, data.message);
|
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.ReceiveTimeout, data.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region 무승부
|
||||||
|
|
||||||
public void RequestDraw()
|
public void RequestDraw()
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(_roomId))
|
if (string.IsNullOrEmpty(_roomId))
|
||||||
@ -321,6 +331,84 @@ public class MultiplayManager : IDisposable
|
|||||||
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.DrawRejectionConfirmed, data.message);
|
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.DrawRejectionConfirmed, data.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 재대결
|
||||||
|
|
||||||
|
public void RequestRevengeRequest()
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(_roomId))
|
||||||
|
{
|
||||||
|
Debug.LogError("requestDraw 호출 실패: _roomId가 설정되지 않음");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_socket.Emit("requestRevenge",new { roomId = _roomId });
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ReceiveRevengeRequest(SocketIOResponse response)
|
||||||
|
{
|
||||||
|
var data = response.GetValue<MessageData>();
|
||||||
|
|
||||||
|
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.ReceiveRevengeRequest, data.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RevengeRequestSent(SocketIOResponse response)
|
||||||
|
{
|
||||||
|
var data = response.GetValue<MessageData>();
|
||||||
|
|
||||||
|
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.RevengeRequestSent, data.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AcceptRevenge()
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(_roomId))
|
||||||
|
{
|
||||||
|
Debug.LogError("acceptRevenge 호출 실패: _roomId가 설정되지 않음");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_socket.Emit("acceptRevenge", new { roomId = _roomId });
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RevengeAccepted(SocketIOResponse response)
|
||||||
|
{
|
||||||
|
var data = response.GetValue<MessageData>();
|
||||||
|
|
||||||
|
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.RevengeAccepted, data.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RevengeConfirmed(SocketIOResponse response)
|
||||||
|
{
|
||||||
|
var data = response.GetValue<MessageData>();
|
||||||
|
|
||||||
|
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.RevengeConfirmed, data.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RejectRevenge()
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(_roomId))
|
||||||
|
{
|
||||||
|
Debug.LogError("rejectRevenge 호출 실패: _roomId가 설정되지 않음");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_socket.Emit("rejectRevenge", new { roomId = _roomId });
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RevengeRejected(SocketIOResponse response)
|
||||||
|
{
|
||||||
|
var data = response.GetValue<MessageData>();
|
||||||
|
|
||||||
|
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.RevengeRejected, data.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RevengeRejectionConfirmed(SocketIOResponse response)
|
||||||
|
{
|
||||||
|
var data = response.GetValue<MessageData>();
|
||||||
|
|
||||||
|
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.RevengeRejectionConfirmed, data.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_socket != null)
|
if (_socket != null)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user