#include "..\..\Global\Variablen.h"
#include "TitelLeiste.h"
#include <DateiSystem.h>
#include "..\..\Global\Initialisierung.h"
#include <Punkt.h>
#include <Datei.h>

// Inhalt der TitelLeisten Klasse aus Titelleiste.h
// Konstruktor
TitelLeiste::TitelLeiste( Fenster *zNachLogin, Schrift *zSchrift )
	: Thread()
{
	Bild *goldB = bilder->get( "system.ltdb/gold.jpg" );
	if( !goldB )
	{
		LTDBDatei *datei = new LTDBDatei();
		datei->setDatei( new Text( "data/bilder/system.ltdb" ) );
		datei->leseDaten( 0 );
		goldB = datei->laden( 0, new Text( "gold.jpg" ) );
		datei->release();
		bilder->add( "system.ltdb/gold.jpg", goldB->getThis() );
	}
	Bild *silberB = bilder->get( "system.ltdb/silber.jpg" );
	if( !silberB )
	{
		LTDBDatei *datei = new LTDBDatei();
		datei->setDatei( new Text( "data/bilder/system.ltdb" ) );
		datei->leseDaten( 0 );
		silberB = datei->laden( 0, new Text( "silber.jpg" ) );
		datei->release();
		bilder->add( "system.ltdb/silber.jpg", silberB->getThis() );
	}
	Bild *kupferB = bilder->get( "system.ltdb/kupfer.jpg" );
	if( !kupferB )
	{
		LTDBDatei *datei = new LTDBDatei();
		datei->setDatei( new Text( "data/bilder/system.ltdb" ) );
		datei->leseDaten( 0 );
		kupferB = datei->laden( 0, new Text( "kupfer.jpg" ) );
		datei->release();
		bilder->add( "system.ltdb/kupfer.jpg", kupferB->getThis() );
	}
	LTDBDatei *bilder = new LTDBDatei();
	bilder->setDatei( new Text( "data/bilder/system.ltdb" ) );
	bilder->leseDaten( 0 );
	schließenBild = bilder->laden( 0, new Text( "schließen.png" ) );
	einstellungenBild = bilder->laden( 0, new Text( "optionen.png" ) );
	bilder->setDatei( new Text( "data/client/bilder/titel.ltdb" ) );
	bilder->leseDaten( 0 );
	logoutBild = bilder->laden( 0, new Text( "logout.png" ) );
	Bild *hintergrund = bilder->laden( 0, new Text( "titelleiste.jpg" ) );
	bilder = bilder->release();
	Punkt bgr = BildschirmGröße();
	version = initTextFeld( 1, 1, 200, 12, zSchrift, TextFeld::Style::Text | TextFeld::Style::Sichtbar, "client version: " );
	Datei *vDat = new Datei();
	vDat->setDatei( new Text( "data/version" ) );
	vDat->öffnen( Datei::Style::lesen );
	char clientVersion[ 4 ] = { 0, 0, 0, 0 };
	vDat->lese( clientVersion, 4 );
	vDat->schließen();
	vDat = vDat->release();
	version->zText()->anhängen( (int)clientVersion[ 3 ] );
	version->zText()->anhängen( "." );
	version->zText()->anhängen( (int)clientVersion[ 2 ] );
	version->zText()->anhängen( "." );
	version->zText()->anhängen( (int)clientVersion[ 1 ] );
	version->zText()->anhängen( "." );
	version->zText()->anhängen( (int)clientVersion[ 0 ] );
	schließen = initKnopf( bgr.x - 23, -1, 22, 22, 0, 0, "" );
	schließen->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::KlickBuffer | Knopf::Style::HAlpha | Knopf::Style::Rahmen );
	schließen->setLinienRahmenFarbe( 0xFFFFFFFF );
	schließen->setLinienRahmenBreite( 1 );
	schließen->setHintergrundBildZ( schließenBild->getThis() );
	initToolTip( schließen, "Kolja-Strohm Games Client beenden.", zSchrift->getThis(), hauptScreen );
	schließen->setMausEreignisParameter( this );
	schließen->setMausEreignis( titelLeisteSchließenME );
	einstellungen = initKnopf( bgr.x - 44, -1, 22, 22, 0, 0, "" );
	einstellungen->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::KlickBuffer | Knopf::Style::HAlpha | Knopf::Style::Rahmen );
	einstellungen->setLinienRahmenFarbe( 0xFFFFFFFF );
	einstellungen->setLinienRahmenBreite( 1 );
	einstellungen->setHintergrundBildZ( einstellungenBild->getThis() );
	einstellungen->setMausEreignisParameter( this );
	einstellungen->setMausEreignis( titelLeisteEinstellungenME );
	initToolTip( einstellungen, "Einstellungen ändern.", zSchrift->getThis(), hauptScreen );
	logout = initKnopf( bgr.x - 65, -1, 22, 22, 0, 0, "" );
	logout->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::KlickBuffer | Knopf::Style::HAlpha | Knopf::Style::Rahmen );
	logout->setLinienRahmenFarbe( 0xFFFFFFFF );
	logout->setLinienRahmenBreite( 1 );
	logout->setHintergrundBildZ( logoutBild->getThis() );
	logout->setMausEreignisParameter( this );
	logout->setMausEreignis( titelLeisteLogoutME );
	initToolTip( logout, "Ausloggen.", zSchrift->getThis(), hauptScreen );
	news = initKnopf( bgr.x - 103, 67, 102, 32, zSchrift, Knopf::Style::Sichtbar, "Information" );
	news->setLinienRahmenFarbe( 0xFFFFFFFF );
	news->setLinienRahmenBreite( 1 );
	news->setMausEreignisParameter( this );
	news->setMausEreignis( titelLeisteNewsME );
	miniGames = initKnopf( bgr.x - 204, 67, 102, 32, zSchrift, Knopf::Style::Sichtbar, "Mini Games" );
	miniGames->setLinienRahmenFarbe( 0xFFFFFFFF );
	miniGames->setLinienRahmenBreite( 1 );
	miniGames->setMausEreignisParameter( this );
	miniGames->setMausEreignis( titelLeisteMiniGamesME );
	accountAnsehen = initKnopf( bgr.x - 305, 67, 102, 32, zSchrift, Knopf::Style::Sichtbar, "Account" );
	accountAnsehen->setLinienRahmenFarbe( 0xFFFFFFFF );
	accountAnsehen->setLinienRahmenBreite( 1 );
	accountAnsehen->setMausEreignisParameter( this );
	accountAnsehen->setMausEreignis( titelLeisteAccountAnsehenME );
	shop = initKnopf( bgr.x - 406, 67, 102, 32, zSchrift, Knopf::Style::Sichtbar, "Shop" );
	shop->setLinienRahmenFarbe( 0xFFFFFFFF );
	shop->setLinienRahmenBreite( 1 );
	shop->setMausEreignisParameter( this );
	shop->setMausEreignis( titelLeisteShopME );
	spielen = initKnopf( bgr.x - 507, 67, 102, 32, zSchrift, Knopf::Style::Sichtbar, "Spielen" );
	spielen->setLinienRahmenFarbe( 0xFFFFFFFF );
	spielen->setLinienRahmenBreite( 1 );
	spielen->setMausEreignisParameter( this );
	spielen->setMausEreignis( titelLeisteSpielenME );
	editor = initKnopf( bgr.x - 507, 35, 102, 32, zSchrift, 0, "Editor" );
	editor->setLinienRahmenFarbe( 0xFFFFFFFF );
	editor->setLinienRahmenBreite( 1 );
	editor->setMausEreignisParameter( this );
	editor->setMausEreignis( titelLeisteEditorME );
	info = initTextFeld( 200, 11, 300, 76, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::Mehrzeilig | TextFeld::Style::Mehrfarbig | TextFeld::Style::Rahmen, "Wilkommen bei Kolja-Strohm Games!\nViel Spaß beim spielen." );
	info->setLinienRahmenFarbe( 0xFFFFFFFF );
	int minus = bgr.x / 2 - 254;
	if( minus < 511 )
		minus = 511;
	minus = bgr.x - 508 - minus;
	news->setPosition( news->getX() - minus, news->getY() );
	miniGames->setPosition( miniGames->getX() - minus, miniGames->getY() );
	accountAnsehen->setPosition( accountAnsehen->getX() - minus, accountAnsehen->getY() );
	shop->setPosition( shop->getX() - minus, shop->getY() );
	spielen->setPosition( spielen->getX() - minus, spielen->getY() );
	editor->setPosition( editor->getX() - minus, editor->getY() );
	fenster = new Fenster();
	fenster->setStyle( Fenster::Style::Sichtbar | Fenster::Style::KörperHintergrund | Fenster::Style::KörperHBild | Fenster::Style::Erlaubt | Fenster::Style::Rahmen );
	fenster->setRFarbe( 0xFFFFFFFF );
	fenster->setGröße( bgr.x, 100 );
	fenster->setKBgBildZ( hintergrund );
	fenster->addMember( schließen );
	fenster->addMember( einstellungen );
	fenster->addMember( logout );
	fenster->addMember( accountAnsehen );
	fenster->addMember( spielen );
	fenster->addMember( editor );
	fenster->addMember( miniGames );
	fenster->addMember( news );
	fenster->addMember( shop );
	fenster->addMember( info );
	fenster->addMember( version );

	kupfer = initTextFeld( fenster->getBreite() - 40, 70, 10, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "0" );
	silber = initTextFeld( kupfer->getX() - 40, 70, 10, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "0" );
	gold = initTextFeld( silber->getX() - 40, 70, 10, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "0" );
	goldBild = new BildO();
	goldBild->setStyle( BildO::Style::Sichtbar );
	goldBild->setBildZ( goldB );
	goldBild->setGröße( 20, 20 );
	goldBild->setPosition( gold->getX() + gold->getBreite(), 70 );
	silberBild = new BildO();
	silberBild->setStyle( BildO::Style::Sichtbar );
	silberBild->setBildZ( silberB );
	silberBild->setGröße( 20, 20 );
	silberBild->setPosition( silber->getX() + silber->getBreite(), 70 );
	kupferBild = new BildO();
	kupferBild->setStyle( BildO::Style::Sichtbar );
	kupferBild->setBildZ( kupferB );
	kupferBild->setGröße( 20, 20 );
	kupferBild->setPosition( kupfer->getX() + kupfer->getBreite(), 70 );

	fenster->addMember( gold );
	fenster->addMember( silber );
	fenster->addMember( kupfer );
	fenster->addMember( goldBild );
	fenster->addMember( silberBild );
	fenster->addMember( kupferBild );
	zNachLogin->addMember( fenster );
	next = new Array< int >();
	nextAnzahl = 0;
	rend = 0;
	ref = 1;
	InitializeCriticalSection( &cs );
	start();
}

// Destruktor
TitelLeiste::~TitelLeiste()
{
	EnterCriticalSection( &cs );
	ende();
	LeaveCriticalSection( &cs );
	DeleteCriticalSection( &cs );
	if( schließenBild )
		schließenBild = schließenBild->release();
	if( einstellungenBild )
		einstellungenBild = einstellungenBild->release();
	if( logoutBild )
		logoutBild = logoutBild->release();
	if( schließen )
		schließen = schließen->release();
	if( einstellungen )
		einstellungen = einstellungen->release();
	if( logout )
		logout = logout->release();
	if( accountAnsehen )
		accountAnsehen = accountAnsehen->release();
	if( spielen )
		spielen = spielen->release();
	if( editor )
		editor = editor->release();
	if( miniGames )
		miniGames = miniGames->release();
	if( news )
		news = news->release();
	if( shop )
		shop = shop->release();
	if( info )
		info = info->release();
	if( version )
		version = version->release();
	if( fenster )
		fenster = fenster->release();
	if( next )
		next = next->release();
	goldBild->release();
	silberBild->release();
	kupferBild->release();
	gold->release();
	silber->release();
	kupfer->release();
}

// nicht constant
void TitelLeiste::setImSpiel( bool imSpiel ) // aktiviert oder deaktiviert Knöpfe
{
	schließen->setStyle( Knopf::Style::Erlaubt, !imSpiel );
	einstellungen->setStyle( Knopf::Style::Erlaubt, !imSpiel );
	logout->setStyle( Knopf::Style::Erlaubt, !imSpiel );
	accountAnsehen->setStyle( Knopf::Style::Erlaubt, !imSpiel );
	spielen->setStyle( Knopf::Style::Erlaubt, !imSpiel );
	editor->setStyle( Knopf::Style::Erlaubt, !imSpiel );
	miniGames->setStyle( Knopf::Style::Erlaubt, !imSpiel );
	news->setStyle( Knopf::Style::Erlaubt, !imSpiel );
	shop->setStyle( Knopf::Style::Erlaubt, !imSpiel );
}

void TitelLeiste::setImVideo( bool imVideo ) // aktiviert oder deaktiviert Knöpfe
{
	einstellungen->setStyle( Knopf::Style::Erlaubt, !imVideo );
	accountAnsehen->setStyle( Knopf::Style::Erlaubt, !imVideo );
	spielen->setStyle( Knopf::Style::Erlaubt, !imVideo );
	editor->setStyle( Knopf::Style::Erlaubt, !imVideo );
	miniGames->setStyle( Knopf::Style::Erlaubt, !imVideo );
	news->setStyle( Knopf::Style::Erlaubt, !imVideo );
	shop->setStyle( Knopf::Style::Erlaubt, !imVideo );
}

bool TitelLeiste::druckSchließen( MausEreignis &me ) // Schließen wurde gedrückt
{
	if( me.id == ME_RLinks )
	{
		nachLogin->zNachrichtenListe()->addNachricht( new Text( "Schließen" ), new Text( "Möchtest du den Client wirklich beenden?" ),
													  new Text( "Ja" ), new Text( "Nein" ), NachrichtType::schließen, 0 );
	}
	return 1;
}

bool TitelLeiste::druckEinstellungen( MausEreignis &me ) // Einstellungen wurde gedrückt
{
	if( me.id == ME_RLinks )
		nachLogin->zEinstellungen()->setSichtbar();
	return 1;
}

bool TitelLeiste::druckLogout( MausEreignis &me ) // Logout wurde gedrückt
{
	if( me.id == ME_RLinks )
	{
		nachLogin->zNachrichtenListe()->addNachricht( new Text( "Logout" ), new Text( "Möchtest du dich wirklich ausloggen?" ),
													  new Text( "Ja" ), new Text( "Nein" ), NachrichtType::logout, 0 );
	}
	return 1;
}

bool TitelLeiste::druckSpielen( MausEreignis &me ) // Spielen wurde gedrückt
{
	if( me.id == ME_RLinks )
	{
		if( nachLogin->zSpielenFenster()->istSichtbar() && !nextAnzahl )
			return 1;
		next->add( 1, nextAnzahl );
		nextAnzahl++;
	}
	return 1;
}

bool TitelLeiste::druckAccountAnsehen( MausEreignis &me ) // AccountAnsehen wurde gedrückt
{
	if( me.id == ME_RLinks )
	{
		if( nachLogin->zAccountAnsehenFenster()->istSichtbar() && !nextAnzahl )
			return 1;
		next->add( 2, nextAnzahl );
		nextAnzahl++;
	}
	return 1;
}

bool TitelLeiste::druckMiniGames( MausEreignis &me ) // MiniGames wurde gedrückt
{
	if( me.id == ME_RLinks )
	{
		if( nachLogin->zMGFenster()->istSichtbar() && !nextAnzahl )
			return 1;
		next->add( 3, nextAnzahl );
		nextAnzahl++;
	}
	return 1;
}

bool TitelLeiste::druckNews( MausEreignis &me ) // News wurde gedrückt
{
	if( me.id == ME_RLinks )
	{
		if( nachLogin->zNewsFenster()->istSichtbar() && !nextAnzahl )
			return 1;
		next->add( 4, nextAnzahl );
		nextAnzahl++;
	}
	return 1;
}

bool TitelLeiste::druckShop( MausEreignis &me ) // Spielen wurde gedrückt
{
	if( me.id == ME_RLinks )
	{
		if( nachLogin->zShopFenster()->istSichtbar() && !nextAnzahl )
			return 1;
		next->add( 5, nextAnzahl );
		nextAnzahl++;
	}
	return 1;
}

bool TitelLeiste::druckEditor( MausEreignis &me ) // Spielen wurde gedrückt
{
	if( me.id == ME_RLinks )
	{
		if( nachLogin->zEditorFenster()->istSichtbar() && !nextAnzahl )
			return 1;
		next->add( 6, nextAnzahl );
		nextAnzahl++;
	}
	return 1;
}

void TitelLeiste::thread()
{
	while( 1 )
	{
		if( infoKlient )
		{
			EnterCriticalSection( &cs );
			Text *infoTxt = new Text( "" );
			int typ = 0;
			bool b = infoKlient->getInformationText( infoTxt, &typ );
			if( b && infoTxt->getLänge() )
				info->setText( infoTxt->getThis() );
			infoTxt = infoTxt->release();
			int k = infoKlient->getKupfer();
			int s = k / 100;
			int g = s / 100;
			s = s % 100;
			k = k % 100;
			Text *gt = new Text();
			gt->anhängen( g );
			Text *st = new Text();
			st->anhängen( s );
			Text *kt = new Text();
			kt->anhängen( k );
			Schrift *schrift = gold->zSchrift();
			schrift->lock();
			schrift->setSchriftGröße( 12 );
			int gtbr = schrift->getTextBreite( gt );
			int stbr = schrift->getTextBreite( st );
			int ktbr = schrift->getTextBreite( kt );
			schrift->unlock();
			kupfer->setPosition( fenster->getBreite() - 30 - ktbr, kupfer->getY() );
			kupfer->setGröße( ktbr, 20 );
			silber->setPosition( kupfer->getX() - 30 - stbr, silber->getY() );
			silber->setGröße( stbr, 20 );
			gold->setPosition( silber->getX() - 30 - gtbr, gold->getY() );
			gold->setGröße( gtbr, 20 );
			goldBild->setPosition( gold->getX() + gold->getBreite(), goldBild->getY() );
			silberBild->setPosition( silber->getX() + silber->getBreite(), silberBild->getY() );
			kupferBild->setPosition( kupfer->getX() + kupfer->getBreite(), kupferBild->getY() );
			gold->setText( gt );
			silber->setText( st );
			kupfer->setText( kt );
			editor->setStyle( Knopf::Style::Sichtbar, infoKlient->hatRecht( 1 ) );
			LeaveCriticalSection( &cs );
		}
		Sleep( 60 * 1000 );
	}
	run = 0;
}

bool TitelLeiste::tick() // tick
{
	if( nextAnzahl )
	{
		rend = 1;
		int n = next->hat( 0 ) ? next->get( 0 ) : 0;
		switch( n )
		{
		case 1: // Spielen
			// Andere Fenster Unsichtbar machen
			if( nachLogin->zShopFenster()->istSichtbar() )
			{
				if( !nachLogin->zShopFenster()->istAnimiert() )
					nachLogin->zShopFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zAccountAnsehenFenster()->istSichtbar() )
			{
				if( !nachLogin->zAccountAnsehenFenster()->istAnimiert() )
					nachLogin->zAccountAnsehenFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zMGFenster()->istSichtbar() )
			{
				if( !nachLogin->zMGFenster()->istAnimiert() )
					nachLogin->zMGFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zNewsFenster()->istSichtbar() )
			{
				if( !nachLogin->zNewsFenster()->istAnimiert() )
					nachLogin->zNewsFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zEditorFenster()->istSichtbar() )
			{
				if( !nachLogin->zEditorFenster()->istAnimiert() )
					nachLogin->zEditorFenster()->setSichtbar( 0 );
				break;
			}
			// Fenster Sichtbar machen
			spielen->setAlphaFeldFarbe( 0x0000FF00 );
			accountAnsehen->setAlphaFeldFarbe( 0x5500FF00 );
			miniGames->setAlphaFeldFarbe( 0x5500FF00 );
			news->setAlphaFeldFarbe( 0x5500FF00 );
			shop->setAlphaFeldFarbe( 0x5500FF00 );
			editor->setAlphaFeldFarbe( 0x5500FF00 );
			nachLogin->zSpielenFenster()->setSichtbar( 1 );
			next->lösche( 0 );
			nextAnzahl--;
			break;
		case 2: // Account ansehen
			// Andere Fenster Unsichtbar machen
			if( nachLogin->zSpielenFenster()->istSichtbar() )
			{
				if( !nachLogin->zSpielenFenster()->istAnimiert() )
					nachLogin->zSpielenFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zShopFenster()->istSichtbar() )
			{
				if( !nachLogin->zShopFenster()->istAnimiert() )
					nachLogin->zShopFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zMGFenster()->istSichtbar() )
			{
				if( !nachLogin->zMGFenster()->istAnimiert() )
					nachLogin->zMGFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zNewsFenster()->istSichtbar() )
			{
				if( !nachLogin->zNewsFenster()->istAnimiert() )
					nachLogin->zNewsFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zEditorFenster()->istSichtbar() )
			{
				if( !nachLogin->zEditorFenster()->istAnimiert() )
					nachLogin->zEditorFenster()->setSichtbar( 0 );
				break;
			}
			// Fenster Sichtbar machen
			spielen->setAlphaFeldFarbe( 0x5500FF00 );
			accountAnsehen->setAlphaFeldFarbe( 0x0000FF00 );
			miniGames->setAlphaFeldFarbe( 0x5500FF00 );
			news->setAlphaFeldFarbe( 0x5500FF00 );
			shop->setAlphaFeldFarbe( 0x5500FF00 );
			editor->setAlphaFeldFarbe( 0x5500FF00 );
			nachLogin->zAccountAnsehenFenster()->setSichtbar( 1 );
			next->lösche( 0 );
			nextAnzahl--;
			break;
		case 3: // MiniGames
			// Andere Fenster Unsichtbar machen
			if( nachLogin->zSpielenFenster()->istSichtbar() )
			{
				if( !nachLogin->zSpielenFenster()->istAnimiert() )
					nachLogin->zSpielenFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zShopFenster()->istSichtbar() )
			{
				if( !nachLogin->zShopFenster()->istAnimiert() )
					nachLogin->zShopFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zAccountAnsehenFenster()->istSichtbar() )
			{
				if( !nachLogin->zAccountAnsehenFenster()->istAnimiert() )
					nachLogin->zAccountAnsehenFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zNewsFenster()->istSichtbar() )
			{
				if( !nachLogin->zNewsFenster()->istAnimiert() )
					nachLogin->zNewsFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zEditorFenster()->istSichtbar() )
			{
				if( !nachLogin->zEditorFenster()->istAnimiert() )
					nachLogin->zEditorFenster()->setSichtbar( 0 );
				break;
			}
			// Fenster Sichtbar machen
			spielen->setAlphaFeldFarbe( 0x5500FF00 );
			accountAnsehen->setAlphaFeldFarbe( 0x5500FF00 );
			miniGames->setAlphaFeldFarbe( 0x0000FF00 );
			news->setAlphaFeldFarbe( 0x5500FF00 );
			shop->setAlphaFeldFarbe( 0x5500FF00 );
			editor->setAlphaFeldFarbe( 0x5500FF00 );
			nachLogin->zMGFenster()->setSichtbar( 1 );
			next->lösche( 0 );
			nextAnzahl--;
			break;
		case 4: // News
			// Andere Fenster Unsichtbar machen
			if( nachLogin->zSpielenFenster()->istSichtbar() )
			{
				if( !nachLogin->zSpielenFenster()->istAnimiert() )
					nachLogin->zSpielenFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zShopFenster()->istSichtbar() )
			{
				if( !nachLogin->zShopFenster()->istAnimiert() )
					nachLogin->zShopFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zAccountAnsehenFenster()->istSichtbar() )
			{
				if( !nachLogin->zAccountAnsehenFenster()->istAnimiert() )
					nachLogin->zAccountAnsehenFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zMGFenster()->istSichtbar() )
			{
				if( !nachLogin->zMGFenster()->istAnimiert() )
					nachLogin->zMGFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zEditorFenster()->istSichtbar() )
			{
				if( !nachLogin->zEditorFenster()->istAnimiert() )
					nachLogin->zEditorFenster()->setSichtbar( 0 );
				break;
			}
			// Fenster Sichtbar machen
			spielen->setAlphaFeldFarbe( 0x5500FF00 );
			accountAnsehen->setAlphaFeldFarbe( 0x5500FF00 );
			miniGames->setAlphaFeldFarbe( 0x5500FF00 );
			news->setAlphaFeldFarbe( 0x0000FF00 );
			shop->setAlphaFeldFarbe( 0x5500FF00 );
			editor->setAlphaFeldFarbe( 0x5500FF00 );
			nachLogin->zNewsFenster()->setSichtbar( 1 );
			next->lösche( 0 );
			nextAnzahl--;
			break;
		case 5: // Shop
			// Andere Fenster Unsichtbar machen
			if( nachLogin->zSpielenFenster()->istSichtbar() )
			{
				if( !nachLogin->zSpielenFenster()->istAnimiert() )
					nachLogin->zSpielenFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zAccountAnsehenFenster()->istSichtbar() )
			{
				if( !nachLogin->zAccountAnsehenFenster()->istAnimiert() )
					nachLogin->zAccountAnsehenFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zMGFenster()->istSichtbar() )
			{
				if( !nachLogin->zMGFenster()->istAnimiert() )
					nachLogin->zMGFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zNewsFenster()->istSichtbar() )
			{
				if( !nachLogin->zNewsFenster()->istAnimiert() )
					nachLogin->zNewsFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zEditorFenster()->istSichtbar() )
			{
				if( !nachLogin->zEditorFenster()->istAnimiert() )
					nachLogin->zEditorFenster()->setSichtbar( 0 );
				break;
			}
			// Fenster Sichtbar machen
			spielen->setAlphaFeldFarbe( 0x5500FF00 );
			accountAnsehen->setAlphaFeldFarbe( 0x5500FF00 );
			miniGames->setAlphaFeldFarbe( 0x5500FF00 );
			news->setAlphaFeldFarbe( 0x5500FF00 );
			shop->setAlphaFeldFarbe( 0x0000FF00 );
			editor->setAlphaFeldFarbe( 0x5500FF00 );
			nachLogin->zShopFenster()->setSichtbar( 1 );
			next->lösche( 0 );
			nextAnzahl--;
			break;
		case 6: // Editor
			// Andere Fenster Unsichtbar machen
			if( nachLogin->zSpielenFenster()->istSichtbar() )
			{
				if( !nachLogin->zSpielenFenster()->istAnimiert() )
					nachLogin->zSpielenFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zAccountAnsehenFenster()->istSichtbar() )
			{
				if( !nachLogin->zAccountAnsehenFenster()->istAnimiert() )
					nachLogin->zAccountAnsehenFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zMGFenster()->istSichtbar() )
			{
				if( !nachLogin->zMGFenster()->istAnimiert() )
					nachLogin->zMGFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zNewsFenster()->istSichtbar() )
			{
				if( !nachLogin->zNewsFenster()->istAnimiert() )
					nachLogin->zNewsFenster()->setSichtbar( 0 );
				break;
			}
			if( nachLogin->zShopFenster()->istSichtbar() )
			{
				if( !nachLogin->zShopFenster()->istAnimiert() )
					nachLogin->zShopFenster()->setSichtbar( 0 );
				break;
			}
			// Fenster Sichtbar machen
			spielen->setAlphaFeldFarbe( 0x5500FF00 );
			accountAnsehen->setAlphaFeldFarbe( 0x5500FF00 );
			miniGames->setAlphaFeldFarbe( 0x5500FF00 );
			news->setAlphaFeldFarbe( 0x5500FF00 );
			shop->setAlphaFeldFarbe( 0x5500FF00 );
			editor->setAlphaFeldFarbe( 0x0000FF00 );
			nachLogin->zEditorFenster()->setSichtbar( 1 );
			next->lösche( 0 );
			nextAnzahl--;
			break;
		}
	}
	bool ret = rend;
	rend = 0;
	return ret;
}

// constant
int TitelLeiste::getSpielenX() const
{
	return spielen->getX();
}

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

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

// Ereignisse
bool titelLeisteSchließenME( void *p, void *obj, MausEreignis me )
{
	return ( (TitelLeiste*)p )->druckSchließen( me );
}

bool titelLeisteEinstellungenME( void *p, void *obj, MausEreignis me )
{
	return ( (TitelLeiste*)p )->druckEinstellungen( me );
}

bool titelLeisteLogoutME( void *p, void *obj, MausEreignis me )
{
	return ( (TitelLeiste*)p )->druckLogout( me );
}

bool titelLeisteAccountAnsehenME( void *p, void *obj, MausEreignis me )
{
	return ( (TitelLeiste*)p )->druckAccountAnsehen( me );
}

bool titelLeisteSpielenME( void *p, void *obj, MausEreignis me )
{
	return ( (TitelLeiste*)p )->druckSpielen( me );
}

bool titelLeisteMiniGamesME( void *p, void *obj, MausEreignis me )
{
	return ( (TitelLeiste*)p )->druckMiniGames( me );
}

bool titelLeisteNewsME( void *p, void *obj, MausEreignis me )
{
	return ( (TitelLeiste*)p )->druckNews( me );
}

bool titelLeisteShopME( void *p, void *obj, MausEreignis me )
{
	return ( (TitelLeiste*)p )->druckShop( me );
}

bool titelLeisteEditorME( void *p, void *obj, MausEreignis me )
{
	return ( (TitelLeiste*)p )->druckEditor( me );
}