Skip to content

Commit 6981459

Browse files
committed
♻️ refactor: 게임 세팅 요청 후처리 분리
1 parent a7ead79 commit 6981459

File tree

5 files changed

+46
-14
lines changed

5 files changed

+46
-14
lines changed

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

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
import static io.f1.backend.domain.game.mapper.RoomMapper.toQuestionStartResponse;
66
import static io.f1.backend.domain.quiz.mapper.QuizMapper.toGameStartResponse;
77

8-
import io.f1.backend.domain.game.dto.MessageType;
98
import io.f1.backend.domain.game.dto.request.GameSettingChanger;
10-
import io.f1.backend.domain.game.dto.response.PlayerListResponse;
9+
import io.f1.backend.domain.game.dto.MessageType;
1110
import io.f1.backend.domain.game.event.RoomUpdatedEvent;
1211
import io.f1.backend.domain.game.model.Player;
1312
import io.f1.backend.domain.game.model.Room;
@@ -83,7 +82,6 @@ public void handlePlayerReady(Long roomId, String sessionId) {
8382
toggleReadyIfPossible(room, player);
8483

8584
String destination = getDestination(roomId);
86-
PlayerListResponse playerListResponse = toPlayerListResponse(room);
8785

8886
messageSender.send(destination, MessageType.PLAYER_LIST, toPlayerListResponse(room));
8987
}
@@ -96,20 +94,14 @@ public void changeGameSetting(
9694
if (!request.change(room, quizService)) {
9795
return;
9896
}
97+
request.afterChange(room, messageSender);
9998

100-
room.resetAllPlayerReadyStates();
101-
102-
String destination = getDestination(roomId);
103-
Quiz quiz = quizService.getQuizWithQuestionsById(room.getGameSetting().getQuizId());
99+
broadcastGameSetting(room);
104100

105-
PlayerListResponse playerListResponse = toPlayerListResponse(room);
106-
messageSender.send(
107-
destination,
108-
MessageType.GAME_SETTING,
109-
toGameSettingResponse(room.getGameSetting(), quiz));
110-
messageSender.send(destination, MessageType.PLAYER_LIST, playerListResponse);
101+
RoomUpdatedEvent roomUpdatedEvent = new RoomUpdatedEvent(room,
102+
quizService.getQuizWithQuestionsById(room.getGameSetting().getQuizId()));
111103

112-
eventPublisher.publishEvent(new RoomUpdatedEvent(room, quiz));
104+
eventPublisher.publishEvent(roomUpdatedEvent);
113105
}
114106

115107
private void validateRoomStart(Room room, UserPrincipal principal) {
@@ -160,4 +152,13 @@ private void toggleReadyIfPossible(Room room, Player player) {
160152
player.toggleReady();
161153
}
162154
}
155+
156+
private void broadcastGameSetting(Room room) {
157+
String destination = getDestination(room.getId());
158+
Quiz quiz = quizService.getQuizWithQuestionsById(room.getGameSetting().getQuizId());
159+
messageSender.send(
160+
destination,
161+
MessageType.GAME_SETTING,
162+
toGameSettingResponse(room.getGameSetting(), quiz));
163+
}
163164
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package io.f1.backend.domain.game.dto.request;
22

33
import io.f1.backend.domain.game.model.Room;
4+
import io.f1.backend.domain.game.websocket.MessageSender;
45
import io.f1.backend.domain.quiz.app.QuizService;
56

67
public interface GameSettingChanger {
8+
79
boolean change(Room room, QuizService quizService);
10+
11+
void afterChange(Room room, MessageSender messageSender);
812
}

backend/src/main/java/io/f1/backend/domain/game/dto/request/QuizChangeRequest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
package io.f1.backend.domain.game.dto.request;
22

3+
import io.f1.backend.domain.game.dto.MessageType;
4+
import io.f1.backend.domain.game.dto.response.PlayerListResponse;
35
import io.f1.backend.domain.game.model.Room;
6+
import io.f1.backend.domain.game.websocket.MessageSender;
47
import io.f1.backend.domain.quiz.app.QuizService;
58
import io.f1.backend.domain.quiz.entity.Quiz;
69

710
import java.util.Objects;
811

12+
import static io.f1.backend.domain.game.mapper.RoomMapper.toPlayerListResponse;
13+
914
public record QuizChangeRequest(Long quizId) implements GameSettingChanger {
1015

1116
@Override
@@ -20,4 +25,14 @@ public boolean change(Room room, QuizService quizService) {
2025
room.getGameSetting().changeRound(questionSize, questionSize);
2126
return true;
2227
}
28+
29+
@Override
30+
public void afterChange(Room room, MessageSender messageSender) {
31+
room.resetAllPlayerReadyStates();
32+
33+
String destination = "/sub/room/" + room.getId();
34+
PlayerListResponse response = toPlayerListResponse(room);
35+
36+
messageSender.send(destination, MessageType.PLAYER_LIST, response);
37+
}
2338
}

backend/src/main/java/io/f1/backend/domain/game/dto/request/RoundChangeRequest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.f1.backend.domain.game.dto.request;
22

33
import io.f1.backend.domain.game.model.Room;
4+
import io.f1.backend.domain.game.websocket.MessageSender;
45
import io.f1.backend.domain.quiz.app.QuizService;
56
import io.f1.backend.domain.quiz.entity.Quiz;
67

@@ -20,4 +21,9 @@ public boolean change(Room room, QuizService quizService) {
2021
room.getGameSetting().changeRound(round, questionSize);
2122
return true;
2223
}
24+
25+
@Override
26+
public void afterChange(Room room, MessageSender messageSender) {
27+
// 고유한 후처리 동작 없음
28+
}
2329
}

backend/src/main/java/io/f1/backend/domain/game/dto/request/TimeLimitChangeRequest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.f1.backend.domain.game.dto.request;
22

33
import io.f1.backend.domain.game.model.Room;
4+
import io.f1.backend.domain.game.websocket.MessageSender;
45
import io.f1.backend.domain.quiz.app.QuizService;
56

67
public record TimeLimitChangeRequest(int timeLimit) implements GameSettingChanger {
@@ -13,4 +14,9 @@ public boolean change(Room room, QuizService quizService) {
1314
room.getGameSetting().changeTimeLimit(TimeLimit.from(timeLimit));
1415
return true;
1516
}
17+
18+
@Override
19+
public void afterChange(Room room, MessageSender messageSender) {
20+
// 고유한 후처리 동작 없음
21+
}
1622
}

0 commit comments

Comments
 (0)