#pragma once #include "classicactions.h" #include "game/precisionevaluator.h" #include "SFML/Window/Keyboard.hpp" #include #include #include enum class ClassicGrade { PERFECT, GOOD, BAD }; enum ClassicNoteState { NONE, FLYING, ACTIVE, DYING, DEAD }; class ClassicSprite; class ClassicAnimationScenario; struct ClassicNote { PrecisionEvaluator evaluator; std::vector intervals; bool hold = false; ClassicNoteState state = ClassicNoteState::NONE; struct Element { Coordinates coordinates; // Each note may consist of several buttons. // For example, ↑ → or ↓ → ← // Note Element represents this idea. bool pressed = false; // Each ending button in such sequence sf::Keyboard::Key pressed_as; // is an element. Type type = Type::NONE; std::vector falling_curve_interpolation; std::array available_keys; std::shared_ptr sprite; std::array, 5> animations; }; std::vector elements; };