#pragma once #include "levels/level.hpp" namespace Nimbin { namespace Level { class Progression { const Data* _level; size_t _current_step{0}; public: explicit Progression(const Data& _level); bool advance (); bool is_Complete () const { return _current_step >= _level->steps.size(); } bool is_DynamicLib () const { return _level->dynamic_lib; } size_t get_Step () const { return _current_step; } const Level::Step& get_Current () const { return _level->steps[_current_step]; } const std::string& get_SourceFile() const { return _level->source_file; } DynArray get_GarantsForStep() const; }; } // namespace } // namespace Nimbin