package pp.mdga.server; import pp.mdga.game.Player; import pp.mdga.message.client.RequestDice; import pp.mdga.message.server.*; import java.util.ArrayList; import java.util.List; import java.util.Random; public class DetermineStartPlayer extends ServerState { private final List player = new ArrayList<>(); public DetermineStartPlayer(ServerState parent, ServerGameLogic logic) { super(parent, logic); logic.getGame().addObserver(this); } @Override public void receivedRequestDice(RequestDice msg, int from) { final Random random = new Random(); final int dice = random.nextInt(6) + 1; broadcastUpdate(new Dice(dice, new ArrayList<>())); } @Override public void update() { if (Boolean.TRUE.equals(logic.getGame().allRanked())) { broadcastUpdate(new RankingResponce()); if (logic.getGame().getOrder().isEmpty()) { // todo: save the players with the same value? broadcastUpdate(new RankingRollAgain()); broadcastUpdate(new EndOfTurn()); } else { // todo: set start player Player startPlayer = new Player(1); logic.getGame().setStartPlayer(startPlayer); logic.send(startPlayer, new DiceNow()); broadcastUpdate(new EndOfTurn()); parent.gotoState(new Animation(parent, logic)); logic.getGame().removeObserver(this); } } } }