DO-79 [Feat] 강제 종료 처리
This commit is contained in:
parent
a06f9809de
commit
9abc67f9c6
@ -31,6 +31,7 @@
|
|||||||
RevengeConfirmed, // 재대결 수락 전송 확인
|
RevengeConfirmed, // 재대결 수락 전송 확인
|
||||||
RevengeRejected, // 재대결 거절 수신
|
RevengeRejected, // 재대결 거절 수신
|
||||||
RevengeRejectionConfirmed, // 재대결 거절 전송 확인
|
RevengeRejectionConfirmed, // 재대결 거절 전송 확인
|
||||||
ReceiveTimeout // 상대방이 타임 아웃일 때
|
ReceiveTimeout, // 상대방이 타임 아웃일 때
|
||||||
|
OpponentDisconnected
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -113,12 +113,19 @@ public partial class GameLogic : IDisposable
|
|||||||
StartGameOnMainThread();
|
StartGameOnMainThread();
|
||||||
break;
|
break;
|
||||||
case Constants.MultiplayManagerState.ExitRoom:
|
case Constants.MultiplayManagerState.ExitRoom:
|
||||||
Debug.Log("## Exit Room");
|
Debug.Log("## Exit Room");
|
||||||
// TODO: Exit Room 처리
|
// TODO: Exit Room 처리
|
||||||
break;
|
break;
|
||||||
case Constants.MultiplayManagerState.EndGame:
|
case Constants.MultiplayManagerState.EndGame:
|
||||||
Debug.Log("## End Game");
|
Debug.Log("## End Game");
|
||||||
// TODO: End Room 처리
|
ExecuteOnMainThread(() =>
|
||||||
|
{
|
||||||
|
GameManager.Instance.panelManager.OpenConfirmPanel("상대방의 연결이 끊어졌습니다.", () =>
|
||||||
|
{
|
||||||
|
GameManager.Instance.panelManager.OpenEffectPanel(Enums.GameResult.Win);
|
||||||
|
EndGame(Enums.GameResult.Win);
|
||||||
|
});
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
case Constants.MultiplayManagerState.DoSurrender:
|
case Constants.MultiplayManagerState.DoSurrender:
|
||||||
Debug.Log("상대방의 항복 요청 들어옴");
|
Debug.Log("상대방의 항복 요청 들어옴");
|
||||||
@ -264,7 +271,11 @@ public partial class GameLogic : IDisposable
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
case Constants.MultiplayManagerState.OpponentDisconnected:
|
||||||
|
Debug.Log("상대방 강제 종료");
|
||||||
|
// 실제로 실행되지 않음. 상대방 강제 종료 시에는 EndGame으로 처리됨
|
||||||
|
break;
|
||||||
|
}
|
||||||
ReplayManager.Instance.InitReplayData(UserManager.Instance.Nickname,"nicknameB");
|
ReplayManager.Instance.InitReplayData(UserManager.Instance.Nickname,"nicknameB");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -131,4 +131,10 @@ public class GameManager : Singleton<GameManager>
|
|||||||
if (_gameLogic == null) return;
|
if (_gameLogic == null) return;
|
||||||
_gameLogic.RequestDrawChance = false;
|
_gameLogic.RequestDrawChance = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnApplicationQuit()
|
||||||
|
{
|
||||||
|
Debug.Log("앱 종료 감지: 소켓 연결 정리 중...");
|
||||||
|
_gameLogic?.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
@ -113,7 +113,9 @@ public class MultiplayManager : IDisposable
|
|||||||
_socket.On("revengeConfirmed", RevengeConfirmed);
|
_socket.On("revengeConfirmed", RevengeConfirmed);
|
||||||
_socket.On("revengeRejected", RevengeRejected);
|
_socket.On("revengeRejected", RevengeRejected);
|
||||||
_socket.On("revengeRejectionConfirmed", RevengeRejectionConfirmed);
|
_socket.On("revengeRejectionConfirmed", RevengeRejectionConfirmed);
|
||||||
|
// 강제 종료 처리
|
||||||
|
_socket.On("opponentDisconnected", OpponentDisconnected);
|
||||||
|
|
||||||
_socket.Connect();
|
_socket.Connect();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
@ -212,6 +214,7 @@ public class MultiplayManager : IDisposable
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Debug.Log("방 나감");
|
||||||
_socket.Emit("leaveRoom", new { roomId = _roomId });
|
_socket.Emit("leaveRoom", new { roomId = _roomId });
|
||||||
_roomId = null; // 방 나가면 roomId 초기화
|
_roomId = null; // 방 나가면 roomId 초기화
|
||||||
}
|
}
|
||||||
@ -337,6 +340,13 @@ public class MultiplayManager : IDisposable
|
|||||||
|
|
||||||
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.DrawRejectionConfirmed, data.message);
|
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.DrawRejectionConfirmed, data.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void DerawRejectionConfirmed(SocketIOResponse response)
|
||||||
|
{
|
||||||
|
var data = response.GetValue<MessageData>();
|
||||||
|
|
||||||
|
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.DrawRejectionConfirmed, data.message);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -414,6 +424,13 @@ public class MultiplayManager : IDisposable
|
|||||||
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.RevengeRejectionConfirmed, data.message);
|
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.RevengeRejectionConfirmed, data.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OpponentDisconnected(SocketIOResponse response)
|
||||||
|
{
|
||||||
|
var data = response.GetValue<MessageData>();
|
||||||
|
|
||||||
|
_onMultiplayStateChanged?.Invoke(Constants.MultiplayManagerState.OpponentDisconnected, data.message);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user