#pragma once #include "classicmode/context.h" #include "core/note.h" #include "core/precisionevaluator.h" #include "classicmode/noteinitializer.h" class ClassicSprite; class ClassicAnimationScenario; class ClassicNote : public Note { public: enum class Grade { PERFECT, GOOD, BAD }; enum State { NONE, FLYING, DYING, DEAD }; explicit ClassicNote(NoteInitializer&& init); virtual ~ClassicNote() override = default; virtual bool isActive(const microsec& offset) const override final; virtual bool isInGame() const override final; virtual bool shouldRemove() const override final; virtual void putToGame(const microsec &music_offset) override = 0; virtual void update(const microsec &music_offset) override = 0; virtual void draw() const override = 0; virtual void input(PlayerInput&& inputdata) = 0; protected: const PrecisionEvaluator _evaluator; State _state; const Context *_context; };