#pragma once

#include <Fenster.h>
#include <Knopf.h>
#include "RightTools\RightTools.h"
#include "../Karte/EditorKarte.h"

using namespace Framework;

namespace Editor
{
    class Interface : public ZeichnungHintergrund
    {
    private:
        Knopf * beenden;
        RightTools *right;
        KarteDaten *daten;
        Schrift *schrift;
        bool verlassen;
        int ref;

    public:
        // Konstruktor
        //  zS: Ein Zeiger auf die zu verwendende Schrift
        Interface( Schrift *zS, Punkt maxSize );
        // Destruktor
        ~Interface();
        void setDaten( KarteDaten *daten );
        // Verarbeitet eine Mausnachricht
        //  me: Die Nachricht die verarbeitet werden soll
        void doMausEreignis( MausEreignis &me ) override;
        // Verarbeitet eine Tastaturnachricht
        //  te: Die Nachricht die verarbeitet werden soll
        void doTastaturEreignis( TastaturEreignis &te ) override;
        bool tick( double time ) override;
        // Zeichnet das Interface nach uRObj
        //  zRObj: Das Bild in das gezeichnet werden soll
        void render( Bild &zRObj ) override;
        // Setzt das Interface in den Initialisierungszustand zur�ck
        void reset();
        // Gibt zur�ck, ob der Benutzer den Editor verlassen m�chte
        bool hatVerlassen() const;
        // erh�ht den Reference Counter
        //  return: this
        Interface *getThis();
        // verringert den Reference Counter und l�scht das Objekt wenn es nicht mehr gebraucht wird.
        //  return: 0
        Interface *release();
    };
}