#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 *schließen;
	Knopf *einstellungen;
	Knopf *logout;
	Knopf *accountAnsehen;
	Knopf *spielen;
	Knopf *miniGames;
	Knopf *news;
	Knopf *shop;
	Knopf *editor;
	Bild *schließenBild;
	Bild *einstellungenBild;
	Bild *logoutBild;
	TextFeld *info;
	TextFeld *version;
	Fenster *fenster;
	Array< int > *next;
	CRITICAL_SECTION cs;
	BildO *goldBild;
	BildO *silberBild;
	BildO *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