#ifndef NOTEGRAPHICSENTITY_H
#define NOTEGRAPHICSENTITY_H

#include <SFML/Graphics/Drawable.hpp>
#include <SFML/Graphics/Transformable.hpp>

class NoteGraphicsEntity : public sf::Drawable, public sf::Transformable
{
public:
    explicit NoteGraphicsEntity();
    virtual ~NoteGraphicsEntity() = 0;

    virtual void update() = 0;

    virtual void attach() noexcept final;
    virtual void detach() noexcept final;

    virtual void onKeyPressed() = 0;
    virtual void onKeyReleased() = 0;

    virtual void show() = 0;
    virtual void killAsExpired() = 0;
    virtual void reset() = 0;

    virtual bool isActive() const = 0;

protected:
    bool _attached;
};

#endif