#ifndef NachLogin_H
#define NachLogin_H

#include "Titel/TitelLeiste.h"
#include "Chat/FreundesListe.h"
#include "Chat/ChatLeiste.h"
#include "Chat/NachrichtenListe.h"
#include "Spiele/Spiele.h"
#include "Shop/Shop.h"
#include "Account/AccountAnsehen.h"
#include "ImSpiel/ImSpiel.h"
#include <AufzeichnungV.h>
#include "Neuigkeiten/Neuigkeiten.h"
#include "Einstellungen/Einstellungen.h"
#include "MiniGames/MiniGames.h"
#include "Editor/Editor.h"

using namespace Framework;

enum NachLoginAnzeige
{
	NLALogin,
	NLANormal,
	NLAImSpiel,
	NLASpielVideo,
    NLAEditor
};

class NachLogin : public Zeichnung
{
private:
	int	ref;
	Fenster *fenster;
	Fenster *leistenFenster;
	Schrift *schrift;
	Bildschirm *bildschirm;
	TitelLeiste *titel;
	FreundesListe *freunde;
	ChatLeiste *chatLeiste;
	NachrichtenListe *nachrichtenListe;
	Spiele *spielenFenster;
	Shop *shopFenster;
	AccountAnsehen *accountAnsehenFenster;
	MiniGames *mgFenster;
	Neuigkeiten *newsFenster;
	Editor *editorFenster;
	ImSpiel *imSpiel;
	AufzeichnungV *spielAufzeichnung;
	Einstellungen *op;
	NachLoginAnzeige status;
    EditorV *editor;

public:
	// Konstruktor
	NachLogin( Schrift *zSchrift, Bildschirm *zBildschirm );
	// Destruktor
	~NachLogin();
	// nicht constant
	void login(); // Initialisiert die Oberfläche
	void logout(); // Setzt die Oberfläche zurück
	void setSpielAufzeichnung( AufzeichnungV *video ); // Setzt die Spiel Aufzeichnung
	void setEditor( EditorV *editor ); // Setzt den Editor
	void setAnzeige( NachLoginAnzeige s ); // Setzt den Status des Programms
	void doMausEreignis( MausEreignis &me ) override;
	void doTastaturEreignis( TastaturEreignis &te ) override;
	bool tick( double tickVal ) override;
	void render( Bild &zRObj ) override;
	// constant
	TitelLeiste *zTitelLeiste() const;// gibt die Titelleiste zurück
	FreundesListe *zFreundesListe() const; // gibt die FreundesListe zurück
	ChatLeiste *zChatLeiste() const; // gibt die ChatLeiste zurück
	NachrichtenListe *zNachrichtenListe() const; // gibt die NachrichtenListe zurück
	Spiele *zSpielenFenster() const; // gibt das Spiele Fenster zurück
	Shop *zShopFenster() const; // gibt das Shop Fenster zurück
	AccountAnsehen *zAccountAnsehenFenster() const; // gibt das Account Ansehen Fenster zurück
	MiniGames *zMGFenster() const; // gibt das MiniGames Fenster zurück
	Neuigkeiten *zNewsFenster() const; // gibt das News Fenster zurück
	Editor *zEditorFenster() const; // Gibt das Editor Fenster zurück
	ImSpiel *zImSpiel() const; // Gibt das Im Spiel Zeichnung zurück
	Einstellungen *zEinstellungen() const; // Gibt das Einstellungen Zeichnung zurück
	// Reference Counting
	NachLogin *getThis();
	NachLogin *release();
};

#endif;