#pragma once #include "dinkyecs.hpp" #include "lights.hpp" #include "map.hpp" #include #include #include "spatialmap.hpp" using std::shared_ptr; struct GameLevel { size_t index; shared_ptr map; shared_ptr world; shared_ptr lights; shared_ptr collision; }; struct LevelScaling { int map_width=40; int map_height=50; }; class LevelManager { public: std::vector $levels; size_t $current_level = 0; LevelManager(); 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(); };