Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,15 @@ public void gameStart(Long roomId, UserPrincipal principal) {
validateRoomStart(room, principal);

Long quizId = room.getGameSetting().getQuizId();
Quiz quiz = quizService.getQuizWithQuestionsById(quizId);
Quiz quiz = quizService.findQuizById(quizId);
Long questionsCount = quizService.getQuestionsCount(quizId);
List<Question> questions = prepareQuestions(room, quiz);

room.updateQuestions(questions);
room.increaseCurrentRound();
room.updateRoomState(RoomState.PLAYING);

eventPublisher.publishEvent(new RoomUpdatedEvent(room, quiz));
eventPublisher.publishEvent(new RoomUpdatedEvent(room, quiz, questionsCount));

timerService.startTimer(room, START_DELAY);

Expand Down Expand Up @@ -210,7 +211,8 @@ public void gameEnd(Room room) {
MessageType.GAME_SETTING,
toGameSettingResponse(
room.getGameSetting(),
quizService.getQuizWithQuestionsById(room.getGameSetting().getQuizId())));
quizService.findQuizById(room.getGameSetting().getQuizId()),
room.getRound()));
messageSender.sendBroadcast(
destination, MessageType.ROOM_SETTING, toRoomSettingResponse(room));
}
Expand Down Expand Up @@ -315,10 +317,11 @@ private void toggleReadyIfPossible(Room room, Player player) {

private void broadcastGameSetting(Room room) {
String destination = getDestination(room.getId());
Quiz quiz = quizService.getQuizWithQuestionsById(room.getGameSetting().getQuizId());
Quiz quiz = quizService.findQuizById(room.getGameSetting().getQuizId());
Long questionsCount = quizService.getQuestionsCount(quiz.getId());
messageSender.sendBroadcast(
destination,
MessageType.GAME_SETTING,
toGameSettingResponse(room.getGameSetting(), quiz));
toGameSettingResponse(room.getGameSetting(), quiz, questionsCount));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import io.f1.backend.domain.game.dto.response.SystemNoticeResponse;
import io.f1.backend.domain.game.event.RoomCreatedEvent;
import io.f1.backend.domain.game.event.RoomDeletedEvent;
import io.f1.backend.domain.game.event.RoomUpdatedEvent;
import io.f1.backend.domain.game.model.ConnectionState;
import io.f1.backend.domain.game.model.GameSetting;
import io.f1.backend.domain.game.model.Player;
Expand Down Expand Up @@ -105,7 +106,7 @@ public RoomCreateResponse saveRoom(RoomCreateRequest request) {
host.getId(),
() -> exitIfInAnotherRoom(room, getCurrentUserPrincipal()));

eventPublisher.publishEvent(new RoomCreatedEvent(room, quiz));
eventPublisher.publishEvent(new RoomCreatedEvent(room, quiz, gameSetting.getRound()));

return new RoomCreateResponse(newId);
}
Expand Down Expand Up @@ -204,7 +205,10 @@ public void initializeRoomSocket(Long roomId, UserPrincipal principal) {
Quiz quiz = quizService.getQuizWithQuestionsById(quizId);

GameSettingResponse gameSettingResponse =
toGameSettingResponse(room.getGameSetting(), quiz);
toGameSettingResponse(
room.getGameSetting(),
quiz,
quiz.getQuestions().size());

PlayerListResponse playerListResponse = toPlayerListResponse(room);

Expand All @@ -229,6 +233,10 @@ public void initializeRoomSocket(Long roomId, UserPrincipal principal) {
destination,
MessageType.SYSTEM_NOTICE,
systemNoticeResponse);

eventPublisher.publishEvent(
new RoomUpdatedEvent(
room, quiz, quiz.getQuestions().size()));
});
});
}
Expand Down Expand Up @@ -283,9 +291,9 @@ public RoomListResponse getAllRooms() {
.map(
room -> {
Long quizId = room.getGameSetting().getQuizId();
Quiz quiz = quizService.getQuizWithQuestionsById(quizId);

return toRoomResponse(room, quiz);
Quiz quiz = quizService.findQuizById(quizId);
Long questionsCount = quizService.getQuestionsCount(quizId);
return toRoomResponse(room, quiz, questionsCount);
})
.toList();
return new RoomListResponse(roomResponses);
Expand Down Expand Up @@ -329,10 +337,11 @@ public void reconnectSendResponse(Long roomId, UserPrincipal principal) {

Long quizId = room.getGameSetting().getQuizId();

Quiz quiz = quizService.getQuizWithQuestionsById(quizId);
Quiz quiz = quizService.findQuizById(quizId);
Long questionsCount = quizService.getQuestionsCount(quizId);

GameSettingResponse gameSettingResponse =
toGameSettingResponse(room.getGameSetting(), quiz);
toGameSettingResponse(room.getGameSetting(), quiz, questionsCount);

PlayerListResponse playerListResponse = toPlayerListResponse(room);

Expand Down Expand Up @@ -470,6 +479,12 @@ private void cleanRoom(Room room, Player player) {

/* 플레이어 삭제 */
room.removePlayer(player);

Long quizId = room.getQuizId();
Quiz quiz = quizService.findQuizById(quizId);
Long questionsCount = quizService.getQuestionsCount(quizId);

eventPublisher.publishEvent(new RoomUpdatedEvent(room, quiz, questionsCount));
}

public void handleDisconnectedPlayers(Room room, List<Player> disconnectedPlayers) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ public void afterChange(
RoomUpdatedEvent roomUpdatedEvent =
new RoomUpdatedEvent(
room,
quizService.getQuizWithQuestionsById(room.getGameSetting().getQuizId()));
quizService.findQuizById(room.getGameSetting().getQuizId()),
room.getGameSetting().getRound());

eventPublisher.publishEvent(roomUpdatedEvent);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
import io.f1.backend.domain.game.model.Room;
import io.f1.backend.domain.quiz.entity.Quiz;

public record RoomCreatedEvent(Room room, Quiz quiz) {}
public record RoomCreatedEvent(Room room, Quiz quiz, long questionSize) {}
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
import io.f1.backend.domain.game.model.Room;
import io.f1.backend.domain.quiz.entity.Quiz;

public record RoomUpdatedEvent(Room room, Quiz quiz) {}
public record RoomUpdatedEvent(Room room, Quiz quiz, long questionSize) {}
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,12 @@ public static RoomSettingResponse toRoomSettingResponse(Room room) {
room.getRoomSetting().locked());
}

public static GameSettingResponse toGameSettingResponse(GameSetting gameSetting, Quiz quiz) {
public static GameSettingResponse toGameSettingResponse(
GameSetting gameSetting, Quiz quiz, long questionsCount) {
return new GameSettingResponse(
gameSetting.getRound(), gameSetting.getTimeLimit(), toQuizResponse(quiz));
gameSetting.getRound(),
gameSetting.getTimeLimit(),
toQuizResponse(quiz, questionsCount));
}

public static PlayerListResponse toPlayerListResponse(Room room) {
Expand All @@ -66,7 +69,7 @@ public static PlayerListResponse toPlayerListResponse(Room room) {
room.getHost().getNickname(), playerResponseList, playerResponseList.size());
}

public static RoomResponse toRoomResponse(Room room, Quiz quiz) {
public static RoomResponse toRoomResponse(Room room, Quiz quiz, long questionsCount) {
return new RoomResponse(
room.getId(),
room.getRoomSetting().roomName(),
Expand All @@ -77,17 +80,17 @@ public static RoomResponse toRoomResponse(Room room, Quiz quiz) {
quiz.getTitle(),
quiz.getDescription(),
quiz.getCreator().getNickname(),
quiz.getQuestions().size(),
(int) questionsCount,
quiz.getThumbnailUrl());
}

public static QuizResponse toQuizResponse(Quiz quiz) {
public static QuizResponse toQuizResponse(Quiz quiz, long questionsCount) {
return new QuizResponse(
quiz.getId(),
quiz.getTitle(),
quiz.getDescription(),
quiz.getThumbnailUrl(),
quiz.getQuestions().size());
(int) questionsCount);
}

public static SystemNoticeResponse ofPlayerEvent(String nickname, RoomEventType roomEventType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ public record RoomCreatedPayload(
String quizTitle,
String description,
String creator,
int numberOfQuestion,
int numberOfQuestions,
String thumbnailUrl) {}
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ public record RoomUpdatedPayload(
String quizTitle,
String description,
String creator,
int numberOfQuestion,
int numberOfQuestions,
String thumbnailUrl) {}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class SseMapper {
public static LobbySseEvent<RoomCreatedPayload> fromRoomCreated(RoomCreatedEvent event) {
Room room = event.room();
Quiz quiz = event.quiz();
long questionSize = event.questionSize();
RoomCreatedPayload payload =
new RoomCreatedPayload(
room.getId(),
Expand All @@ -27,14 +28,15 @@ public static LobbySseEvent<RoomCreatedPayload> fromRoomCreated(RoomCreatedEvent
quiz.getTitle(),
quiz.getDescription(),
quiz.getCreator().getNickname(),
quiz.getQuestions().size(),
(int) questionSize,
quiz.getThumbnailUrl());
return new LobbySseEvent<>(SseEventType.CREATE.name(), payload);
}

public static LobbySseEvent<RoomUpdatedPayload> fromRoomUpdated(RoomUpdatedEvent event) {
Room room = event.room();
Quiz quiz = event.quiz();
long questionSize = event.questionSize();
RoomUpdatedPayload payload =
new RoomUpdatedPayload(
room.getId(),
Expand All @@ -43,7 +45,7 @@ public static LobbySseEvent<RoomUpdatedPayload> fromRoomUpdated(RoomUpdatedEvent
quiz.getTitle(),
quiz.getDescription(),
quiz.getCreator().getNickname(),
quiz.getQuestions().size(),
(int) questionSize,
quiz.getThumbnailUrl());
return new LobbySseEvent<>(SseEventType.UPDATE.name(), payload);
}
Expand Down