#ifndef NOTESPRITE_H #define NOTESPRITE_H #include #include class NoteSprite : public sf::Drawable, public sf::Transformable { public: enum class State { APPEARING, ACTIVE, TAPPED, DYING, DETACHED }; explicit NoteSprite(); virtual ~NoteSprite() = 0; virtual void update() = 0; virtual void attach() noexcept final; virtual void detach() noexcept final; virtual void initState(State nextState) noexcept final; protected: State _state; bool _attached; }; #endif // NOTESPRITE_H