From 35ab777f044ac35d7b7b325253808bb42af6be88 Mon Sep 17 00:00:00 2001 From: Daniel Grigencha Date: Tue, 3 Dec 2024 01:30:39 +0100 Subject: [PATCH] Updated 'DetermineStartPlayerState' class. Updated the 'DetermineStartPlayerState' class by fixing the logic inside the received(RequestDieMessage msg, int from)' method in it. --- .../automaton/game/DetermineStartPlayerState.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 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 42c71629..1c4a23a3 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 @@ -3,6 +3,7 @@ import pp.mdga.game.Player; import pp.mdga.message.client.RequestDieMessage; import pp.mdga.message.server.ActivePlayerMessage; +import pp.mdga.message.server.DiceNowMessage; import pp.mdga.message.server.DieMessage; import pp.mdga.message.server.EndOfTurnMessage; import pp.mdga.server.ServerGameLogic; @@ -48,6 +49,8 @@ public void enter() { @Override public void exit() { LOGGER.log(System.Logger.Level.DEBUG, "Exited DetermineStartPlayerState state."); + this.diceResults.clear(); + this.playersHaveToRoll.clear(); } /** @@ -60,13 +63,12 @@ public void exit() { @Override public void received(RequestDieMessage msg, int from) { int roll = this.logic.getGame().getDie().shuffle(); + this.logic.getServerSender().send(from, new DieMessage(roll)); this.diceResults.put(from, roll); - int maximumRoll = 0; if (this.diceResults.size() == this.logic.getGame().getPlayers().size()) { + int maximumRoll = 0; for (Map.Entry entry: this.diceResults.entrySet()) { - if (maximumRoll == 0) { - maximumRoll = this.diceResults.get(entry.getKey()); - } else if (maximumRoll < entry.getValue()) { + if (maximumRoll <= entry.getValue()) { maximumRoll = entry.getValue(); } else { this.playersHaveToRoll.remove(entry.getKey()); @@ -76,10 +78,12 @@ public void received(RequestDieMessage msg, int from) { if (this.playersHaveToRoll.size() == 1) { this.logic.getServerSender().broadcast(new ActivePlayerMessage(this.logic.getGame().getPlayerById(this.playersHaveToRoll.get(0)).getColor())); + this.gameAutomaton.setCurrentState(this.gameAutomaton.getAnimationState()); } else { for (Integer id: this.playersHaveToRoll) { - this.logic.getServerSender().send(id, new DieMessage(roll)); + this.logic.getServerSender().send(id, new DiceNowMessage()); } + diceResults.clear(); } } }