Skip to content

Commit

Permalink
Merge branch 'develop' into M4_Test
Browse files Browse the repository at this point in the history
  • Loading branch information
zihanltesla authored May 19, 2024
2 parents fc211f7 + d7301c5 commit a88bd3b
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import ch.uzh.ifi.hase.soprafs24.repository.GameRepository;
import ch.uzh.ifi.hase.soprafs24.repository.PlayerRepository;
import ch.uzh.ifi.hase.soprafs24.repository.RoomRepository;
import ch.uzh.ifi.hase.soprafs24.repository.UserRepository;
import ch.uzh.ifi.hase.soprafs24.service.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.messaging.handler.annotation.DestinationVariable;
Expand Down Expand Up @@ -35,8 +36,9 @@ public class GameController {
private GameRepository gameRepository;
private PlayerRepository playerRepository;
private RoomRepository roomRepository;
private UserRepository userRepository;

public GameController(RoomService roomService, SocketService socketService, UserService userService, PlayerService playerService, GameService gameService, SimpMessagingTemplate simpMessagingTemplate, @Qualifier("gameRepository") GameRepository gameRepository, @Qualifier("playerRepository") PlayerRepository playerRepository, @Qualifier("roomRepository") RoomRepository roomRepository){
public GameController(RoomService roomService, SocketService socketService, UserService userService, PlayerService playerService, GameService gameService, SimpMessagingTemplate simpMessagingTemplate, @Qualifier("gameRepository") GameRepository gameRepository, @Qualifier("playerRepository") PlayerRepository playerRepository, @Qualifier("roomRepository") RoomRepository roomRepository, @Qualifier("userRepository") UserRepository userRepository){
this.socketService = socketService;
this.gameService=gameService;
this.roomService = roomService;
Expand All @@ -46,6 +48,7 @@ public GameController(RoomService roomService, SocketService socketService, User
this.playerRepository = playerRepository;
this.playerRepository = playerRepository;
this.roomRepository = roomRepository;
this.userRepository = userRepository;
}

private Map<String, String> extractHeaders(SimpMessageHeaderAccessor headerAccessor) {
Expand Down Expand Up @@ -141,7 +144,8 @@ public void enterRoom(SimpMessageHeaderAccessor headerAccessor, @DestinationVari
else {
if (userService.findUserById(userID).getInRoomId() != null && (!roomRepository.findByRoomId(userService.findUserById(userID).getInRoomId()).isPresent())) {
userService.findUserById(userID).setInRoomId(null);
}
userRepository.save(userService.findUserById(userID));
}
if (roomRepository.findByRoomId(roomId).isPresent()) {
//if the user is already in the room
Room room = roomRepository.findByRoomId(roomId).get();
Expand All @@ -154,7 +158,17 @@ public void enterRoom(SimpMessageHeaderAccessor headerAccessor, @DestinationVari
if (room.getRoomPlayersList().contains(user.getId())) {
//if the game is started and the user is entering the room
if(room.getRoomProperty().equals(RoomProperty.GAMEOVER)){
userService.findUserById(userID).setInRoomId(null);
// Delete inRoomId in user
User userForbidden = userRepository.findById(userID).get();
userForbidden.setInRoomId(null);
userRepository.save(userForbidden);
// Delete the user from the room
room.getRoomPlayersList().remove(user.getId());
roomRepository.save(room);
if (playerRepository.findById(user.getId()).isPresent()) {
playerRepository.deleteById(user.getId());
}
socketService.broadcastPlayerInfo(roomId, "enterroom");
throw new Exception("Game is over");
}
if (room.getRoomProperty().equals(RoomProperty.INGAME)) {
Expand Down
20 changes: 10 additions & 10 deletions src/main/java/ch/uzh/ifi/hase/soprafs24/service/GameService.java
Original file line number Diff line number Diff line change
Expand Up @@ -331,18 +331,18 @@ public void revealPhase(Game game) {
}

public void endGame(Game game) {

for (String playerId : game.getRoomPlayersList()) {
Player player = playerRepository.findById(playerId).get();
playerRepository.delete(player);
}
for (String userId : game.getRoomPlayersList()) {
for (String userId : roomRepository.findByRoomId(game.getRoomId()).get().getRoomPlayersList()) {
User user = userRepository.findById(userId).get();
user.setPlayerStatus(PlayerStatus.UNREADY);
user.setInRoomId(null);
userRepository.save(user);
if (user.getInRoomId().equals(game.getRoomId())) {
if (playerRepository.findById(userId).isPresent()) {
Player player = playerRepository.findById(userId).get();
playerRepository.delete(player);
}
user.setPlayerStatus(PlayerStatus.UNREADY);
user.setInRoomId(null);
userRepository.save(user);
}
}

gameRepository.delete(game);

System.out.println("Game ended");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import ch.uzh.ifi.hase.soprafs24.repository.GameRepository;
import ch.uzh.ifi.hase.soprafs24.repository.PlayerRepository;
import ch.uzh.ifi.hase.soprafs24.repository.RoomRepository;
import ch.uzh.ifi.hase.soprafs24.repository.UserRepository;
import ch.uzh.ifi.hase.soprafs24.service.GameService;
import ch.uzh.ifi.hase.soprafs24.service.PlayerService;
import ch.uzh.ifi.hase.soprafs24.service.RoomService;
Expand Down Expand Up @@ -59,6 +60,8 @@ class GameControllerTest {

@Mock
private PlayerRepository playerRepository;
@Mock
private UserRepository userRepository;

@InjectMocks
private GameController gameController;
Expand Down Expand Up @@ -251,7 +254,7 @@ void testEnterRoom_gameover() {
when(room.getRoomProperty()).thenReturn(RoomProperty.GAMEOVER);
when(game.getRoundStatus()).thenReturn(RoundStatus.guess);
when(game.getCurrentSpeaker()).thenReturn(mock(Player.class));

when(userRepository.findById(userId)).thenReturn(Optional.of(user));
// Call the controller method
gameController.enterRoom(headerAccessor, roomId, payload);

Expand Down Expand Up @@ -292,6 +295,7 @@ void testEnterRoomAlreadyInRoom() {
when(room.getRoomProperty()).thenReturn(RoomProperty.INGAME);
when(room.getRoomId()).thenReturn(roomId);
when(gameRepository.findByRoomId(roomId)).thenReturn(Optional.of(game));

when(game.getRoundStatus()).thenReturn(RoundStatus.guess);
when(game.getCurrentSpeaker()).thenReturn(currentSpeaker);
when(currentSpeaker.getId()).thenReturn("speakerId");
Expand Down

0 comments on commit a88bd3b

Please sign in to comment.