#pragma once
#include <KSGScript.h>
#include <AuswahlBox.h>
#include <Thread.h>
#include <Knopf.h>
#include <Rahmen.h>

using namespace Framework;
using namespace KSGScript;

class KEBVorschauKarteScript : public Thread
{
private:
    KSGScriptObj *fenster;
    Punkt pos;
    LRahmen *ram;
    HINSTANCE ksgs;
    Text pfad;
    bool erlaubt;
    bool sichtbar;
    unsigned char alpha;
    bool aktion;
    int ak;
    int ref;

public:
    // Konstruktor
    KEBVorschauKarteScript( Schrift *zSchrift, TextFeld *zLog );
    // Destruktor
    ~KEBVorschauKarteScript();
    // nicht constant
    void thread() override;
    void setErlaubt( bool e );
    void ladeKarteSeite( char *pfad );
    void ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVariable **retVal );
    void doMausEreignis( MausEreignis &me );
    void doTastaturEreignis( TastaturEreignis &te );
    bool tick( double zeit );
    void render( Bild &zRObj );
    // Reference Counting
    KEBVorschauKarteScript *getThis();
    KEBVorschauKarteScript *release();
};

class KEBVorschau : public Zeichnung
{
private:
    Schrift *schrift;
    KEBVorschauKarteScript *script;
    Knopf *neu;
    Knopf *beenden;
    TextFeld *log;
    KontrollKnopf *erlaubt;
    unsigned char alpha;
    bool sichtbar;
    double tickVal;
    int aktion;
    bool rend;
    int ref;

public:
    // Konstruktor
    KEBVorschau( Schrift *zSchrift );
    // Destruktor
    ~KEBVorschau();
    // nicht constant
    int getAktion();
    bool ladeKarte();
    void setSichtbar( bool sicht );
    void doMausEreignis( MausEreignis &me );
    void doTastaturEreignis( TastaturEreignis &te );
    bool tick( double zeit );
    void render( Bild &zRObj );
    // constant
    bool istSichtbar() const;
    // Reference Counting
    KEBVorschau *getThis();
    KEBVorschau *release();
};