package client;

import java.rmi.RemoteException;
import java.util.Vector;

import server.ServerChatKommunikator;
import server.ServerSpielKommunikator;
import spiel.Spiel;

/**
 * Der ClientSpielEinleitungsKommunikator dient dem Server zur Kommunikation mit dem
 * Client während der Spieleinleitungsphase.
 * @version 1.2
 * @author ProgPrak-Team
 */
public interface ClientSpielEinleitungsKommunikator {
    
    /**
     * übergibt dem Client den ChatKommunikator für ein konkretes Spiel (lokaler Chat)
     * @param serverChat der ChatKommunikator an den der Client seine Nachrichten schickt
     * @return der ClientChatKommunikator an den der Server Nachrichten für den Client schickt
     */
    public ClientChatKommunikator setzeSpielChat(ServerChatKommunikator serverChat) throws RemoteException;
    
    /**
     * Übergibt dem Client das gegenwärtige Spiel.
     * @param spiel eine Spielbeschreibung
     */
    public void zeigeSpiel(Spiel spiel) throws RemoteException;
    
    /**
     * Übergibt dem Client den Spielernamen eines Spieler der zum gegenwärtigen
     * Spiel hinzugekommen ist.
     *
     * @param name der Name des neuen Spielers
     */
    public void neuerSpieler(String name) throws RemoteException;
    
    /**
     * Entfernt einen Spielernamen vom Client wenn der entsprechende Spieler das
     * Spiel verlässt. 
     * @param name der Name des Spielers der das Spiel verlässt
     */
    public void entferneSpieler(String name) throws RemoteException;
    
    /**
     * Das Startsignal des Servers, wenn der Spielleiter das Spiel gestartet hat.
     * @param serverSpielKom der ServerSpielKommunikator dem der Client sämtliche Spielaktionen mitteilt 
     * @return der ClientSpielKommunikator, dem der Server alle Geschehnisse des Spiels mitteilt
     */
    public ClientSpielKommunikator start(ServerSpielKommunikator serverSpielKom) throws RemoteException;
    
}
