added more logic for the server state diagram

This commit is contained in:
Daniel Grigencha
2024-11-22 09:37:49 +01:00
committed by Felix
parent f3894a5058
commit 6dfb2980fa
20 changed files with 404 additions and 214 deletions

View File

@@ -2,41 +2,43 @@
import pp.mdga.game.Player;
import pp.mdga.message.client.RequestDice;
import pp.mdga.message.server.DiceNow;
import pp.mdga.message.server.RankingRollAgain;
import pp.mdga.message.server.*;
import java.util.ArrayList;
import java.util.List;
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) {
// todo: implement
}
public void receivedRequestDice(RequestDice msg, int from) {
logic.send();
// todo: msg?, sent to everyone?
@Override
public void sentRankingResponse() {
// todo: implemtent
broadcastUpdate(new Dice());
}
@Override
public void update() {
if (logic.getGame().allRanked()) {
if (logic.getGame().getStartPlayer() == null) {
// todo: send it to everyone? or player with the same dice value? save the players with the same value?
logic.send(new Player(1), new RankingRollAgain());
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);
}
}
}
}