#ifndef ANIMATION_H_INCLUDED
#define ANIMATION_H_INCLUDED

#include <SDL/SDL.h>
#include <iostream>
#include <vector>

///Développeur: Jovian Hersemeule
///Dernière mise à jour le: 13/08/2013
///Objet: remplissage du cpp, débuggage primaire: nombreux points à ameliorer

/*
==L'objet Animation (classe abstraite)==
    +Arguments:
        VOID
    +Descriptif:
        Permet de créer un effet d'animation à partir d'une succession d'image. Classe abstraite,
        cette classe ne peut produire d'objet mais sert à l'heritage à tous les types d'animation.
[Fonctions]
-play:
    +Arguments:
        VOID
    +Renvoi:
        VOID
    +Descriptif:
        Permet de lancer la succession des images, ou de la relancer. Rafraichi l'attribut m_tempsDepart.

-pause:
    +Arguments:
        VOID
    +Renvoi:
        VOID
    +Descriptif:
        Permet de stopper l'animation sur l'image active.

-stop:
    +Arguments:
        VOID
    +Renvoi:
        VOID
    +Descriptif:
        Permet d'arrêter l'animation et de la réenclencher au début.

-coller:
    +Arguments:
        -Pointeur sur une SDL_Surface.
        -Coordonnée d'abscisse.
        -Coordonnée en ordonnée.
        -Bool de calibrage: vrai pour centrer, faux pour rectanguler
    +Renvoi:
        VOID
    +Descriptif:
        Permet de coller sur une surface l'image active. Contient les calculs de sélection d'image.

*/

class Animation
{
    public:
    Animation(Uint32 tempsFrequence);
    virtual ~Animation();
    void play();
    void pause();
    void stop();
    virtual void coller(SDL_Surface* support, int x, int y, bool centrer=0)=0;//Virtuelle pure

    protected:
    std::vector<SDL_Surface*> m_bande;
    const Uint32 m_tempsFrequence;//Tps en ms entre chq img
    Uint32 m_tempsDepart;//"heure" en ms du départ de l'anim
    Uint16 m_imageActive;

};

#endif // ANIMATION_H_INCLUDED
