DO-73 [Feat] 멀티플레이 재대결 세팅
This commit is contained in:
parent
becbb85b06
commit
153876e4df
@ -25,6 +25,12 @@
|
||||
DrawConfirmed,
|
||||
DrawRejected,
|
||||
DrawRejectionConfirmed,
|
||||
ReceiveRevengeRequest, // 재대결 요청 수신
|
||||
RevengeRequestSent, // 재대결 요청 전송 확인
|
||||
RevengeAccepted, // 재대결 수락 수신
|
||||
RevengeConfirmed, // 재대결 수락 전송 확인
|
||||
RevengeRejected, // 재대결 거절 수신
|
||||
RevengeRejectionConfirmed, // 재대결 거절 전송 확인
|
||||
ReceiveTimeout // 상대방이 타임 아웃일 때
|
||||
};
|
||||
}
|
@ -496,7 +496,7 @@ public class GameLogic : IDisposable
|
||||
Debug.Log("무승부 요청 전송 완료");
|
||||
break;
|
||||
case Constants.MultiplayManagerState.DrawAccepted:
|
||||
Debug.Log("무승부 요청이 승락이 들어옴");
|
||||
Debug.Log("무승부 요청이 승낙이 들어옴");
|
||||
UnityMainThreadDispatcher.Instance().Enqueue(() =>
|
||||
{
|
||||
GameManager.Instance.panelManager.OpenEffectPanel(Enums.GameResult.Draw);
|
||||
@ -504,7 +504,7 @@ public class GameLogic : IDisposable
|
||||
});
|
||||
break;
|
||||
case Constants.MultiplayManagerState.DrawConfirmed:
|
||||
Debug.Log("무승부 요청 승락 완료");
|
||||
Debug.Log("무승부 요청 승낙 완료");
|
||||
break;
|
||||
case Constants.MultiplayManagerState.DrawRejected:
|
||||
Debug.Log("무승부 요청이 거부가 들어옴");
|
||||
@ -525,6 +525,35 @@ public class GameLogic : IDisposable
|
||||
EndGame(Enums.GameResult.Win);
|
||||
});
|
||||
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");
|
||||
|
||||
@ -537,6 +566,26 @@ public class GameLogic : IDisposable
|
||||
}
|
||||
}
|
||||
|
||||
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닉네임 랜덤 생성
|
||||
private string RandomAINickname()
|
||||
{
|
||||
|
@ -91,12 +91,20 @@ public class MultiplayManager : IDisposable
|
||||
_socket.On("doSurrender", DoSurrender);
|
||||
_socket.On("surrenderConfirmed", SurrenderConfirmed);
|
||||
_socket.On("receiveTimeout", ReceiveTimeout);
|
||||
// 무승부 관련
|
||||
_socket.On("receiveDrawRequest", ReceiveDrawRequest);
|
||||
_socket.On("drawRequestSent", DrawRequestSent);
|
||||
_socket.On("drawAccepted", DrawAccepted);
|
||||
_socket.On("drawConfirmed", DrawConfirmed);
|
||||
_socket.On("drawRejected", DrawRejected);
|
||||
_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();
|
||||
}
|
||||
@ -249,6 +257,8 @@ public class MultiplayManager : IDisposable
|
||||
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.ReceiveTimeout, data.message);
|
||||
}
|
||||
|
||||
#region 무승부
|
||||
|
||||
public void RequestDraw()
|
||||
{
|
||||
if (string.IsNullOrEmpty(_roomId))
|
||||
@ -321,6 +331,84 @@ public class MultiplayManager : IDisposable
|
||||
_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()
|
||||
{
|
||||
if (_socket != null)
|
||||
|
Loading…
x
Reference in New Issue
Block a user