File tree Expand file tree Collapse file tree 5 files changed +96
-0
lines changed
backend/src/main/java/io/f1/backend/domain/game/dto Expand file tree Collapse file tree 5 files changed +96
-0
lines changed Original file line number Diff line number Diff line change 1+ package io .f1 .backend .domain .game .dto ;
2+
3+ import io .f1 .backend .domain .game .model .Room ;
4+ import io .f1 .backend .domain .quiz .app .QuizService ;
5+
6+ public interface GameSettingChanger {
7+ boolean change (Room room , QuizService quizService );
8+ }
Original file line number Diff line number Diff line change 1+ package io .f1 .backend .domain .game .dto ;
2+
3+ import io .f1 .backend .domain .game .model .Room ;
4+ import io .f1 .backend .domain .quiz .app .QuizService ;
5+ import io .f1 .backend .domain .quiz .entity .Quiz ;
6+ import java .util .Objects ;
7+
8+ public record QuizChangeRequest (Long quizId ) implements GameSettingChanger {
9+
10+ @ Override
11+ public boolean change (Room room , QuizService quizService ) {
12+ if (Objects .equals (room .getGameSetting ().getQuizId (), quizId )) {
13+ return false ; // 동일하면 무시
14+ }
15+ Quiz quiz = quizService .getQuizWithQuestionsById (quizId );
16+ int questionSize = quiz .getQuestions ().size ();
17+ room .getGameSetting ().changeQuiz (quiz );
18+ // 퀴즈의 문제 갯수로 변경
19+ room .getGameSetting ().changeRound (questionSize , questionSize );
20+ return true ;
21+ }
22+ }
Original file line number Diff line number Diff line change 1+ package io .f1 .backend .domain .game .dto ;
2+
3+ import io .f1 .backend .domain .game .model .Room ;
4+ import io .f1 .backend .domain .quiz .app .QuizService ;
5+ import io .f1 .backend .domain .quiz .entity .Quiz ;
6+ import java .util .Objects ;
7+
8+ public record RoundChangeRequest (Integer round ) implements GameSettingChanger {
9+
10+ @ Override
11+ public boolean change (Room room , QuizService quizService ) {
12+ if (Objects .equals (room .getGameSetting ().getRound (), round )) {
13+ return false ; // 동일하면 무시
14+ }
15+
16+ Quiz quiz = quizService .findQuizById (room .getGameSetting ().getQuizId ());
17+ int questionSize = quiz .getQuestions ().size ();
18+
19+ room .getGameSetting ().changeRound (round , questionSize );
20+ return true ;
21+ }
22+ }
Original file line number Diff line number Diff line change 1+ package io .f1 .backend .domain .game .dto ;
2+
3+ import io .f1 .backend .global .exception .CustomException ;
4+ import io .f1 .backend .global .exception .errorcode .GameErrorCode ;
5+ import java .util .Arrays ;
6+ import lombok .Getter ;
7+
8+ @ Getter
9+ public enum TimeLimit {
10+ FIFTEEN (15 ),
11+ THIRTY (30 ),
12+ FORTY_FIVE (45 ),
13+ SIXTY (60 );
14+
15+ private final int value ;
16+
17+ TimeLimit (int value ) {
18+ this .value = value ;
19+ }
20+
21+ public static TimeLimit from (int value ) {
22+ return Arrays .stream (values ())
23+ .filter (t -> t .value == value )
24+ .findFirst ()
25+ .orElseThrow (() -> new CustomException (GameErrorCode .GAME_SETTING_CONFLICT ));
26+ }
27+
28+ }
Original file line number Diff line number Diff line change 1+ package io .f1 .backend .domain .game .dto ;
2+
3+ import io .f1 .backend .domain .game .model .Room ;
4+ import io .f1 .backend .domain .quiz .app .QuizService ;
5+
6+ public record TimeLimitChangeRequest (int timeLimit ) implements GameSettingChanger {
7+
8+ @ Override
9+ public boolean change (Room room , QuizService quizService ) {
10+ if (room .getGameSetting ().getTimeLimit () == timeLimit ) {
11+ return false ; // 동일하면 무시
12+ }
13+ room .getGameSetting ().changeTimeLimit (TimeLimit .from (timeLimit ));
14+ return true ;
15+ }
16+ }
You can’t perform that action at this time.
0 commit comments