#ifndef VideoNachricht_H
#define VideoNachricht_H

#include <Datei.h>
#include <Text.h>
#include "../VideoDaten/VideoDaten.h"

using namespace Framework;

struct VideoMSG
{
	char typ; // 0 = Tick, 1 = Aktion
};

// typ = 1
struct VideoAktionMSG : public VideoMSG
{
	int spielerNummer;
	char aktion; // 0 = T_Links press, 1 = T_Links release, 2 = T_Rechts press, 3 = T_Rechts release, 4 = Chat Nachricht, 5 = Linien Unterbrechung
};

// action = 4
struct VideoChatMSG : public VideoAktionMSG
{
	int l�n;
	Text msg;
};

// aktion = 5
struct VideoLinieMSG : public VideoAktionMSG
{
	char unterbrechung;
};

class RundeNachricht
{
private:
	int index;
	int maxNachricht;
	Array< VideoMSG* > *nachrichten;
	Datei *vDat;
	RundeVideoDaten *rvd;
	Array< RundeSpielerVideoDaten* > *rsvd;
	bool aktiv;
	int ref;

public:
	// Konstruktor
	RundeNachricht( Datei *d, int spielerAnzahl );
	// Destruktor
	~RundeNachricht();
	// nicht constant
	VideoMSG *GetNextNachricht();
	VideoMSG *GetLastNachricht();
	void setEnde();
	// constant
	RundeVideoDaten *getRVD() const;
	RundeSpielerVideoDaten *getRSVD( int index ) const;
	// Reference Counting
	RundeNachricht *getThis();
	RundeNachricht *release();
};

class SpielNachricht
{
private:
	int runde;
	int maxRunde;
	int teamAnzahl;
	RCArray< RundeNachricht > *runden;
	Datei *vDat;
	SpielVideoDaten *svd;
	Array< SpielerVideoDaten* > *spvd;
	Array< TeamVideoDaten* > *tvd;
	bool error;
	Text *fehler;
	int ref;

public:
	// Konstruktor
	SpielNachricht( int num );
	// Destruktor
	~SpielNachricht();
	// nicht constant
	VideoMSG *GetNextNachricht();
	VideoMSG *GetLastNachricht();
	int setRundenEnde( bool vorw�rts );
	// constant
	SpielVideoDaten *getSVD() const;
	SpielerVideoDaten *getSPVD( int index ) const;
	TeamVideoDaten *getTVD( int index ) const;
	RundeVideoDaten *getRVD() const;
	RundeSpielerVideoDaten *getRSVD( int index ) const;
	bool hatFehler( Text *txt ) const;
	int getTeamAnzahl() const;
	int getRunde() const;
	// Reference Counting
	SpielNachricht *getThis();
	SpielNachricht *release();
};

#endif