added error handling when the drawpile is empty

This commit is contained in:
Hanno Fleischer
2024-12-11 14:11:07 +01:00
parent 14a407b7d5
commit 8201ab4b63
5 changed files with 35 additions and 9 deletions

View File

@@ -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;

View File

@@ -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()));
}
}
}
}

View File

@@ -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()));
}
}
}
}

View File

@@ -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.

View File

@@ -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.