#pragma once #include "core/note.h" #include "core/precisionevaluator.h" #include "classicmode/noteinitializer.h" class ClassicGraphicsManager; class ClassicNote : public kku::Note { public: enum State { NONE, FLYING, DYING, DEAD }; explicit ClassicNote(NoteInitializer&& init); 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 display(const ClassicGraphicsManager * const manager) const = 0; virtual void setGraphics(ClassicGraphicsManager * const manager, kku::TimeRange&& range) = 0; virtual void removeGraphics(ClassicGraphicsManager * const manager) = 0; void setState(State state) noexcept; State getState() const noexcept; protected: State _state; };