#pragma once #include #include #include #include #include "ContentPack.hpp" class Content; class PacksManager; class EnginePaths; class Input; struct Project; namespace io { class path; } class ContentControl { public: ContentControl( const Project& project, EnginePaths& paths, Input& input, std::function postContent ); ~ContentControl(); Content* get(); const Content* get() const; std::vector& getBasePacks(); /// @brief Reset content to base packs list void resetContent(const std::vector& nonReset); void loadContent(const std::vector& names); void loadContent(); void setContentPacksRaw(std::vector&& packs); const std::vector& getContentPacks() const; const std::vector& getAllContentPacks() const; PacksManager& scan(); private: EnginePaths& paths; Input& input; std::unique_ptr content; std::function postContent; std::vector basePacks; std::unique_ptr manager; std::vector contentPacks; std::vector allPacks; // includes 'core' };