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 1c4a23a3..cb98f8b1 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 @@ -6,6 +6,7 @@ import pp.mdga.message.server.DiceNowMessage; import pp.mdga.message.server.DieMessage; import pp.mdga.message.server.EndOfTurnMessage; +import pp.mdga.message.server.RankingResponseMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.GameState; @@ -26,6 +27,7 @@ public class DetermineStartPlayerState extends GameAutomatonState { * Create DetermineStartPlayerState attributes. */ private Map diceResults = new HashMap<>(); + private Map rankedResults = new HashMap<>(); private List playersHaveToRoll = new ArrayList<>(); /** @@ -50,6 +52,7 @@ public void enter() { public void exit() { LOGGER.log(System.Logger.Level.DEBUG, "Exited DetermineStartPlayerState state."); this.diceResults.clear(); + this.rankedResults.clear(); this.playersHaveToRoll.clear(); } @@ -71,19 +74,25 @@ public void received(RequestDieMessage msg, int from) { if (maximumRoll <= entry.getValue()) { maximumRoll = entry.getValue(); } else { + this.rankedResults.put(entry.getKey(), entry.getValue()); this.playersHaveToRoll.remove(entry.getKey()); this.logic.getServerSender().send(entry.getKey(), new EndOfTurnMessage()); } } + for (Map.Entry entry: this.rankedResults.entrySet()) { + System.out.println("[SERVER] Player: %s rolled a %d".formatted(this.logic.getGame().getPlayerById(entry.getKey()).getName(), entry.getKey())); + } + if (this.playersHaveToRoll.size() == 1) { + this.logic.getServerSender().broadcast(new RankingResponseMessage(this.rankedResults)); 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 DiceNowMessage()); } - diceResults.clear(); + this.diceResults.clear(); } } }