#pragma once #include #include #include "level.hpp" #include "sets/tileset.hpp" namespace silly::editor { enum LevelPackageFormat { PACKAGE_TXT = 0 }; class LevelPackage { public: LevelPackage() {} ~LevelPackage() = default; TileSet &get_tileset(); void add_level(TileLevel level); TileLevel &get_current_level(); void move_to_level_index(int index); const int get_current_level_index() const; const std::vector &get_levels() const; const std::string &get_name() const; void set_name(const std::string &name); std::string export_to_string() const; void save(LevelPackageFormat format, std::string &file_path) const; void load(LevelPackageFormat format, std::string &file_path); void clear(); private: std::string name; TileSet tileset; std::vector levels; int currentLevelIndex = 0; }; }