From f0f4e0eb5e94eda3d18bea5de40b9d7b21923788 Mon Sep 17 00:00:00 2001 From: Hanno Fleischer Date: Tue, 10 Dec 2024 15:06:35 +0100 Subject: [PATCH] added presentation die results and powercards as well as fixed a bug where when a piece was thrown with a suppressed shield it wouldnt be cleared --- .../main/java/pp/mdga/client/gamestate/SpectatorState.java | 5 +++++ .../main/java/pp/mdga/client/gamestate/WaitingState.java | 4 ++++ .../turnstate/choosepiecestate/SelectPieceState.java | 5 +++++ .../turnstate/choosepiecestate/StartPieceState.java | 4 ++++ .../turnstate/choosepiecestate/WaitingPieceState.java | 6 ++++++ Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java | 4 +--- .../src/main/java/pp/mdga/server/automaton/LobbyState.java | 5 +++++ 7 files changed, 30 insertions(+), 3 deletions(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java index e6da6261..79df327e 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java @@ -6,6 +6,7 @@ import pp.mdga.game.BonusCard; import pp.mdga.game.Piece; import pp.mdga.game.PieceState; +import pp.mdga.game.ShieldState; import pp.mdga.game.card.HiddenCard; import pp.mdga.message.server.*; import pp.mdga.notification.*; @@ -86,6 +87,10 @@ public void received(MoveMessage msg) { if (occ != null) { //TODO: MoveThrowNotification logic.addNotification(new ThrowPieceNotification(occ.getUuid(), piece.getColor())); + if (occ.isSuppressed()){ + logic.addNotification(new RemoveShieldNotification(occ.getUuid())); + occ.setShield(ShieldState.NONE); + } //set occ to waiting logic.getGame().getPlayerByColor(occ.getColor()).addWaitingPiece(occ); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java index 30cf5c84..d6b26e7d 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java @@ -127,6 +127,10 @@ public void received(MoveMessage msg) { if (occ != null) { //TODO: MoveThrowNotification logic.addNotification(new ThrowPieceNotification(occ.getUuid(), piece.getColor())); + if (occ.isSuppressed()){ + logic.addNotification(new RemoveShieldNotification(occ.getUuid())); + occ.setShield(ShieldState.NONE); + } //set occ to waiting logic.getGame().getPlayerByColor(occ.getColor()).addWaitingPiece(occ); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java index 112f94da..0e5ec960 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java @@ -11,6 +11,7 @@ import pp.mdga.message.server.MoveMessage; import pp.mdga.notification.HomeMoveNotification; import pp.mdga.notification.MovePieceNotification; +import pp.mdga.notification.RemoveShieldNotification; import pp.mdga.notification.ShieldActiveNotification; import pp.mdga.notification.ShieldSuppressedNotification; import pp.mdga.notification.ThrowPieceNotification; @@ -92,6 +93,10 @@ public void received(MoveMessage msg) { if (occ != null) { //TODO: MoveThrowNotification logic.addNotification(new ThrowPieceNotification(occ.getUuid(), piece.getColor())); + if (occ.isSuppressed()){ + logic.addNotification(new RemoveShieldNotification(occ.getUuid())); + occ.setShield(ShieldState.NONE); + } //set occ to waiting logic.getGame().getPlayerByColor(occ.getColor()).addWaitingPiece(occ); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java index 1ad5972b..15c86ddd 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java @@ -64,6 +64,10 @@ public void received(MoveMessage msg){ Piece occ = targetNode.getOccupant(); if (occ != null){ logic.getGame().getPlayerByColor(occ.getColor()).addWaitingPiece(occ); + if (occ.isSuppressed()){ + logic.addNotification(new RemoveShieldNotification(occ.getUuid())); + occ.setShield(ShieldState.NONE); + } logic.addNotification(new ThrowPieceNotification(occ.getUuid(), piece.getColor())); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/WaitingPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/WaitingPieceState.java index b7c43fa0..e80948de 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/WaitingPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/WaitingPieceState.java @@ -5,10 +5,12 @@ import pp.mdga.client.gamestate.turnstate.ChoosePieceState; import pp.mdga.game.Piece; import pp.mdga.game.PieceState; +import pp.mdga.game.ShieldState; import pp.mdga.message.client.RequestMoveMessage; import pp.mdga.message.client.SelectedPiecesMessage; import pp.mdga.message.server.MoveMessage; import pp.mdga.notification.MovePieceNotification; +import pp.mdga.notification.RemoveShieldNotification; import pp.mdga.notification.ThrowPieceNotification; import java.util.ArrayList; @@ -44,6 +46,10 @@ public void received(MoveMessage msg){ Piece occ = logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].getOccupant(); if (occ != null){ logic.getGame().getPlayerByColor(occ.getColor()).addWaitingPiece(occ); + if (occ.isSuppressed()){ + logic.addNotification(new RemoveShieldNotification(occ.getUuid())); + occ.setShield(ShieldState.NONE); + } logic.addNotification(new ThrowPieceNotification(occ.getUuid(), msg.getPiece().getColor())); } 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 b1dfcd02..1611a1a3 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 @@ -87,9 +87,7 @@ public Game() { gameStatistics = new Statistic(); initializeDrawPile(); board = new Board(); - die = new Die( - //TODO - ); + die = new Die(1,2,4,4,1,5,5,5,4,6,1,5,6,4,3,4,6,4,1,1,2,5,1,6,5,6,1,4,2,5,1,3,2,2,4,6,6,5); } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java index 34074ecc..b374b8d5 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java @@ -56,6 +56,11 @@ public void initializeGame() { for (var player : this.logic.getGame().getPlayers().values()) { player.initialize(); player.addHandCard(this.logic.getGame().draw()); + //TODO + player.addHandCard(new TurboCard()); + player.addHandCard(new ShieldCard()); + player.addHandCard(new SwapCard()); + Piece piece = player.getPieces()[0]; player.getWaitingArea()[0] = null;