diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java index 1f1bbacb..32b400b6 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java @@ -7,6 +7,7 @@ import pp.mdga.message.server.*; import pp.mdga.server.ServerGameLogic; +import java.util.ArrayList; import java.util.Map; /** @@ -115,6 +116,28 @@ public void received(DeselectTSKMessage msg, int from) { */ @Override public void received(LobbyReadyMessage msg, int from) { + //assign a free color + if(this.logic.getGame().getPlayerById(from).getColor() == Color.NONE) { + ArrayList colors = new ArrayList<>(); + colors.add(Color.ARMY); + colors.add(Color.AIRFORCE); + colors.add(Color.NAVY); + colors.add(Color.CYBER); + + for (Map.Entry entry : this.logic.getGame().getPlayers().entrySet()) { + if(colors.contains(entry.getValue().getColor())) { + colors.remove(entry.getValue().getColor()); + } + } + + if(colors.size() < 1) { + throw new RuntimeException("can not assign a color"); + } + + this.logic.getGame().getPlayerById(from).setColor(colors.get(0)); + this.logic.getServerSender().broadcast(new UpdateTSKMessage(from, colors.get(0), true)); + } + this.logic.getGame().getPlayerById(from).setReady(true); this.logic.getServerSender().broadcast(new UpdateReadyMessage(from, true)); for (Map.Entry entry : this.logic.getGame().getPlayers().entrySet()) {