Пример #1
0
 /**
  * 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();
   }
 }