#pragma once

#include "../../../../Strukturen/Strukturen.h"
#include <Fenster.h>
#include <Thread.h>
#include <Animation.h>
#include <Liste.h>
#include <Knopf.h>

using namespace Framework;

class KETeams : private Thread
{
private:
    Fenster *fenster;
    Animation2D *laden;
    Schrift *schrift;
    AuswahlListe *teams;
    TextFeld *tName;
    TextFeld *tFarbe;
    ZeichnungHintergrund *tFarbeV;
    Knopf *tNeu;
    Knopf *tLöschen;
    AuswahlListe *spieler;
    TextFeld *sFarbe;
    ZeichnungHintergrund *sFarbeV;
    Knopf *sNeu;
    Knopf *sLöschen;
    Knopf *abbrechen;
    Knopf *speichern;
    SpielerTeamStruktur *sts;
    int aktion;
    bool animation;
    double tickVal;
    bool sichtbar;
    bool rechts;
    int xStart;
    int breite;
    int karte;
    unsigned char alpha;
    int ref;

    // privat
    void updateGUI();

public:
    // Konstruktor
    KETeams( int karte, Schrift *zSchrift );
    // Destruktor
    ~KETeams();
    // nicht constant
    void nachME( void *obj, MausEreignis &me );
    void nachTE( void *obj, TastaturEreignis &te );
    void setSichtbar( bool s, bool vr );
    void thread() override;
    void doMausEreignis( MausEreignis &me );
    void doTastaturEreignis( TastaturEreignis &te );
    bool tick( double z );
    void render( Bild &zRObj );
    // constant
    bool istSichtbar() const;
    // Reference Counting
    KETeams *getThis();
    KETeams *release();
};