#pragma once #include #include #include #include #include #include #include #include #include #include enum class Judgement { Perfect, Great, Good, Poor, Miss }; const static std::unordered_map judgement_to_name = { {Judgement::Perfect, "PERFECT"}, {Judgement::Great, "GREAT"}, {Judgement::Good, "GOOD"}, {Judgement::Poor, "POOR"}, {Judgement::Miss, "MISS"} }; const static std::unordered_map name_to_judgement = { {"PERFECT", Judgement::Perfect}, {"GREAT", Judgement::Great}, {"GOOD", Judgement::Good}, {"POOR", Judgement::Poor}, {"MISS", Judgement::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); std::filesystem::path get_folder() {return folder;}; private: unsigned int fps = 30; std::vector approach; std::vector perfect; std::vector great; std::vector good; std::vector poor; std::vector miss; std::vector& texture_vector_of(Judgement state); std::filesystem::path folder; }; Marker first_available_marker_in(const std::filesystem::path& assets_folder);