merge the new developmentbranch into the test branch #39
@@ -28,7 +28,6 @@ public class DetermineStartPlayerState extends GameAutomatonState {
|
||||
*/
|
||||
private Map<Integer, Integer> diceResults = new HashMap<>();
|
||||
private Map<Integer, Integer> rankedResults = new HashMap<>();
|
||||
private List<Integer> playersHaveToRoll = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Constructs a server state of the specified game logic.
|
||||
@@ -43,9 +42,6 @@ public DetermineStartPlayerState(GameState gameAutomaton, ServerGameLogic logic)
|
||||
@Override
|
||||
public void enter() {
|
||||
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
|
||||
@@ -53,7 +49,6 @@ public void exit() {
|
||||
LOGGER.log(System.Logger.Level.DEBUG, "Exited DetermineStartPlayerState state.");
|
||||
this.diceResults.clear();
|
||||
this.rankedResults.clear();
|
||||
this.playersHaveToRoll.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -70,29 +65,31 @@ public void received(RequestDieMessage msg, int from) {
|
||||
this.diceResults.put(from, roll);
|
||||
if (this.diceResults.size() == this.logic.getGame().getPlayers().size()) {
|
||||
int maximumRoll = 0;
|
||||
for (Map.Entry<Integer, Integer> entry: this.diceResults.entrySet()) {
|
||||
if (maximumRoll <= entry.getValue()) {
|
||||
List<Integer> playersHaveToRoll = new ArrayList<>();
|
||||
|
||||
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();
|
||||
} else {
|
||||
this.rankedResults.put(entry.getKey(), entry.getValue());
|
||||
this.playersHaveToRoll.remove(entry.getKey());
|
||||
playersHaveToRoll.clear();
|
||||
playersHaveToRoll.add(entry.getKey());
|
||||
}
|
||||
else {
|
||||
this.logic.getServerSender().send(entry.getKey(), new EndOfTurnMessage());
|
||||
}
|
||||
}
|
||||
|
||||
for (Map.Entry<Integer, Integer> 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) {
|
||||
if (playersHaveToRoll.size() > 1) {
|
||||
for (Integer id : playersHaveToRoll) {
|
||||
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