#pragma once #include #include "core/note.h" class ClassicGraphicsManager; class ClassicNote : public kku::Note { public: enum State { NONE = 0, INITIAL = 1, FLYING = 2, DYING = 3, DEAD = 4 }; explicit ClassicNote(const kku::microsec& perfect_offset, int id); virtual ~ClassicNote() override = default; virtual bool isActive(const kku::microsec& offset) const override = 0; virtual void update(const kku::microsec &music_offset) override = 0; virtual void input(kku::GameEvent&& input) override = 0; virtual void draw(const std::shared_ptr& graphics_manager) const = 0; void setState(State state) noexcept; State getState() const noexcept; int getId() const noexcept; protected: State _state; int _id; };