#pragma once #include "dinkyecs.hpp" #include "lights.hpp" #include "map.hpp" #include #include #include "spatialmap.hpp" #include "components.hpp" #include "boss_fight_ui.hpp" using std::shared_ptr; struct GameLevel { size_t index; DinkyECS::Entity player; shared_ptr map = nullptr; shared_ptr world = nullptr; shared_ptr lights = nullptr; shared_ptr collision = nullptr; }; struct LevelScaling { int map_width=20; int map_height=20; }; class LevelManager { public: components::ComponentMap $components; std::vector $levels; size_t $current_level = 0; LevelManager(); shared_ptr create_bossfight(shared_ptr prev_world); size_t create_level(shared_ptr prev_world = nullptr); GameLevel &next(); GameLevel &previous(); GameLevel ¤t(); size_t current_index() { return $current_level; } GameLevel &get(size_t index); LevelScaling scale_level(); };