Skip to content

Commit

Permalink
atelier3: add room page (#93)
Browse files Browse the repository at this point in the history
Co-authored-by: Louis Charnay <[email protected]>
  • Loading branch information
LeonDumestre and louischarnay authored May 29, 2024
1 parent d28b1f7 commit 1971da8
Show file tree
Hide file tree
Showing 9 changed files with 100 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@ public List<RoomSummaryDto> getRooms() {
return gameRoomService.getRooms();
}

@GetMapping("/{roomId}")
@ResponseBody
public GameRoomDto getRoom(@PathVariable int roomId) {
return gameRoomService.getRoom(roomId);
}

@PostMapping
@ResponseBody
@SecurityRequirement(name = "cardauth")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@
@Getter
@AllArgsConstructor
public class RoomSummaryDto {
private Integer id;
private String name;
private Integer playersCount;

public RoomSummaryDto() {}

public RoomSummaryDto fromGameRoomEntity(GameRoomEntity room) {
int playersCount = room.getOpponent() == null ? 1 : 2;
return new RoomSummaryDto(room.getName(), playersCount);
return new RoomSummaryDto(room.getId(), room.getName(), playersCount);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,30 +22,38 @@ public GameRoomEntity toEntity(GameRoom gameRoom, Integer id) {
gameRoomEntity.setName(gameRoom.getName());
gameRoomEntity.setState(gameRoom.getState());
gameRoomEntity.setCreator(gameRoom.getCreator().getSurname());
gameRoomEntity.setOpponent(gameRoom.getOpponent().getSurname());
if (gameRoom.getOpponent() != null) {
gameRoomEntity.setOpponent(gameRoom.getOpponent().getSurname());
}


PlayerCardEntity creatorCardEntity = new PlayerCardEntity();
if (gameRoom.getCreator().getSelectedCard() != null) {
PlayerCardEntity creatorCardEntity = new PlayerCardEntity();
PlayerCardId creatorCardId = new PlayerCardId();
creatorCardId.setUserSurname(gameRoom.getCreator().getSurname());
creatorCardId.setUserCardId(gameRoom.getCreator().getSelectedCard().getId());

PlayerCardId creatorCardId = new PlayerCardId();
creatorCardId.setUserSurname(gameRoom.getCreator().getSurname());
creatorCardId.setUserCardId(gameRoom.getCreator().getSelectedCard().getId());
creatorCardEntity.setId(creatorCardId);
creatorCardEntity.setEnergy(gameRoom.getCreator().getSelectedCard().getEnergy());
creatorCardEntity.setCardName(gameRoom.getCreator().getSelectedCard().getName());

creatorCardEntity.setId(creatorCardId);
creatorCardEntity.setEnergy(gameRoom.getCreator().getSelectedCard().getEnergy());
creatorCardEntity.setCardName(gameRoom.getCreator().getSelectedCard().getName());
gameRoomEntity.setCreatorCard(creatorCardEntity);
}

PlayerCardEntity opponentCardEntity = new PlayerCardEntity();

PlayerCardId opponentCardId = new PlayerCardId();
opponentCardId.setUserSurname(gameRoom.getOpponent().getSurname());
opponentCardId.setUserCardId(gameRoom.getOpponent().getSelectedCard().getId());
if (gameRoom.getOpponent() != null && gameRoom.getOpponent().getSelectedCard() != null) {
PlayerCardEntity opponentCardEntity = new PlayerCardEntity();

opponentCardEntity.setId(opponentCardId);
opponentCardEntity.setEnergy(gameRoom.getOpponent().getSelectedCard().getEnergy());
opponentCardEntity.setCardName(gameRoom.getOpponent().getSelectedCard().getName());
PlayerCardId opponentCardId = new PlayerCardId();
opponentCardId.setUserSurname(gameRoom.getOpponent().getSurname());
opponentCardId.setUserCardId(gameRoom.getOpponent().getSelectedCard().getId());

gameRoomEntity.setCreatorCard(creatorCardEntity);
gameRoomEntity.setOpponentCard(opponentCardEntity);
opponentCardEntity.setId(opponentCardId);
opponentCardEntity.setEnergy(gameRoom.getOpponent().getSelectedCard().getEnergy());
opponentCardEntity.setCardName(gameRoom.getOpponent().getSelectedCard().getName());

gameRoomEntity.setOpponentCard(opponentCardEntity);
}

return gameRoomEntity;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ public List<RoomSummaryDto> getRooms() {
return rooms.stream().map(room -> new RoomSummaryDto().fromGameRoomEntity(room)).toList();
}

public GameRoomDto getRoom(int roomId) {
GameRoomEntity roomEntity = gameRoomRepo.findById(roomId).orElseThrow(() -> new IllegalArgumentException("Room not found"));
return gameRoomMapper.fromEntity(roomEntity);
}

public GameRoomDto createRoom(String creatorSurname, String name) {
GameRoom room = new GameRoom();
GameRoom newRoom = room.init(creatorSurname, name);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ RouteLocator gateway(RouteLocatorBuilder routeLocatorBuilder) {
.route("game-page", routeSpec -> routeSpec
.path("/game")
.uri("forward:/pages/game.html"))
.route("game-room-page", routeSpec -> routeSpec
.path("/game-room/{id}")
.uri("forward:/pages/game-room.html"))
.route("api-auth", routeSpec -> routeSpec
.path("/api/auth/**")
.uri("lb://auth-server"))
Expand Down
15 changes: 13 additions & 2 deletions atelier3/gateway-server/src/main/resources/static/css/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ body {
font-family: Arial, sans-serif;
}

table {
.market-table, .my-cards-table {
width: 75%;
border-collapse: collapse;
margin-bottom: 20px;
Expand Down Expand Up @@ -98,4 +98,15 @@ header{
}
.admin, .card-details{
visibility: hidden;
}
}
.room-table__body {
cursor: pointer;
}
.room-table {
width: 100%;
border-collapse: collapse;
margin-bottom: 20px;
cursor: pointer;
vertical-align: top;
table-layout: fixed;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Room</title>
<link rel="stylesheet" href="../css/styles.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<div class="profile">
<span>User</span>
<strong class="admin">[ADMIN]</strong>
<img src="../images/default-user.png" alt="Profile Icon" width="30">
</div>
<div id="header"></div>
<script>
$(function() {
$("#header").load("../components/header.html");
});
</script>
<div class="container">
<h1 id="title"></h1>
</div>
<script src="../script/environment.js"></script>
<script src="../script/handletoken.js"></script>
<script src="../script/game-room.js"></script>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
function getRoomFromAPI() {
const pathname = window.location.pathname;
const parts = pathname.split('/');
const roomId = parts[2];

fetch(`/api/game-rooms/${roomId}`)
.then(response => response.json())
.then(data => {
console.log(data);
document.getElementById('title').innerText = data.name;
});
}

getRoomFromAPI();
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ function createRoom() {
})
.then(response => response.json())
.then(data => {
console.log(data);
joinRoom(data.id);
});
}

Expand All @@ -41,7 +41,7 @@ function getRoomsFromAPI() {
const nameCell = row.insertCell();
nameCell.innerText = gameRoom.name;
const playersCell = row.insertCell();
playersCell.innerText = `${gameRoom.playersCount}$`;
playersCell.innerText = `${gameRoom.playersCount}/2`;
});
});
}
Expand All @@ -56,7 +56,7 @@ function joinRoom(roomId) {
})
.then(response => response.json())
.then(data => {
console.log(data);
location.href = `/game-room/${roomId}`;
});
}

Expand Down

0 comments on commit 1971da8

Please sign in to comment.