#pragma once #include #include #include "core/note.h" #include "initializers/mockarrownoteinitializer.h" class ClassicSprite; class ClassicAnimationScenario; class MockClassicNote : public Note { public: enum State { NONE, FLYING, DYING, DEAD }; explicit MockClassicNote(MockArrowNoteInitializer&& init); virtual ~MockClassicNote() 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() override final; virtual void update(const microsec &music_offset) override final; private: struct MockElement { std::shared_ptr sprite; std::array, 4> animations; Type type = Type::NONE; Coordinates coordinates; std::vector falling_curve_interpolation; }; std::vector _elements; State _state; const Context *_context; };