Updated 'DetermineStartPlayerState' class.
Updated the 'DetermineStartPlayerState' class by updating the 'AnimationEndMessage' handling in it. In Addition, the 'RequestDieMessage' handling was updated as well.
This commit is contained in:
		@@ -1,6 +1,5 @@
 | 
			
		||||
package pp.mdga.server.automaton.game;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.game.Player;
 | 
			
		||||
import pp.mdga.message.client.AnimationEndMessage;
 | 
			
		||||
import pp.mdga.message.client.RequestDieMessage;
 | 
			
		||||
import pp.mdga.message.server.ActivePlayerMessage;
 | 
			
		||||
@@ -15,8 +14,6 @@
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.function.Function;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
public class DetermineStartPlayerState extends GameAutomatonState {
 | 
			
		||||
    /**
 | 
			
		||||
@@ -29,6 +26,7 @@ public class DetermineStartPlayerState extends GameAutomatonState {
 | 
			
		||||
     */
 | 
			
		||||
    private Map<Integer, Integer> diceResults = new HashMap<>();
 | 
			
		||||
    private Map<Integer, Integer> rankedResults = new HashMap<>();
 | 
			
		||||
    private final List<Integer> playersHaveToRoll = new ArrayList<>();
 | 
			
		||||
    private Map<Integer, Boolean> messageReceived = new HashMap<>();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -67,32 +65,20 @@ public void received(RequestDieMessage msg, int from) {
 | 
			
		||||
        this.diceResults.put(from, roll);
 | 
			
		||||
        if (this.diceResults.size() == this.logic.getGame().getPlayers().size()) {
 | 
			
		||||
            int maximumRoll = 0;
 | 
			
		||||
            List<Integer> playersHaveToRoll = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
            for (Map.Entry<Integer, Integer> entry : this.diceResults.entrySet()) {
 | 
			
		||||
                if (maximumRoll == entry.getKey()) {
 | 
			
		||||
                    playersHaveToRoll.add(entry.getKey());
 | 
			
		||||
                    this.playersHaveToRoll.add(entry.getKey());
 | 
			
		||||
                }
 | 
			
		||||
                else if (maximumRoll < entry.getKey()) {
 | 
			
		||||
                    maximumRoll = entry.getValue();
 | 
			
		||||
                    playersHaveToRoll.clear();
 | 
			
		||||
                    playersHaveToRoll.add(entry.getKey());
 | 
			
		||||
                    this.playersHaveToRoll.clear();
 | 
			
		||||
                    this.playersHaveToRoll.add(entry.getKey());
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    this.logic.getServerSender().send(entry.getKey(), new EndOfTurnMessage());
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (playersHaveToRoll.size() > 1) {
 | 
			
		||||
                for (Integer id : playersHaveToRoll) {
 | 
			
		||||
                    this.logic.getServerSender().send(id, new DiceNowMessage());
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            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());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -105,12 +91,18 @@ else if (maximumRoll < entry.getKey()) {
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(AnimationEndMessage msg, int from) {
 | 
			
		||||
        this.messageReceived.put(from, true);
 | 
			
		||||
        if (this.messageReceived.size() == this.logic.getGame().getPlayers().size()) {
 | 
			
		||||
            this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new DiceNowMessage());
 | 
			
		||||
            this.gameAutomaton.setCurrentState(this.gameAutomaton.getTurnState());
 | 
			
		||||
            this.gameAutomaton.getTurnState().setCurrentState(this.gameAutomaton.getTurnState().getPowerCardState());
 | 
			
		||||
        } else {
 | 
			
		||||
            this.messageReceived.put(from, true);
 | 
			
		||||
            if (this.playersHaveToRoll.size() > 1) {
 | 
			
		||||
                for (Integer id : this.playersHaveToRoll) {
 | 
			
		||||
                    this.logic.getServerSender().send(id, new DiceNowMessage());
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                this.logic.getServerSender().broadcast(new RankingResponseMessage(this.diceResults));
 | 
			
		||||
                this.logic.getServerSender().broadcast(new ActivePlayerMessage(this.logic.getGame().getPlayerById(this.playersHaveToRoll.get(0)).getColor()));
 | 
			
		||||
                this.gameAutomaton.setCurrentState(this.gameAutomaton.getTurnState());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user