SuperSpaceInvaderTurboApoca.../lib_headers/mingl/transition/transition_engine.h
2021-12-13 09:08:31 +01:00

77 lines
2.4 KiB
C++

/**
*
* @file transition_engine.h
* @author Alexandre Sollier
* @date Janvier 2020
* @version 1.0
* @brief Gestionnaire de transition de minGL
*
**/
#ifndef TRANSITION_ENGINE_H
#define TRANSITION_ENGINE_H
#include <chrono>
#include <memory>
#include <list>
#include "transition.h"
namespace nsTransition
{
/**
* @class TransitionEngine
* @brief Une classe implémentant un moteur de transition supportant plusieurs transitions a la fois
*/
class TransitionEngine
{
public:
/**
* @brief Met a jour toutes les transitions dans la liste
* @param[in] delta : Temps que la dernière image a mis pour faire son rendu
* @fn void update(const std::chrono::microseconds &delta);
*
* Cette fonction rajoute la valeur de delta aux temps écoulés des différentes transitions,
* et supprime les transitions terminées de la liste.
*/
void update(const std::chrono::microseconds& delta);
/**
* @brief Démarre un contrat
* @param[in] contract : Contrat de transition a démarrer
* @fn void startContract(const TransitionContract &contract);
*/
void startContract(const TransitionContract& contract);
/**
* @brief Termine toutes les transitions de la liste
* @param[in] finishMode : finishMode : Mode utilisé pour finir cette Transition (Valeurs d'arrivé par défaut)
* @fn void finishEveryTransition();
*/
void finishEveryTransition(const Transition::TransitionFinishModes& finishMode = Transition::FINISH_DESTINATION);
/**
* @brief Termine toutes les transitions d'une certaine cible de la liste
* @param[in] transitionable : La cible où arrêter les transitions
* @param[in] finishMode : finishMode : Mode utilisé pour finir cette Transition (Valeurs d'arrivé par défaut)
* @fn void finishEveryTransitionOfTarget(const ITransitionable &transitionable);
*/
void finishEveryTransitionOfTarget(const ITransitionable& transitionable, const Transition::TransitionFinishModes& finishMode = Transition::FINISH_DESTINATION);
private:
/**
* @brief TransitionVector_t : Définition de type représentant une liste de transition
*/
typedef std::list<Transition> TransitionVector_t;
/**
* @brief m_transitionList : Liste des transitions que ce moteur gère
*/
TransitionVector_t m_transitionList;
}; // class TransitionEngine
} // namespace nsTransition
#endif // TRANSITION_ENGINE_H