From 6ab8f2d90d55739082988b48da6bada015422518 Mon Sep 17 00:00:00 2001 From: Fleischer Hanno Date: Mon, 9 Dec 2024 19:55:03 +0100 Subject: [PATCH] fixed missing check on shield state after swap --- .../pp/mdga/client/gamestate/GameStates.java | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/GameStates.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/GameStates.java index 049820b0..e8d5555c 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/GameStates.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/GameStates.java @@ -37,15 +37,6 @@ protected void handlePowerCard(PlayCardMessage msg) { logic.getGame().getDiscardPile().add(msg.getCard()); } - protected void throwPiece(Piece piece) { - logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(piece)].clearOccupant(); - logic.getGame().getPlayerByColor(piece.getColor()).addWaitingPiece(piece); - logic.addNotification(new ThrowPieceNotification(piece.getUuid(), piece.getColor())); - logic.getGame().getPlayerByColor(piece.getColor()).getPlayerStatistic().increasePiecesBeingThrown(); - logic.getGame().getGameStatistics().increasePiecesBeingThrown(); - piece.setState(PieceState.WAITING); - } - private void handleShield(UUID uuid) { Board board = logic.getGame().getBoard(); Piece piece = logic.getGame().getPieceThroughUUID(uuid); @@ -70,6 +61,22 @@ private void swapPieces(Piece messageOwn, Piece messageEnemy) { ownNode.setOccupant(modelEnemy); enemyNode.setOccupant(modelOwn); + logic.addNotification(new SwapPieceNotification(modelOwn.getUuid(), modelEnemy.getUuid())); + checkShieldAfterSwap(enemyNode, modelOwn); + checkShieldAfterSwap(ownNode, modelEnemy); + + } + + private void checkShieldAfterSwap(Node node, Piece piece){ + if (node.isStart()){ + if (piece.isShielded()){ + piece.setShield(ShieldState.SUPPRESSED); + logic.addNotification(new ShieldSuppressedNotification(piece.getUuid())); + } + } else if (piece.isSuppressed()){ + piece.setShield(ShieldState.ACTIVE); + logic.addNotification(new ShieldActiveNotification(piece.getUuid())); + } } }