#pragma once #include "arrowelement.h" #include "classicnote.h" #include "initializers/arrownoteinitializer.h" class ClassicArrowNote : public ClassicNote { public: explicit ClassicArrowNote(ArrowNoteInitializer&& init); virtual ~ClassicArrowNote() = default; virtual void putToGame() override; virtual void update(const kku::microsec &music_offset) override; virtual void input(kku::GameEvent&& input) override; virtual void display(const ClassicGraphicsManager * const manager) const override; virtual void setGraphics(ClassicGraphicsManager * const manager, kku::TimeRange&& range) override; bool allElementsPressed() const; bool isPressedAs(char key) const; inline bool isHold() const; private: std::vector _elements; bool _is_hold; }; using ArrowElements = std::vector;