#include "RundenRundenStatistik.h"
#include <Text.h>

// Inhalt der RundenRundenStatistik Klasse aus RundenRundenStatistik.h
// Konstruktor
RundenRundenStatistik::RundenRundenStatistik()
{
	rundenNummer = 0;
	rundenDauer = 0;
	siegerTeam = 0;
	spielFeldNutzung = 0;
	rundenBild = 0;
	rss = new RCArray< RundenSpielerStatistik >();
	rts = new RCArray< RundenTeamStatistik >();
	ref = 1;
}

// Destruktor
RundenRundenStatistik::~RundenRundenStatistik()
{
	if( rundenBild )
		rundenBild->release();
	rss->release();
	rts->release();
}

// nciht constant
void RundenRundenStatistik::addSpielerStatistik( RundenSpielerStatistik *rss )
{
	this->rss->add( rss );
}

void RundenRundenStatistik::addTeamStatistik( RundenTeamStatistik *rts )
{
	this->rts->add( rts );
}

void RundenRundenStatistik::setBild( Bild *b )
{
	if( rundenBild )
		rundenBild->release();
	rundenBild = b;
}

void RundenRundenStatistik::initValues( InitDatei *dat )
{
	if( dat->wertExistiert( "RundenNummer" ) )
		rundenNummer = *dat->zWert( "RundenNummer" );
	if( dat->wertExistiert( "RundenDauer" ) )
		rundenDauer = *dat->zWert( "RundenDauer" );
	if( dat->wertExistiert( "SiegerTeam" ) )
		siegerTeam = *dat->zWert( "SiegerTeam" );
	if( dat->wertExistiert( "SpielFeldNutzung" ) )
		spielFeldNutzung = *dat->zWert( "SpielFeldNutzung" );
	dat->release();
}

// constant
InitDatei *RundenRundenStatistik::getValues() const
{
	InitDatei *ret = new InitDatei();
	Text w;
	w = rundenNummer;
	if( w.getLength() )
		ret->addWert( "RundenNummer", w.getText() );
	w = rundenDauer;
	if( w.getLength() )
		ret->addWert( "RundenDauer", w.getText() );
	w = siegerTeam;
	if( w.getLength() )
		ret->addWert( "SiegerTeam", w.getText() );
	w = spielFeldNutzung;
	if( w.getLength() )
		ret->addWert( "SpielFeldNutzung", w.getText() );
	return ret;
}

int RundenRundenStatistik::getRundenNummer() const
{
	return rundenNummer;
}

Bild *RundenRundenStatistik::getRundenBild() const
{
	return rundenBild ? rundenBild->getThis() : 0;
}

Bild *RundenRundenStatistik::zRundenBild() const
{
	return rundenBild;
}

int RundenRundenStatistik::getRundenDauer() const
{
	return rundenDauer;
}

int RundenRundenStatistik::getSiegerTeam() const
{
	return siegerTeam;
}

int RundenRundenStatistik::getSpielFeldNutzung() const
{
	return spielFeldNutzung;
}

RundenSpielerStatistik *RundenRundenStatistik::getSpielerStatistik( int index ) const
{
	return rss->get( index );
}

RundenSpielerStatistik *RundenRundenStatistik::zSpielerStatistik( int index ) const
{
	return rss->z( index );
}

RundenTeamStatistik *RundenRundenStatistik::getTeamStatistik( int index ) const
{
	return rts->get( index );
}

RundenTeamStatistik *RundenRundenStatistik::zTeamStatistik( int index ) const
{
	return rts->z( index );
}

int RundenRundenStatistik::getSpielerAnzahl() const
{
	return rss->getEintragAnzahl();
}

int RundenRundenStatistik::getTeamAnzahl() const
{
	return rts->getEintragAnzahl();
}

// Reference Counting
RundenRundenStatistik *RundenRundenStatistik::getThis()
{
	ref++;
	return this;
}

RundenRundenStatistik *RundenRundenStatistik::release()
{
	ref--;
	if( !ref )
		delete this;
	return 0;
}