You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
966 B
C++

#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;
};