#ifndef Klient_H
#define Klient_H

#include "SSKlientV.h"
#include <Array.h>
#include "GesamtSpielerStatistik.h"
#include "GesamtTeamStatistik.h"
#include "RundenRundenStatistik.h"

using namespace Framework;

class Spieler;

class Klient
{
private:
	SSKlientV *klient;
	int ref;

public:
	// Konstruktor
	Klient( SSKlientV *klient );
	// Destruktor
	~Klient();
	// nicht constant
	void offline();
	void online( SSKlientV *zKlient );
	void sendeSpielerNummer( int sNum, double spielZeit );
	void sendeInitSpieler( int anzahl, RCArray< Spieler > *zSpieler, double spielZeit );
	void sendeSpielerPosition( Spieler *zSpieler, double spielZeit );
	void sendeKammeraSize( int br, int hi, double spielZeit );
	void sendeStart( double spielZeit );
	void sendeSpielerTod( Spieler *zSpieler, double spielZeit );
	void sendeSpielEnde( char gewonnen, double spielZeit );
	void sendeSpielerGeschwindigkeit( Spieler *zSpieler, double spielZeit );
	void sendeSpielerWendigkeit( Spieler *zSpieler, double spielZeit );
	void sendeSpielerKurve( int sNum, char kurve, double spielZeit );
	void sendeKartenSize( int br, int hi, double spielZeit );
	void sendeChatNachricht( char *txt, double spielZeit );
	void sendeLinienUnterbrechung( int sNum, bool unterbrochen, double spielZeit );
	void sendeTeamMaxPunkte( int team, int mP, double spielZeit );
	void sendeTeamPunkte( int team, int p, double spielZeit );
	void sendeSpielerPunkte( int sNum, int mP, double spielZeit );
	void sendeTeamTod( int team, double spielZeit );
	void sendeTeamName( int team, char *name );
	void sendeRundenEnde( int winTeam, double spielZeit );
	void sendeZeitVerbleibend( int sekunden, double spielZeit );
	void sendeStatistikChatNachricht( int vonAccount, char *txt );
	void sendeStatistikSpielerOffline( int account );
	void sendeGesamtSpielerStatistik( GesamtSpielerStatistik *zS );
	void sendeGesamtTeamStatistik( GesamtTeamStatistik *zS );
	void sendeRundeStatistik( RundenRundenStatistik *zS );
	void sendeRundeSpielerStatistik( RundenSpielerStatistik *zS, int runde );
	void sendeRundeTeamStatistik( RundenTeamStatistik *zS, int runde );
	void sendeStatistikLadenFertig();
	// constant
	bool istOnline() const;
	// reference Counting
	Klient *getThie();
	Klient *release();
};

#endif