From 1c87b566e9c20ba5ad9b59fe6459502357cfd431 Mon Sep 17 00:00:00 2001 From: Felix Koppe Date: Mon, 9 Dec 2024 02:40:45 +0100 Subject: [PATCH 1/4] Add DrawCardMessage logic --- .../java/pp/mdga/client/gamestate/TurnState.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java index 0521dda2..15d8e772 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java @@ -11,7 +11,13 @@ import pp.mdga.client.gamestate.turnstate.TurnStates; import pp.mdga.game.BonusCard; import pp.mdga.game.Piece; +import pp.mdga.game.card.HiddenCard; +import pp.mdga.game.card.ShieldCard; +import pp.mdga.game.card.SwapCard; +import pp.mdga.game.card.TurboCard; import pp.mdga.message.server.*; +import pp.mdga.notification.AcquireCardNotification; +import pp.mdga.notification.DrawCardNotification; public class TurnState extends GameStates { @@ -145,7 +151,13 @@ public void received(ChoosePieceStateMessage msg){ @Override public void received(DrawCardMessage msg){ - state.received(msg); + switch (msg.getCard()) { + case HiddenCard hiddenCard -> logic.addNotification(new DrawCardNotification(logic.getGame().getActiveColor(), BonusCard.HIDDEN)); + case TurboCard turboCard -> logic.addNotification(new AcquireCardNotification(BonusCard.TURBO)); + case ShieldCard shieldCard -> logic.addNotification(new AcquireCardNotification(BonusCard.SHIELD)); + case SwapCard swapCard -> logic.addNotification(new AcquireCardNotification(BonusCard.SWAP)); + case null, default -> throw new RuntimeException(); + } } public ChoosePieceState getChoosePiece() { From 8922cb8f1ca6f01aea864def913d98405e22b434 Mon Sep 17 00:00:00 2001 From: Fleischer Hanno Date: Mon, 9 Dec 2024 02:41:44 +0100 Subject: [PATCH 2/4] added removeshield notification --- .../java/pp/mdga/client/gamestate/TurnState.java | 8 ++++++++ .../notification/RemoveShieldNotification.java | 15 +++++++++++++++ .../pp/mdga/server/automaton/game/TurnState.java | 5 +++++ .../automaton/game/turn/PlayPowerCardState.java | 1 - 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 Projekte/mdga/model/src/main/java/pp/mdga/notification/RemoveShieldNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java index eec65ac0..2b1e83e7 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java @@ -11,11 +11,13 @@ import pp.mdga.client.gamestate.turnstate.TurnStates; import pp.mdga.game.BonusCard; import pp.mdga.game.Piece; +import pp.mdga.game.ShieldState; import pp.mdga.game.card.HiddenCard; import pp.mdga.game.card.ShieldCard; import pp.mdga.game.card.SwapCard; import pp.mdga.game.card.TurboCard; import pp.mdga.message.server.*; +import pp.mdga.notification.RemoveShieldNotification; import pp.mdga.notification.AcquireCardNotification; import pp.mdga.notification.DrawCardNotification; @@ -38,6 +40,12 @@ public TurnState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { this.setState(this.powerCardState); + for (Piece piece : logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()).getPieces()) { + if (piece.isShielded() || piece.isSuppressed()){ + piece.setShield(ShieldState.NONE); + logic.addNotification(new RemoveShieldNotification(piece.getUuid())); + } + } } @Override diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/notification/RemoveShieldNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/RemoveShieldNotification.java new file mode 100644 index 00000000..8c808f5c --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/notification/RemoveShieldNotification.java @@ -0,0 +1,15 @@ +package pp.mdga.notification; + +import java.util.UUID; + +public class RemoveShieldNotification extends Notification { + private final UUID pieceUuid; + + public RemoveShieldNotification(UUID pieceUuid) { + this.pieceUuid = pieceUuid; + } + + public UUID getPieceUuid() { + return pieceUuid; + } +} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/TurnState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/TurnState.java index c135410e..464b0e70 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/TurnState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/TurnState.java @@ -1,6 +1,8 @@ package pp.mdga.server.automaton.game; +import pp.mdga.game.Piece; import pp.mdga.game.Player; +import pp.mdga.game.ShieldState; import pp.mdga.message.client.*; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.GameState; @@ -52,6 +54,9 @@ public TurnState(GameState gameAutomaton, ServerGameLogic logic) { public void enter() { LOGGER.log(Level.INFO, "Entered TurnState state."); this.player = this.logic.getGame().getPlayerById(this.logic.getGame().getActivePlayerId()); + for (Piece piece : this.player.getPieces()) { + piece.setShield(ShieldState.NONE); + } this.setCurrentState(this.powerCardState); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PlayPowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PlayPowerCardState.java index b4df46c6..fe877ffc 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PlayPowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PlayPowerCardState.java @@ -32,7 +32,6 @@ public PlayPowerCardState(TurnState turnAutomaton, ServerGameLogic logic) { @Override public void enter() { - LOGGER.log(System.Logger.Level.DEBUG, "Entered PlayPowerCardState state."); } From de592cfa48564dd95036d97d2e69daf9a91531ef Mon Sep 17 00:00:00 2001 From: Felix Koppe Date: Mon, 9 Dec 2024 02:43:02 +0100 Subject: [PATCH 3/4] Move receive DrawCardMessage to GameState --- .../src/main/java/pp/mdga/client/GameState.java | 14 +++++++++++++- .../java/pp/mdga/client/gamestate/TurnState.java | 7 ------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java index a41d66c7..99e2264b 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java @@ -3,8 +3,14 @@ import pp.mdga.client.gamestate.*; import pp.mdga.game.BonusCard; import pp.mdga.game.Piece; +import pp.mdga.game.card.HiddenCard; +import pp.mdga.game.card.ShieldCard; +import pp.mdga.game.card.SwapCard; +import pp.mdga.game.card.TurboCard; import pp.mdga.message.client.LeaveGameMessage; import pp.mdga.message.server.*; +import pp.mdga.notification.AcquireCardNotification; +import pp.mdga.notification.DrawCardNotification; import pp.mdga.notification.InterruptNotification; import pp.mdga.notification.StartDialogNotification; @@ -288,7 +294,13 @@ public void received(ChoosePieceStateMessage msg){ @Override public void received(DrawCardMessage msg){ - state.received(msg); + switch (msg.getCard()) { + case HiddenCard hiddenCard -> logic.addNotification(new DrawCardNotification(logic.getGame().getActiveColor(), BonusCard.HIDDEN)); + case TurboCard turboCard -> logic.addNotification(new AcquireCardNotification(BonusCard.TURBO)); + case ShieldCard shieldCard -> logic.addNotification(new AcquireCardNotification(BonusCard.SHIELD)); + case SwapCard swapCard -> logic.addNotification(new AcquireCardNotification(BonusCard.SWAP)); + case null, default -> throw new RuntimeException(); + } } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java index 15d8e772..eec65ac0 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java @@ -151,13 +151,6 @@ public void received(ChoosePieceStateMessage msg){ @Override public void received(DrawCardMessage msg){ - switch (msg.getCard()) { - case HiddenCard hiddenCard -> logic.addNotification(new DrawCardNotification(logic.getGame().getActiveColor(), BonusCard.HIDDEN)); - case TurboCard turboCard -> logic.addNotification(new AcquireCardNotification(BonusCard.TURBO)); - case ShieldCard shieldCard -> logic.addNotification(new AcquireCardNotification(BonusCard.SHIELD)); - case SwapCard swapCard -> logic.addNotification(new AcquireCardNotification(BonusCard.SWAP)); - case null, default -> throw new RuntimeException(); - } } public ChoosePieceState getChoosePiece() { From 69d160d0fd77bdd7613f8c3a71569875729293fc Mon Sep 17 00:00:00 2001 From: Felix Koppe Date: Mon, 9 Dec 2024 02:50:45 +0100 Subject: [PATCH 4/4] Java23 --- .../src/main/java/pp/mdga/client/GameState.java | 16 ++++++++++------ .../java/pp/mdga/client/gamestate/TurnState.java | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java index 99e2264b..bb1d4333 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java @@ -294,12 +294,16 @@ public void received(ChoosePieceStateMessage msg){ @Override public void received(DrawCardMessage msg){ - switch (msg.getCard()) { - case HiddenCard hiddenCard -> logic.addNotification(new DrawCardNotification(logic.getGame().getActiveColor(), BonusCard.HIDDEN)); - case TurboCard turboCard -> logic.addNotification(new AcquireCardNotification(BonusCard.TURBO)); - case ShieldCard shieldCard -> logic.addNotification(new AcquireCardNotification(BonusCard.SHIELD)); - case SwapCard swapCard -> logic.addNotification(new AcquireCardNotification(BonusCard.SWAP)); - case null, default -> throw new RuntimeException(); + if(msg.getCard() instanceof HiddenCard){ + logic.addNotification(new DrawCardNotification(logic.getGame().getActiveColor(), BonusCard.HIDDEN)); + } else if(msg.getCard() instanceof TurboCard) { + logic.addNotification(new AcquireCardNotification(BonusCard.TURBO)); + } else if(msg.getCard() instanceof ShieldCard) { + logic.addNotification(new AcquireCardNotification(BonusCard.SHIELD)); + } else if(msg.getCard() instanceof SwapCard) { + logic.addNotification(new AcquireCardNotification(BonusCard.SWAP)); + } else { + throw new RuntimeException(); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java index eec65ac0..61967276 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java @@ -151,6 +151,7 @@ public void received(ChoosePieceStateMessage msg){ @Override public void received(DrawCardMessage msg){ + } public ChoosePieceState getChoosePiece() {