Updated 'DetermineStartPlayerState' class.

Updated the 'DetermineStartPlayerState' class by fixing the logic inside the received(RequestDieMessage msg, int from)' method in it.
This commit is contained in:
Daniel Grigencha
2024-12-03 01:30:39 +01:00
parent c707abc465
commit 35ab777f04

View File

@@ -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<Integer, Integer> 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();
}
}
}