#pragma once #include "spritecontainer.h" #include "classicmode/classicactions.h" #include "graphics/classicspritefactory.h" class ClassicSprite; struct ArrowElement; class ClassicGraphicsManager : public std::enable_shared_from_this { public: virtual ~ClassicGraphicsManager() = default; explicit ClassicGraphicsManager(const std::shared_ptr& factory, const microsec& visibility_offset) : _sprite_container({Type::UP, Type::DOWN, Type::LEFT, Type::RIGHT}, factory), _visibility_offset(visibility_offset) {} virtual void display(const std::vector& elements) const = 0; virtual void setGraphics(std::vector& elements, TimeRange&& range) = 0; virtual void display() const = 0; virtual void update(const microsec& offset) = 0; protected: SpriteContainer _sprite_container; microsec _visibility_offset; };