#pragma once

#include "spritecontainer.h"
#include "classicmode/classicactions.h"
#include "classicspritefactory.h"

#include <SFML/Graphics/RenderTarget.hpp>

class ClassicSprite;
class ClassicNote;

class ClassicGraphicsManager
{
public:
    explicit ClassicGraphicsManager(sf::RenderTarget& target);

    std::shared_ptr<ClassicSprite> getSprite(Type type);
    void draw(const std::shared_ptr<ClassicSprite> &sprite);
    void drawLine(const Coordinates &p1, const Coordinates &p2);

private:
    SpriteContainer<Type, ClassicSpriteFactory, ClassicSprite> _sprite_container;
    sf::RenderTarget& _render_target;
};