#ifndef TitelLeiste_H
#define TitelLeiste_H

#include <Klient.h>
#include <Knopf.h>
#include <Fenster.h>
#include <Bild.h>
#include <Thread.h>

using namespace Framework;

class TitelLeiste : private Thread
{
private:
	Knopf *close;
	Knopf *einstellungen;
	Knopf *logout;
	Knopf *accountAnsehen;
	Knopf *spielen;
	Knopf *miniGames;
	Knopf *news;
	Knopf *shop;
	Knopf *editor;
	Bild *closeBild;
	Bild *einstellungenBild;
	Bild *logoutBild;
	TextFeld *info;
	TextFeld *version;
	Fenster *fenster;
	Array< int > *next;
	Critical cs;
	BildZ *goldBild;
	BildZ *silberBild;
	BildZ *kupferBild;
	TextFeld *gold;
	TextFeld *silber;
	TextFeld *kupfer;
	int nextAnzahl;
	bool rend;
	int ref;

public:
	// Konstruktor
	TitelLeiste( Fenster *zNachLogin, Schrift *zSchrift );
	// Destruktor
	~TitelLeiste();
	// nicht constant
	void setImSpiel( bool imSpiel ); // aktiviert oder deaktiviert Kn�pfe
	void setImVideo( bool imVideo ); // aktiviert oder deaktiviert Kn�pfe
	bool druckSchlie�en( MausEreignis &me ); // Schlie�en wurde gedr�ckt
	bool druckEinstellungen( MausEreignis &me ); // Einstellungen wurde gedr�ckt
	bool druckLogout( MausEreignis &me ); // Logout wurde gedr�ckt
	bool druckAccountAnsehen( MausEreignis &me ); // AccountAnsehen wurde gedr�ckt
	bool druckSpielen( MausEreignis &me ); // Spielen wurde gedr�ckt
	bool druckMiniGames( MausEreignis &me ); // MiniGames wurde gedr�ckt
	bool druckNews( MausEreignis &me ); // News wurde gedr�ckt
	bool druckShop( MausEreignis &me ); // Shop wurde gedr�ckt
	bool druckEditor( MausEreignis &me ); // Shop wurde gedr�ckt
	void thread(); // aktualisierungs Thread
	bool tick(); // tick
	// constant
	int getSpielenX() const;
	// Reference Counting
	TitelLeiste *getThis();
	TitelLeiste *release();
};

// Ereignisse
bool titelLeisteSchlie�enME( void *p, void *obj, MausEreignis me );
bool titelLeisteEinstellungenME( void *p, void *obj, MausEreignis me );
bool titelLeisteLogoutME( void *p, void *obj, MausEreignis me );
bool titelLeisteAccountAnsehenME( void *p, void *obj, MausEreignis me );
bool titelLeisteSpielenME( void *p, void *obj, MausEreignis me );
bool titelLeisteMiniGamesME( void *p, void *obj, MausEreignis me );
bool titelLeisteNewsME( void *p, void *obj, MausEreignis me );
bool titelLeisteShopME( void *p, void *obj, MausEreignis me );
bool titelLeisteEditorME( void *p, void *obj, MausEreignis me );

#endif