From a18165bc0212b768ff13d92a81d17b3e6fef1b4e Mon Sep 17 00:00:00 2001 From: Daniel Grigencha Date: Fri, 6 Dec 2024 08:55:01 +0100 Subject: [PATCH 1/7] Updated 'Game' class. Updated the 'Game' class by commenting out the creation of turbo and shield cards. This is only for testing purposes. --- Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 0ffd7e5b..bd7667d4 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 @@ -92,9 +92,9 @@ 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 TurboCard(), AMOUNT_OF_TURBO_CARDS); this.addBonusCards(new SwapCard(), AMOUNT_OF_SWAP_CARDS); - this.addBonusCards(new ShieldCard(), AMOUNT_OF_SHIELD_CARDS); +// this.addBonusCards(new ShieldCard(), AMOUNT_OF_SHIELD_CARDS); Collections.shuffle(this.drawPile); } From 77b0207214302adfb8099b8b6ba7bf4ceef8b9ea Mon Sep 17 00:00:00 2001 From: Daniel Grigencha Date: Fri, 6 Dec 2024 08:56:21 +0100 Subject: [PATCH 2/7] Updated 'TurnState' class. Updated the 'TurnState' class by adding the 'SelectedPiecesMessage', 'NoPowerCardMessage', 'RequestDieMessage' and 'ReuqestMoveMessage' handling to it. --- .../mdga/server/automaton/game/TurnState.java | 55 ++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) 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 11c8de5b..4ed6feb8 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,10 @@ package pp.mdga.server.automaton.game; import pp.mdga.game.Player; +import pp.mdga.message.client.NoPowerCardMessage; +import pp.mdga.message.client.RequestDieMessage; +import pp.mdga.message.client.RequestMoveMessage; +import pp.mdga.message.client.SelectedPiecesMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.GameState; import pp.mdga.server.automaton.game.turn.ChoosePieceState; @@ -49,8 +53,9 @@ public TurnState(GameState gameAutomaton, ServerGameLogic logic) { @Override public void enter() { - LOGGER.log(Level.DEBUG, "Entered TurnState state."); + LOGGER.log(Level.INFO, "Entered TurnState state."); this.player = this.logic.getGame().getPlayerById(this.logic.getGame().getActivePlayerId()); + this.setCurrentState(this.powerCardState); } @Override @@ -58,6 +63,54 @@ public void exit() { LOGGER.log(Level.DEBUG, "Exited TurnState state."); } + /** + * This method will be called whenever the server received an SelectedPiecesMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a SelectedPiecesMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(SelectedPiecesMessage msg, int from) { + this.currentState.received(msg, from); + } + + /** + * This method will be called whenever the server received an NoPowerCardMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a NoPowerCardMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(NoPowerCardMessage msg, int from) { + this.currentState.received(msg, from); + } + + /** + * This method will be called whenever the server received a RequestDieMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a RequestDieMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(RequestDieMessage msg, int from) { + this.currentState.received(msg, from); + } + + /** + * This method will be called whenever the server received a RequestMoveMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a RequestMoveMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(RequestMoveMessage msg, int from) { + this.currentState.received(msg, from); + } + /** * This method will be used to return currentState attribute of TurnState class. * From 12cf5f3e71116ec91653df55dacb79278e0f906b Mon Sep 17 00:00:00 2001 From: Daniel Grigencha Date: Fri, 6 Dec 2024 08:57:08 +0100 Subject: [PATCH 3/7] Updated 'PowerCardState' class. Updated the 'PowerCardState' class by adding the 'SelectedPiecesMessage' handling to it. --- .../server/automaton/game/turn/PowerCardState.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PowerCardState.java index 11af5a97..c34ec6ba 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PowerCardState.java @@ -2,6 +2,7 @@ import pp.mdga.game.Piece; import pp.mdga.game.card.PowerCard; +import pp.mdga.message.client.SelectedPiecesMessage; import pp.mdga.message.server.DiceNowMessage; import pp.mdga.message.server.PossibleCardsMessage; import pp.mdga.server.ServerGameLogic; @@ -85,6 +86,18 @@ public void addSelectedPiece(Piece piece) { this.selectedPieces.add(piece); } + /** + * This method will be called whenever the server received an SelectedPiecesMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a SelectedPiecesMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(SelectedPiecesMessage msg, int from) { + this.currentState.received(msg, from); + } + /** * This method will be used to return currentState attribute of PowerCardState class. * From b00219c4fb8d3bca3dfe5948e2f4ed6de2d636a4 Mon Sep 17 00:00:00 2001 From: Daniel Grigencha Date: Fri, 6 Dec 2024 08:58:01 +0100 Subject: [PATCH 4/7] Updated 'PlayPowerCardState' class. Updated the 'PlayPowerCardState' class by adding the 'AnimationEndMessage' handling to it. --- .../game/turn/PlayPowerCardState.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) 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 1a40bf37..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 @@ -1,15 +1,25 @@ package pp.mdga.server.automaton.game.turn; +import pp.mdga.message.client.AnimationEndMessage; +import pp.mdga.message.server.DiceNowMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.AnimationState; import pp.mdga.server.automaton.game.TurnState; +import java.util.HashSet; +import java.util.Set; + public class PlayPowerCardState extends TurnAutomatonState { /** * Create FirstRollState constants. */ private static final System.Logger LOGGER = System.getLogger(PlayPowerCardState.class.getName()); + /** + * Create PlayPowerCardState attributes. + */ + private Set messageReceived = new HashSet(); + /** * Constructs a server state of the specified game logic. * @@ -29,4 +39,20 @@ public void enter() { public void exit() { LOGGER.log(System.Logger.Level.DEBUG, "Exited PlayPowerCardState state."); } + + /** + * This method will be called whenever the server received an AnimationEndMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a AnimationEndMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(AnimationEndMessage msg, int from) { + this.messageReceived.add(from); + if (this.messageReceived.size() == this.logic.getGame().getPlayers().size()) { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new DiceNowMessage()); + this.turnAutomaton.setCurrentState(this.turnAutomaton.getRollDiceState()); + } + } } From 4904b32ea36e5f8310ffff829a54f7bd04beb7f5 Mon Sep 17 00:00:00 2001 From: Daniel Grigencha Date: Fri, 6 Dec 2024 08:58:51 +0100 Subject: [PATCH 5/7] Updated 'ChoosePieceState' class. Updated the 'ChoosePieceState' class by adding the 'RequestMoveMessage' handling to it. --- .../automaton/game/turn/ChoosePieceState.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java index 63479370..06765f8f 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java @@ -1,5 +1,6 @@ package pp.mdga.server.automaton.game.turn; +import pp.mdga.message.client.RequestMoveMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.TurnState; import pp.mdga.server.automaton.game.turn.choosepiece.*; @@ -46,6 +47,18 @@ public void exit() { LOGGER.log(System.Logger.Level.DEBUG, "Entered ChoosePieceState state."); } + /** + * This method will be called whenever the server received a RequestMoveMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a RequestMoveMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(RequestMoveMessage msg, int from) { + this.currentState.received(msg, from); + } + /** * This method will be used to return currentState attribute of ChoosePieceState class. * From 2e1fe3c050291181d950d0ec6321716ee9728268 Mon Sep 17 00:00:00 2001 From: Hanno Fleischer Date: Fri, 6 Dec 2024 15:19:04 +0100 Subject: [PATCH 6/7] fixed a missing method call ind TurnState and removed debug sout statements ind 'RollDiceMessage' --- .../src/main/java/pp/mdga/client/gamestate/TurnState.java | 5 +++++ .../pp/mdga/client/gamestate/turnstate/RollDiceState.java | 8 +++++++- 2 files changed, 12 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 db28af7a..1c7f8bf8 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 @@ -47,6 +47,11 @@ public void setState(TurnStates state){ this.state = state; } + @Override + public void selectDice(){ + state.selectDice(); + } + @Override public void selectPiece(Piece piece){ state.selectPiece(piece); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java index 00c9b925..e94d1783 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java @@ -37,11 +37,17 @@ public void selectDice(){ logic.send(new RequestDieMessage()); } + @Override public void received(DieMessage msg){ logic.getGame().setDiceEyes(msg.getDiceEye()); - parent.setState(parent.getChoosePiece()); + logic.addNotification(new RollDiceNotification(logic.getGame().getPlayerById(logic.getOwnPlayerId()).getColor(), msg.getDiceEye(),false)); } +// @Override +// public void received(ChoosePieceStateMessage msg){ +// parent.setState(parent.getChoosePiece()); +// } + @Override public void received(NoTurnMessage msg){ parent.getParent().setState(parent.getParent().getWaiting()); From 5a9f7a8118e0f89e482487d1b4d4dfa1122cd09e Mon Sep 17 00:00:00 2001 From: Hanno Fleischer Date: Fri, 6 Dec 2024 18:45:14 +0100 Subject: [PATCH 7/7] added AnimationEndMessages to 'RollDiceState', 'MovePieceState' and 'PlayPowerCardState' --- .../pp/mdga/client/gamestate/turnstate/MovePieceState.java | 2 +- .../mdga/client/gamestate/turnstate/PlayPowerCardState.java | 2 +- .../pp/mdga/client/gamestate/turnstate/RollDiceState.java | 6 ++++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/MovePieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/MovePieceState.java index 8a098dbb..22da0555 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/MovePieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/MovePieceState.java @@ -46,7 +46,7 @@ public void received(SpectatorMessage msg){ } @Override - public void received(DiceAgainMessage msg){ + public void received(DiceNowMessage msg){ parent.setState(parent.getRollDice()); } 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 5f95a2ca..1ecae283 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 @@ -35,7 +35,7 @@ public void setPlayCard(PlayCardMessage playCardMessage) { @Override public void selectAnimationEnd(){ - parent.setState(parent.getRollDice()); logic.send(new AnimationEndMessage()); + parent.setState(parent.getRollDice()); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java index e94d1783..9b160ec2 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java @@ -3,6 +3,7 @@ import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; import pp.mdga.client.gamestate.TurnState; +import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.message.client.RequestDieMessage; import pp.mdga.message.server.DieMessage; import pp.mdga.message.server.NoTurnMessage; @@ -43,6 +44,11 @@ public void received(DieMessage msg){ logic.addNotification(new RollDiceNotification(logic.getGame().getPlayerById(logic.getOwnPlayerId()).getColor(), msg.getDiceEye(),false)); } + @Override + public void selectAnimationEnd(){ + logic.send(new AnimationEndMessage()); + } + // @Override // public void received(ChoosePieceStateMessage msg){ // parent.setState(parent.getChoosePiece());