#ifndef MiniGames_H
#define MiniGames_H

#include <Fenster.h>
#include <Animation.h>
#include "MiniGame.h"
#include <Thread.h>
#include <Knopf.h>
#include <MiniGameV.h>

using namespace Framework;

class MiniGames; // aus dieser Datei

class MGSuchen : private Thread
{
private:
	MiniGames *mGames;
public:
	// Konstruktor
	MGSuchen( MiniGames *mGames );
	// Destruktor
	~MGSuchen();
	// nicht constant
	void thread() override;
};

class MGLaden : private Thread
{
private:
	Text *name;
	MiniGameV *game;
	int ref;

public:
	// Konstruktor
	MGLaden( char *name );
	// Destruktor
	~MGLaden();
	// nicht constant
	void thread();
	// constant
	bool fertig() const;
	MiniGameV *zGame() const;
	// Reference Counting
	MGLaden *getThis();
	MGLaden *release();
};

class MiniGames : public Zeichnung
{
private:
	Punkt begPos;
	Punkt begGröße;
	Punkt pos1;
	Punkt größe1;
	Punkt pos2;
	Punkt größe2;
	Punkt bildschirmGröße;
	LRahmen *rahmen;
	Animation2D *laden;
	TextFeld *suchFilter;
	TextFeld *suchName;
	Knopf *suchen;
	RCArray< MiniGame > *games;
	MGLaden *mgl;
	Schrift *schrift;
	int dg;
	bool aktuell;
	bool gefiltert;
	int animation;
	int alpha;
	bool sichtbar;
	int prozent1;
	int prozent2;
	double tickVal;
	int alpha2;
	int ref;

public:
	// Konstruktor
	MiniGames( Schrift *zSchrift, Fenster *zNachLoginFenster, int x );
	// Destruktor
	~MiniGames();
	// nicht constant
	void setSichtbar( bool sicht );
	void addMiniGame( MiniGame *mg );
	void setAktuell( bool aktuell, int dg = 0 );
	void filter();
	void doMausEreignis( MausEreignis &me ) override;
	void doTastaturEreignis( TastaturEreignis &te ) override;
	bool tick( double z ) override;
	void render( Bild &zRObj ) override;
	// constant
	bool istAnimiert() const;
	bool istSichtbar() const;
	// Reference Counting
	MiniGames *getThis();
	MiniGames *release();
};

#endif