Skip to content

Commit babfe49

Browse files
committed
♻️ refactor : 게임 종료 시 로직 변경
1 parent 0670bd5 commit babfe49

File tree

3 files changed

+43
-42
lines changed

3 files changed

+43
-42
lines changed

backend/src/main/java/io/f1/backend/domain/game/app/GameService.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -162,20 +162,6 @@ public void gameEnd(Room room) {
162162
destination,
163163
MessageType.GAME_RESULT,
164164
toGameResultListResponse(playerSessionMap, room.getGameSetting().getRound()));
165-
166-
room.initializeRound();
167-
room.initializePlayers();
168-
169-
room.updateRoomState(RoomState.WAITING);
170-
171-
messageSender.send(
172-
destination,
173-
MessageType.GAME_SETTING,
174-
toGameSettingResponse(room.getGameSetting(), room.getCurrentQuestion().getQuiz()));
175-
messageSender.send(destination, MessageType.ROOM_SETTING, toRoomSettingResponse(room));
176-
177-
List<Player> disconnectedPlayers = room.getDisconnectedPlayers();
178-
roomService.handleDisconnectedPlayers(room, disconnectedPlayers);
179165
}
180166

181167
private boolean validateReadyStatus(Room room) {

backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@ public class RoomService {
6262

6363
private final MessageSender messageSender;
6464

65-
private static final int CONTINUE_DELAY = 3;
66-
6765
private static final String PENDING_SESSION_ID = "PENDING_SESSION_ID";
6866

6967
public RoomCreateResponse saveRoom(RoomCreateRequest request) {
@@ -169,19 +167,7 @@ public void exitRoom(Long roomId, String sessionId, UserPrincipal principal) {
169167

170168
Player removePlayer = getRemovePlayer(room, sessionId, principal);
171169

172-
/* 방 삭제 */
173-
if (isLastPlayer(room, sessionId)) {
174-
removeRoom(room);
175-
return;
176-
}
177-
178-
/* 방장 변경 */
179-
if (room.isHost(removePlayer.getId())) {
180-
changeHost(room, sessionId);
181-
}
182-
183-
/* 플레이어 삭제 */
184-
removePlayer(room, sessionId, removePlayer);
170+
cleanRoom(room, sessionId, removePlayer);
185171

186172
SystemNoticeResponse systemNoticeResponse =
187173
ofPlayerEvent(removePlayer.nickname, RoomEventType.EXIT);
@@ -195,6 +181,26 @@ public void exitRoom(Long roomId, String sessionId, UserPrincipal principal) {
195181
}
196182
}
197183

184+
public void backToRoom(Long roomId, String sessionId) {
185+
Room room = findRoom(roomId);
186+
String destination = getDestination(roomId);
187+
188+
room.initializeRound();
189+
room.initializePlayers();
190+
191+
List<Player> disconnectedPlayers = room.getDisconnectedPlayers();
192+
handleDisconnectedPlayers(room, disconnectedPlayers);
193+
194+
room.updateRoomState(RoomState.WAITING);
195+
196+
messageSender.send(
197+
destination,
198+
MessageType.GAME_SETTING,
199+
toGameSettingResponse(room.getGameSetting(), room.getCurrentQuestion().getQuiz()));
200+
messageSender.send(destination, MessageType.ROOM_SETTING, toRoomSettingResponse(room));
201+
202+
}
203+
198204
public void handlePlayerReady(Long roomId, String sessionId) {
199205
Player player =
200206
roomRepository
@@ -290,19 +296,7 @@ public void exitRoomForDisconnectedPlayer(Long roomId, Player player, String ses
290296
// 연결 끊긴 플레이어 exit 로직 타게 해주기
291297
Room room = findRoom(roomId);
292298

293-
/* 방 삭제 */
294-
if (isLastPlayer(room, sessionId)) {
295-
removeRoom(room);
296-
return;
297-
}
298-
299-
/* 방장 변경 */
300-
if (room.isHost(player.getId())) {
301-
changeHost(room, sessionId);
302-
}
303-
304-
/* 플레이어 삭제 */
305-
removePlayer(room, sessionId, player);
299+
cleanRoom(room, sessionId, player);
306300

307301
String destination = getDestination(roomId);
308302

@@ -314,6 +308,22 @@ public void exitRoomForDisconnectedPlayer(Long roomId, Player player, String ses
314308
}
315309
}
316310

311+
private void cleanRoom(Room room, String sessionId, Player player) {
312+
/* 방 삭제 */
313+
if (isLastPlayer(room, sessionId)) {
314+
removeRoom(room);
315+
return;
316+
}
317+
318+
/* 방장 변경 */
319+
if (room.isHost(player.getId())) {
320+
changeHost(room, sessionId);
321+
}
322+
323+
/* 플레이어 삭제 */
324+
removePlayer(room, sessionId, player);
325+
}
326+
317327
public void handleDisconnectedPlayers(Room room, List<Player> disconnectedPlayers) {
318328
for (Player player : disconnectedPlayers) {
319329
String sessionId = room.getSessionIdByUserId(player.getId());

backend/src/main/java/io/f1/backend/domain/game/websocket/GameSocketController.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,9 @@ public void playerReady(@DestinationVariable Long roomId, Message<?> message) {
6565

6666
roomService.handlePlayerReady(roomId, getSessionId(message));
6767
}
68+
69+
@MessageMapping("/room/init/{roomId}")
70+
public void backToRoom(@DestinationVariable Long roomId, Message<?> message) {
71+
roomService.backToRoom(roomId, getSessionId(message));
72+
}
6873
}

0 commit comments

Comments
 (0)