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 9aca4089..e389da54 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 @@ -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); 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 ff3e62e0..8c595d87 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 @@ -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));