diff --git a/object.hpp b/object.hpp index 02f721d..34c6199 100644 --- a/object.hpp +++ b/object.hpp @@ -3,6 +3,7 @@ #include #include +#include "state.hpp" class Object { protected: @@ -15,6 +16,17 @@ public: */ virtual void draw(sf::RenderWindow& window) = 0; + /** + * Met à jour l'objet juste avant le dessin d'une frame + * Reçoit l'état du moteur et le temps écoulé depuis la dernière frame + */ + virtual void update(State state) = 0; + + /** + * Détermine la couche d'affichage de l'objet + */ + virtual unsigned int getLayer() = 0; + /** * Récupère la position de l'objet */ @@ -26,4 +38,15 @@ public: int getCharge(); }; +/** + * Classe de comparaison des couches deux objets + * Renvoie "true" si le premier objet est sur une couche + * qui doit être dessinée avant celle du second + */ +struct CompareObjectLayer { + bool operator()(Object const &obj1, Object const &obj2) { + return obj1.getLayer() < obj2.getLayer(); + } +}; + #endif