#ifndef Klient_H
#define Klient_H

#include "SSKlientV.h"
#include <Array.h>
#include <Vec2.h>
#include "Spieler.h"
#include "SpielerStatistik.h"
#include "TeamStatistik.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 sendeInit( RCArray< Spieler > *zSpieler, int spielZeit );
	void sendeSpielerNummer( int sNum, int spielZeit );
	void sendeStart( int spielZeit );
	void sendeTastaturStatus( int spielerId, TastaturStatus ts, bool aktiv, int spielZeit );
	void sendeSkillNachricht( int sNum, char art, int spielZeit );
	void sendeSchuss( int id, int sNum, Vec2< double > pos, Vec2< double > speed, double intensity, int spielZeit );
	void sendeTreffer( int id, int sNum, int spielZeit );
	void sendeWiederbelebung( int sNum, int spielZeit );
	void sendeTod( int sNum, int killSNum, int spielZeit );
	void sendeSpielEnde( char gewonnen, int spielZeit );
	void sendeChatNachricht( char *txt, int spielZeit );
	void sendeStatistikChatNachricht( int vonAccount, char *txt );
	void sendeStatistikSpielerOffline( int account );
	void sendeSpielerStatistik( SpielerStatistik *zS );
	void sendeTeamStatistik( TeamStatistik *zS );
	void sendeStatistikLadenFertig();
	// constant
	bool istOnline() const;
	// reference Counting
	Klient *getThis();
	Klient *release();
};

#endif