Updated 'DeterminStartPlayerState' class.
Updated the 'DetermineStartPlayerState' class by adding the multi roll support to it. In Addition, the server model will be updated correctly.
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package pp.mdga.server.automaton.game;
|
package pp.mdga.server.automaton.game;
|
||||||
|
|
||||||
|
import pp.mdga.game.Color;
|
||||||
import pp.mdga.message.client.AnimationEndMessage;
|
import pp.mdga.message.client.AnimationEndMessage;
|
||||||
import pp.mdga.message.client.RequestDieMessage;
|
import pp.mdga.message.client.RequestDieMessage;
|
||||||
import pp.mdga.message.server.ActivePlayerMessage;
|
import pp.mdga.message.server.ActivePlayerMessage;
|
||||||
@@ -24,10 +25,10 @@ public class DetermineStartPlayerState extends GameAutomatonState {
|
|||||||
/**
|
/**
|
||||||
* Create DetermineStartPlayerState attributes.
|
* Create DetermineStartPlayerState attributes.
|
||||||
*/
|
*/
|
||||||
private Map<Integer, Integer> diceResults = new HashMap<>();
|
private final Map<Integer, Integer> diceResults = new HashMap<>();
|
||||||
private Map<Integer, Integer> rankedResults = new HashMap<>();
|
|
||||||
private final List<Integer> playersHaveToRoll = new ArrayList<>();
|
private final List<Integer> playersHaveToRoll = new ArrayList<>();
|
||||||
private Map<Integer, Boolean> messageReceived = new HashMap<>();
|
private final Map<Integer, Boolean> messageReceived = new HashMap<>();
|
||||||
|
private int rolls = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a server state of the specified game logic.
|
* Constructs a server state of the specified game logic.
|
||||||
@@ -48,7 +49,7 @@ public void enter() {
|
|||||||
public void exit() {
|
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.messageReceived.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -63,6 +64,7 @@ public void received(RequestDieMessage msg, int from) {
|
|||||||
int roll = this.logic.getGame().getDie().shuffle();
|
int roll = this.logic.getGame().getDie().shuffle();
|
||||||
this.logic.getServerSender().send(from, new DieMessage(roll));
|
this.logic.getServerSender().send(from, new DieMessage(roll));
|
||||||
this.diceResults.put(from, roll);
|
this.diceResults.put(from, roll);
|
||||||
|
this.rolls++;
|
||||||
if (this.diceResults.size() == this.logic.getGame().getPlayers().size()) {
|
if (this.diceResults.size() == this.logic.getGame().getPlayers().size()) {
|
||||||
int maximumRoll = 0;
|
int maximumRoll = 0;
|
||||||
|
|
||||||
@@ -79,6 +81,7 @@ else if (maximumRoll < entry.getKey()) {
|
|||||||
this.logic.getServerSender().send(entry.getKey(), new EndOfTurnMessage());
|
this.logic.getServerSender().send(entry.getKey(), new EndOfTurnMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,16 +95,20 @@ else if (maximumRoll < entry.getKey()) {
|
|||||||
@Override
|
@Override
|
||||||
public void received(AnimationEndMessage msg, int from) {
|
public void received(AnimationEndMessage msg, int from) {
|
||||||
this.messageReceived.put(from, true);
|
this.messageReceived.put(from, true);
|
||||||
if (this.messageReceived.size() == this.logic.getGame().getPlayers().size()) {
|
if (this.messageReceived.size() == this.rolls) {
|
||||||
|
this.messageReceived.clear();
|
||||||
if (this.playersHaveToRoll.size() > 1) {
|
if (this.playersHaveToRoll.size() > 1) {
|
||||||
for (Integer id : this.playersHaveToRoll) {
|
for (Integer id : this.playersHaveToRoll) {
|
||||||
this.logic.getServerSender().send(id, new DiceNowMessage());
|
this.logic.getServerSender().send(id, new DiceNowMessage());
|
||||||
}
|
}
|
||||||
|
this.rolls = 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
Color color = this.logic.getGame().getPlayerById(this.playersHaveToRoll.get(0)).getColor();
|
||||||
|
this.logic.getGame().setActiveColor(color);
|
||||||
this.logic.getServerSender().broadcast(new RankingResponseMessage(this.diceResults));
|
this.logic.getServerSender().broadcast(new RankingResponseMessage(this.diceResults));
|
||||||
this.logic.getServerSender().broadcast(new ActivePlayerMessage(this.logic.getGame().getPlayerById(this.playersHaveToRoll.get(0)).getColor()));
|
this.logic.getServerSender().broadcast(new ActivePlayerMessage(color));
|
||||||
this.gameAutomaton.setCurrentState(this.gameAutomaton.getTurnState());
|
this.gameAutomaton.setCurrentState(this.gameAutomaton.getAnimationState());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user