Updated 'DetermineStartPlayerState' class.
Updated the 'DetermineStartPlayerState' class by updating the whole start player determination process in it.
This commit is contained in:
@@ -28,7 +28,6 @@ public class DetermineStartPlayerState extends GameAutomatonState {
|
|||||||
*/
|
*/
|
||||||
private Map<Integer, Integer> diceResults = new HashMap<>();
|
private Map<Integer, Integer> diceResults = new HashMap<>();
|
||||||
private Map<Integer, Integer> rankedResults = new HashMap<>();
|
private Map<Integer, Integer> rankedResults = new HashMap<>();
|
||||||
private List<Integer> playersHaveToRoll = new ArrayList<>();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a server state of the specified game logic.
|
* Constructs a server state of the specified game logic.
|
||||||
@@ -43,9 +42,6 @@ public DetermineStartPlayerState(GameState gameAutomaton, ServerGameLogic logic)
|
|||||||
@Override
|
@Override
|
||||||
public void enter() {
|
public void enter() {
|
||||||
LOGGER.log(System.Logger.Level.DEBUG, "Entered DetermineStartPlayerState state.");
|
LOGGER.log(System.Logger.Level.DEBUG, "Entered DetermineStartPlayerState state.");
|
||||||
for (Map.Entry<Integer, Player> entry: this.logic.getGame().getPlayers().entrySet()) {
|
|
||||||
this.playersHaveToRoll.add(entry.getKey());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -53,7 +49,6 @@ public void exit() {
|
|||||||
LOGGER.log(System.Logger.Level.DEBUG, "Exited DetermineStartPlayerState state.");
|
LOGGER.log(System.Logger.Level.DEBUG, "Exited DetermineStartPlayerState state.");
|
||||||
this.diceResults.clear();
|
this.diceResults.clear();
|
||||||
this.rankedResults.clear();
|
this.rankedResults.clear();
|
||||||
this.playersHaveToRoll.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -70,29 +65,31 @@ public void received(RequestDieMessage msg, int from) {
|
|||||||
this.diceResults.put(from, roll);
|
this.diceResults.put(from, roll);
|
||||||
if (this.diceResults.size() == this.logic.getGame().getPlayers().size()) {
|
if (this.diceResults.size() == this.logic.getGame().getPlayers().size()) {
|
||||||
int maximumRoll = 0;
|
int maximumRoll = 0;
|
||||||
for (Map.Entry<Integer, Integer> entry: this.diceResults.entrySet()) {
|
List<Integer> playersHaveToRoll = new ArrayList<>();
|
||||||
if (maximumRoll <= entry.getValue()) {
|
|
||||||
|
for (Map.Entry<Integer, Integer> entry : this.diceResults.entrySet()) {
|
||||||
|
if (maximumRoll == entry.getKey()) {
|
||||||
|
playersHaveToRoll.add(entry.getKey());
|
||||||
|
}
|
||||||
|
else if (maximumRoll < entry.getKey()) {
|
||||||
maximumRoll = entry.getValue();
|
maximumRoll = entry.getValue();
|
||||||
} else {
|
playersHaveToRoll.clear();
|
||||||
this.rankedResults.put(entry.getKey(), entry.getValue());
|
playersHaveToRoll.add(entry.getKey());
|
||||||
this.playersHaveToRoll.remove(entry.getKey());
|
}
|
||||||
|
else {
|
||||||
this.logic.getServerSender().send(entry.getKey(), new EndOfTurnMessage());
|
this.logic.getServerSender().send(entry.getKey(), new EndOfTurnMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Map.Entry<Integer, Integer> entry: this.rankedResults.entrySet()) {
|
if (playersHaveToRoll.size() > 1) {
|
||||||
System.out.println("[SERVER] Player: %s rolled a %d".formatted(this.logic.getGame().getPlayerById(entry.getKey()).getName(), entry.getKey()));
|
for (Integer id : playersHaveToRoll) {
|
||||||
}
|
|
||||||
|
|
||||||
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());
|
this.logic.getServerSender().send(id, new DiceNowMessage());
|
||||||
}
|
}
|
||||||
this.diceResults.clear();
|
}
|
||||||
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user