From 8470a969084641d01ccf6021ab4375a3e992b925 Mon Sep 17 00:00:00 2001 From: Daniel Grigencha Date: Fri, 6 Dec 2024 02:55:14 +0100 Subject: [PATCH] Updated 'DetermineStartPlayerState' class. Updated the 'DetermineStartPlayerState' class by updating the 'AnimationEndMessage' handling in it. In Addition, the 'RequestDieMessage' handling was updated as well. --- .../game/DetermineStartPlayerState.java | 38 ++++++++----------- 1 file changed, 15 insertions(+), 23 deletions(-) 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 388c1efd..d0193564 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,5 @@ 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; @@ -15,8 +14,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; public class DetermineStartPlayerState extends GameAutomatonState { /** @@ -29,6 +26,7 @@ public class DetermineStartPlayerState extends GameAutomatonState { */ private Map diceResults = new HashMap<>(); private Map rankedResults = new HashMap<>(); + private final List playersHaveToRoll = new ArrayList<>(); private Map messageReceived = new HashMap<>(); /** @@ -67,32 +65,20 @@ public void received(RequestDieMessage msg, int from) { this.diceResults.put(from, roll); if (this.diceResults.size() == this.logic.getGame().getPlayers().size()) { int maximumRoll = 0; - List playersHaveToRoll = new ArrayList<>(); for (Map.Entry entry : this.diceResults.entrySet()) { if (maximumRoll == entry.getKey()) { - playersHaveToRoll.add(entry.getKey()); + this.playersHaveToRoll.add(entry.getKey()); } else if (maximumRoll < entry.getKey()) { maximumRoll = entry.getValue(); - playersHaveToRoll.clear(); - playersHaveToRoll.add(entry.getKey()); + this.playersHaveToRoll.clear(); + this.playersHaveToRoll.add(entry.getKey()); } else { this.logic.getServerSender().send(entry.getKey(), new EndOfTurnMessage()); } } - - if (playersHaveToRoll.size() > 1) { - for (Integer id : playersHaveToRoll) { - this.logic.getServerSender().send(id, new DiceNowMessage()); - } - } - else { - this.logic.getServerSender().broadcast(new RankingResponseMessage(this.diceResults)); - this.logic.getServerSender().broadcast(new ActivePlayerMessage(this.logic.getGame().getPlayerById(playersHaveToRoll.get(0)).getColor())); - this.gameAutomaton.setCurrentState(this.gameAutomaton.getAnimationState()); - } } } @@ -105,12 +91,18 @@ else if (maximumRoll < entry.getKey()) { */ @Override public void received(AnimationEndMessage msg, int from) { + this.messageReceived.put(from, true); 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); + if (this.playersHaveToRoll.size() > 1) { + for (Integer id : this.playersHaveToRoll) { + this.logic.getServerSender().send(id, new DiceNowMessage()); + } + } + else { + this.logic.getServerSender().broadcast(new RankingResponseMessage(this.diceResults)); + this.logic.getServerSender().broadcast(new ActivePlayerMessage(this.logic.getGame().getPlayerById(this.playersHaveToRoll.get(0)).getColor())); + this.gameAutomaton.setCurrentState(this.gameAutomaton.getTurnState()); + } } } }