From 1e6856744be7c03778a326dba88d602720c42476 Mon Sep 17 00:00:00 2001 From: Daniel Grigencha Date: Fri, 6 Dec 2024 02:38:46 +0100 Subject: [PATCH] Updated 'DetermineStartPlayerState' class. Updated the 'DetermineStartPlayerState' class by adding the 'received(AnimationEndMessage msg, int from)' method to it. --- .../game/DetermineStartPlayerState.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/DetermineStartPlayerState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/DetermineStartPlayerState.java index 2128abbf..388c1efd 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/DetermineStartPlayerState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/DetermineStartPlayerState.java @@ -1,6 +1,7 @@ package pp.mdga.server.automaton.game; import pp.mdga.game.Player; +import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.message.client.RequestDieMessage; import pp.mdga.message.server.ActivePlayerMessage; import pp.mdga.message.server.DiceNowMessage; @@ -28,6 +29,7 @@ public class DetermineStartPlayerState extends GameAutomatonState { */ private Map diceResults = new HashMap<>(); private Map rankedResults = new HashMap<>(); + private Map messageReceived = new HashMap<>(); /** * Constructs a server state of the specified game logic. @@ -93,4 +95,22 @@ else if (maximumRoll < entry.getKey()) { } } } + + /** + * 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) { + if (this.messageReceived.size() == this.logic.getGame().getPlayers().size()) { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new DiceNowMessage()); + this.gameAutomaton.setCurrentState(this.gameAutomaton.getTurnState()); + this.gameAutomaton.getTurnState().setCurrentState(this.gameAutomaton.getTurnState().getPowerCardState()); + } else { + this.messageReceived.put(from, true); + } + } }