Fix error regarding color in lobbyState

This commit is contained in:
Felix Koppe
2024-12-02 13:06:59 +01:00
parent 4561a962d4
commit 92d2e74748

View File

@@ -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<Color> colors = new ArrayList<>();
colors.add(Color.ARMY);
colors.add(Color.AIRFORCE);
colors.add(Color.NAVY);
colors.add(Color.CYBER);
for (Map.Entry<Integer, Player> 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<Integer, Player> entry : this.logic.getGame().getPlayers().entrySet()) {