46 lines
1.5 KiB
Java
46 lines
1.5 KiB
Java
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> 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 RankingResponse());
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|