diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java index 4f4566e6..64746695 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java @@ -4,6 +4,7 @@ import pp.mdga.game.Piece; import pp.mdga.game.PieceState; import pp.mdga.game.Player; +import pp.mdga.game.card.PowerCard; import pp.mdga.message.client.*; import pp.mdga.message.server.*; import pp.mdga.server.ServerGameLogic; @@ -51,7 +52,12 @@ public void exit() { public void initializeGame() { for (var player : this.logic.getGame().getPlayers().values()) { player.initialize(); - player.addHandCard(this.logic.getGame().draw()); + PowerCard card = this.logic.getGame().draw(); + if (card == null) { + this.logic.getServerSender().broadcast(new IncorrectRequestMessage(7)); + } else { + player.addHandCard(card); + } Piece piece = player.getPieces()[0]; player.getWaitingArea()[0] = null; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java index 867323db..45645ad0 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java @@ -5,6 +5,7 @@ import pp.mdga.game.card.PowerCard; import pp.mdga.message.client.RequestMoveMessage; import pp.mdga.message.server.DrawCardMessage; +import pp.mdga.message.server.IncorrectRequestMessage; import pp.mdga.message.server.MoveMessage; import pp.mdga.message.server.SelectPieceMessage; import pp.mdga.server.ServerGameLogic; @@ -137,13 +138,21 @@ public void received(RequestMoveMessage msg, int from) { if (targetNode.isBonus()) { logic.getGame().getActivePlayer().getPlayerStatistic().increaseActivatedBonusNodes(); logic.getGame().getGameStatistics().increaseActivatedBonusNodes(); + PowerCard cardToDraw = logic.getGame().draw(); for (Player p : logic.getGame().getPlayersAsList()) { if (p.getColor() == logic.getGame().getActiveColor()) { - PowerCard cardToDraw = logic.getGame().draw(); - p.addHandCard(cardToDraw); - logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(cardToDraw)); + if (cardToDraw == null) { + this.logic.getServerSender().broadcast(new IncorrectRequestMessage(7)); + } else { + p.addHandCard(cardToDraw); + logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(cardToDraw)); + } } else { - logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(new HiddenCard())); + if (cardToDraw == null) { + this.logic.getServerSender().broadcast(new IncorrectRequestMessage(7)); + } else { + logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(new HiddenCard())); + } } } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/StartPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/StartPieceState.java index 96bedc62..22c5c794 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/StartPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/StartPieceState.java @@ -7,6 +7,7 @@ import pp.mdga.game.card.PowerCard; import pp.mdga.message.client.RequestMoveMessage; import pp.mdga.message.server.DrawCardMessage; +import pp.mdga.message.server.IncorrectRequestMessage; import pp.mdga.message.server.MoveMessage; import pp.mdga.message.server.StartPieceMessage; import pp.mdga.server.ServerGameLogic; @@ -70,13 +71,21 @@ public void received(RequestMoveMessage msg, int from) { if (targetNode.isBonus()) { logic.getGame().getActivePlayer().getPlayerStatistic().increaseActivatedBonusNodes(); logic.getGame().getGameStatistics().increaseActivatedBonusNodes(); + PowerCard cardToDraw = logic.getGame().draw(); for (Player p : logic.getGame().getPlayersAsList()) { if (p.getColor() == logic.getGame().getActiveColor()) { - PowerCard cardToDraw = logic.getGame().draw(); - p.addHandCard(cardToDraw); - logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(cardToDraw)); + if (cardToDraw == null) { + this.logic.getServerSender().broadcast(new IncorrectRequestMessage(7)); + } else { + p.addHandCard(cardToDraw); + logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(cardToDraw)); + } } else { - logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(new HiddenCard())); + if (cardToDraw == null) { + this.logic.getServerSender().broadcast(new IncorrectRequestMessage(7)); + } else { + logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(new HiddenCard())); + } } } } diff --git a/Projekte/mdga/model/src/main/resources/mdga.properties b/Projekte/mdga/model/src/main/resources/mdga.properties index bb0c2ca9..cebda5c9 100644 --- a/Projekte/mdga/model/src/main/resources/mdga.properties +++ b/Projekte/mdga/model/src/main/resources/mdga.properties @@ -7,6 +7,7 @@ incorrect.request.3=Selected to many or wrong pieces. incorrect.request.4=Did not select exactly 2 pieces or selected wrong pieces. incorrect.request.5=Cannot start game because not everyone is ready. incorrect.request.6=You are alone in this Lobby. +incorrect.request.7=The draw pile is empty. diff --git a/Projekte/mdga/model/src/main/resources/mdga_de.properties b/Projekte/mdga/model/src/main/resources/mdga_de.properties index 0f8855f5..4a1e521f 100644 --- a/Projekte/mdga/model/src/main/resources/mdga_de.properties +++ b/Projekte/mdga/model/src/main/resources/mdga_de.properties @@ -7,3 +7,4 @@ incorrect.request.3=Du hast zuviele, oder eine falsche Figur ausgew incorrect.request.4=Du hast nicht genau zwei Figuren, oder falsche Figuren ausgewählt. incorrect.request.5=Du kannst das Spiel nicht starten, da nicht alle Spieler bereit sind. incorrect.request.6=Du bist alleine in dieser Lobby. +incorrect.request.7=Der Nachziehstapel ist leer.