#pragma once

#include "Array.h"

namespace Framework
{
    class Bild;
    class Animation2DData;

    class Textur2D : public virtual ReferenceCounter
    {
    private:
        struct Animation
        {
            Animation2DData *data;
            int jetzt;
            double ausgleich;
        };
        bool circularAnimation;
        int animationIndex;
        Bild *txt;
        Array< Animation * > *animData;

    public:
        //! Konstructor
        DLLEXPORT Textur2D();
        //! Destructor
        DLLEXPORT ~Textur2D();
        //! Legt fest, ob die animation sich automatisch wiederhohlen soll
        //! \param ca 1, falls sich die animation automatisch wiederhohlen soll
        DLLEXPORT void setCircularAnimation( bool ca );
        //! setzt einen Zeiger auf die Textur (fals nicht animiert)
        //! \param textur Der Zeiger auf das Bild
        DLLEXPORT void setTexturZ( Bild *textur );
        //! fügt eine Animation hinzu
        //! \param textur Der Zeiger auf die Animationsdaten
        DLLEXPORT void addAnimationZ( Animation2DData *textur );
        //! setzt die aktuelle Annimation
        //! \param index Der Index der Animation
        DLLEXPORT void setAnimation( int index );
        //! aktiviert die nachfolgende animation
        DLLEXPORT void nextAnimation();
        //! setzt die vergangene Zeit seit dem letzten Aufruf
        //! \param t die vergangene Zeit in sekunden
        DLLEXPORT bool tick( double t );
        //! gibt die aktuelle Textur zurück
        DLLEXPORT Bild *zTextur() const;
    };
}