/** * behandelt einen Beitritt des Clients zu ein Spiel. Dabei werden die übergebenen Daten zu * einem vorhanden Spiel zugewiesen und bei einem erfolglosen Beitritt eine dementsprechende * Meldung geschickt. Ansonsten wir eine Beitrittsbestätigung geschickt. * * @param zeile Daten des Clients * @throws IOException Wenn beim Senden ein Fehler auftritt */ private void behandleBeitritt(String zeile) throws IOException { System.out.println("behandleBeitritt"); int id = Integer.parseInt(zeile.substring(zeile.indexOf(";") + 1)); MultiplayerSpiel spiel = getSpielById(id); String grund = null; if (spiel == null) grund = "Teilnahme am Spiel fehlgeschlagen"; else if (spiel.hasSpieler(spieler.getId())) grund = "Spieler mit Ihrer ID ist bereits im Spiel vorhanden"; else if (spiel.hasAutofarbe(spieler.getAuto().getFarbe())) grund = "Spieler mit Ihrem Auto ist bereits im Spiel vorhanden"; else if (spiel.hasSpielername(spieler.getName())) grund = "Spieler mit Ihrem Name ist bereits im Spiel vorhanden"; else { spiel.addSpieler(spieler); out.writeObject(BEITRITTS_BESTAETIGUNG + ";" + id); out.flush(); sendeVerfuegbareSpieleAnAlle(); if (spiel.getGesamtSpieler() == spiel.getBegetetreteneSpieler()) { for (MultiplayerSpieler spieler : spiel.getSpieler()) for (ArduinoRacerConnectionThread thread : threads) if (spieler.getId() == thread.spieler.getId()) { thread.out.writeObject(SPIEL_OK); System.out.println("SPIEL_PK"); thread.out.flush(); } System.out.println(spiel.getSpielersteller().getId() + threads.toString()); for (ArduinoRacerConnectionThread thread : threads) if (spiel.getSpielersteller().getId() == thread.spieler.getId()) { thread.out.writeObject(SPIEL_OK); System.out.println("SPIEL_OK TO SERVER"); } } } if (grund != null) { out.writeObject(BEITRITTS_ABSAGE + ";" + id + ";" + grund); out.flush(); } }