#pragma once #include #include #include #include #include #include #include #include enum class Judgement { Perfect, Great, Good, Early, Miss }; struct MarkerStatePreview { Judgement state; std::string name; }; const static std::vector marker_state_previews { {Judgement::Perfect, "PERFECT"}, {Judgement::Great, "GREAT"}, {Judgement::Good, "GOOD"}, {Judgement::Early, "EARLY / LATE"}, {Judgement::Miss, "MISS"} }; using ref_tex = std::reference_wrapper; using opt_ref_tex = std::optional; /* * Holds the textures associated with a given marker folder from the assets * folder */ class Marker { public: explicit Marker(const std::filesystem::path& folder); opt_ref_tex at(Judgement state, sf::Time offset); ref_tex preview(Judgement state); private: unsigned int fps = 30; std::vector approach; std::vector perfect; std::vector great; std::vector good; std::vector early; std::vector miss; std::vector& texture_vector_of(Judgement state); }; Marker first_available_marker_from_folder(const std::filesystem::path& assets_folder);