Add bonus node logic

This commit is contained in:
Felix Koppe
2024-12-09 02:19:43 +01:00
parent 61d67fd833
commit cb60cb1c42
2 changed files with 28 additions and 4 deletions

View File

@@ -1,10 +1,9 @@
package pp.mdga.server.automaton.game.turn.choosepiece;
import pp.mdga.game.Node;
import pp.mdga.game.Piece;
import pp.mdga.game.PieceState;
import pp.mdga.game.ShieldState;
import pp.mdga.game.*;
import pp.mdga.game.card.HiddenCard;
import pp.mdga.message.client.RequestMoveMessage;
import pp.mdga.message.server.DrawCardMessage;
import pp.mdga.message.server.MoveMessage;
import pp.mdga.message.server.SelectPieceMessage;
import pp.mdga.server.ServerGameLogic;
@@ -82,6 +81,17 @@ public void received(RequestMoveMessage msg, int from){
movePiece.setShield(ShieldState.NONE);
} else {
Node targetNode = logic.getGame().getBoard().getInfield()[targIdx];
if(targetNode.isBonus()) {
for (Player p : logic.getGame().getPlayersAsList()) {
if(p.isActive()) {
logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(logic.getGame().draw()));
} else {
logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(new HiddenCard()));
}
}
}
Piece occ = targetNode.getOccupant();
if (occ != null) {
logic.getGame().getPlayerByColor(occ.getColor()).addWaitingPiece(occ);

View File

@@ -2,7 +2,10 @@
import pp.mdga.game.Node;
import pp.mdga.game.Piece;
import pp.mdga.game.Player;
import pp.mdga.game.card.HiddenCard;
import pp.mdga.message.client.RequestMoveMessage;
import pp.mdga.message.server.DrawCardMessage;
import pp.mdga.message.server.MoveMessage;
import pp.mdga.message.server.StartPieceMessage;
import pp.mdga.server.ServerGameLogic;
@@ -42,6 +45,17 @@ public void received(RequestMoveMessage msg, int from){
if (piece.equals(msg.getPiece())) {
int targetIndex = calculateTargetIndex(piece);
Node targetNode = logic.getGame().getBoard().getInfield()[targetIndex];
if(targetNode.isBonus()) {
for (Player p : logic.getGame().getPlayersAsList()) {
if(p.isActive()) {
logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(logic.getGame().draw()));
} else {
logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(new HiddenCard()));
}
}
}
//send MoveMessage
logic.getServerSender().broadcast(new MoveMessage(piece, false, targetIndex));