diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java index bd77237a..f2a51ee2 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java @@ -18,7 +18,7 @@ public class GameView extends MdgaView { private GuiHandler guiHandler; private ButtonLeft leaveButton; - private ButtonRight confirmButton; + public ButtonRight confirmButton; private ButtonRight noPowerButton; @@ -28,6 +28,9 @@ public class GameView extends MdgaView { private FilterPostProcessor fpp; + public boolean needConfirm = false; + public boolean needNoPower = false; + private Node guiHandlerNode = new Node(); public GameView(MdgaApp app) { @@ -116,19 +119,26 @@ public Color getOwnColor() { public void needConfirm() { noPowerButton.hide(); confirmButton.show(); + + needConfirm = true; } public void noConfirm() { confirmButton.hide(); + + needConfirm = false; } public void showNoPower() { confirmButton.hide(); noPowerButton.show(); + + needNoPower = true; } public void hideNoPower() { noPowerButton.hide(); + needNoPower = false; } public void enterInterrupt(Color color) { diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/MdgaView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/MdgaView.java index a16cc2d7..a3da3d87 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/MdgaView.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/MdgaView.java @@ -59,7 +59,6 @@ public void enter() { public void leave() { onLeave(); - settingsButton.hide(); while (settingsDepth > 0) { @@ -197,7 +196,13 @@ public void pressForward() { } if (this instanceof GameView gameView) { - app.getAcousticHandler().playSound(MdgaSound.WRONG_INPUT); + if(gameView.needConfirm) { + app.getModelSynchronize().confirm(); + } else if(gameView.needNoPower) { + app.getModelSynchronize().confirm(); + } else { + app.getAcousticHandler().playSound(MdgaSound.WRONG_INPUT); + } } if (this instanceof CeremonyView ceremonyView) { diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/PlayPowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/PlayPowerCardState.java index 41464e64..d67f8b03 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/PlayPowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/PlayPowerCardState.java @@ -4,6 +4,8 @@ import pp.mdga.client.ClientState; import pp.mdga.client.gamestate.TurnState; import pp.mdga.game.BonusCard; +import pp.mdga.game.card.ShieldCard; +import pp.mdga.game.card.SwapCard; import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.message.server.PlayCardMessage; import pp.mdga.notification.PlayCardNotification; @@ -13,7 +15,7 @@ public class PlayPowerCardState extends TurnStates { private final TurnState parent; private PlayCardMessage playCardMessage; - private int animationCounter = 0; + private int extraAnimationCounter = 0; public PlayPowerCardState(ClientState parent, ClientGameLogic logic) { super(parent, logic); @@ -22,11 +24,12 @@ public PlayPowerCardState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { - animationCounter++; - logic.addNotification(new PlayCardNotification(logic.getGame().getActiveColor() , playCardMessage.getCard().getCard())); - if(!playCardMessage.getCard().getCard().equals(BonusCard.TURBO)){ - animationCounter++; + if(playCardMessage.getCard() instanceof SwapCard) { + extraAnimationCounter++; } + + logic.addNotification(new PlayCardNotification(logic.getGame().getActiveColor() , playCardMessage.getCard().getCard())); + handlePowerCard(playCardMessage); } @@ -41,10 +44,12 @@ public void setPlayCard(PlayCardMessage playCardMessage) { @Override public void selectAnimationEnd(){ - animationCounter--; - if(animationCounter == 0){ - logic.send(new AnimationEndMessage()); - parent.setState(parent.getRollDice()); + if(extraAnimationCounter > 0) { + extraAnimationCounter--; + return; } + + logic.send(new AnimationEndMessage()); + parent.setState(parent.getRollDice()); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/NoPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/NoPieceState.java index f43beea9..31931335 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/NoPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/NoPieceState.java @@ -38,7 +38,6 @@ public void exit() { @Override public void received(SelectPieceMessage msg) { - //TODO ArrayList pieces = msg.getPieces().stream().map(piece -> logic.getGame().getPieceThroughUUID(piece.getUuid())).collect(Collectors.toCollection(ArrayList::new)); parent.getSelectPiece().setPossiblePieces(pieces); ArrayList listPiece = pieces.stream().map(Piece::getUuid).collect(Collectors.toCollection(ArrayList::new)); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java index 59ce519d..f00acea8 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java @@ -112,7 +112,6 @@ public void received(PossiblePieceMessage msg){ if (msg.getEnemyPossiblePieces().isEmpty()){ parent.getShield().setPossiblePieces(msg.getOwnPossiblePieces().stream().map(piece -> logic.getGame().getPieceThroughUUID(piece.getUuid())).collect(Collectors.toCollection(ArrayList::new))); parent.setState(parent.getShield()); - logic.addNotification(new SelectableShieldNotification(msg.getOwnPossiblePieces().stream().map(Piece::getUuid).toList())); } else { System.out.println("Should enter Swap State"); parent.getSwap().setPossibleOwnPieces(msg.getOwnPossiblePieces().stream().map(piece -> logic.getGame().getPieceThroughUUID(piece.getUuid())).collect(Collectors.toCollection(ArrayList::new))); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ShieldState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ShieldState.java index 95a53dd0..87882f2a 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ShieldState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ShieldState.java @@ -7,6 +7,7 @@ import pp.mdga.message.client.RequestPlayCardMessage; import pp.mdga.message.client.SelectedPiecesMessage; import pp.mdga.message.server.PlayCardMessage; +import pp.mdga.notification.SelectableShieldNotification; import java.lang.System.Logger.Level; import java.util.ArrayList; @@ -27,8 +28,7 @@ public ShieldState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { - logic.addNotification(null); - //TODO: selectable piece notification + logic.addNotification(new SelectableShieldNotification(possiblePieces.stream().map(Piece::getUuid).toList())); } @Override diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java index 50d655b9..9905209a 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java @@ -94,8 +94,8 @@ public Game() { * This method initializes the draw pile with the predefined number of bonus cards. */ private void initializeDrawPile() { -// this.addBonusCards(new TurboCard(), AMOUNT_OF_TURBO_CARDS); -// this.addBonusCards(new SwapCard(), AMOUNT_OF_SWAP_CARDS); + this.addBonusCards(new TurboCard(), AMOUNT_OF_TURBO_CARDS); + this.addBonusCards(new SwapCard(), AMOUNT_OF_SWAP_CARDS); this.addBonusCards(new ShieldCard(), AMOUNT_OF_SHIELD_CARDS); Collections.shuffle(this.drawPile); }