#pragma once #include "Asset/IZoneAssetCreationState.h" #include "KeyValuePairs/KeyValuePairsCreator.h" #include "SearchPath/ISearchPath.h" #include #include #include #include class IPakToCreate { public: explicit IPakToCreate(std::string name); void AddImage(std::string imageName); void Build(ISearchPath& searchPath, const std::filesystem::path& outPath); private: std::string m_name; std::vector m_image_names; }; class IPakCreator : public IZoneAssetCreationState { public: IPakCreator(); void Inject(ZoneAssetCreationInjection& inject) override; IPakToCreate* GetOrAddIPak(const std::string& ipakName); void Finalize(ISearchPath& searchPath, const std::filesystem::path& outPath); private: KeyValuePairsCreator* m_kvp_creator; std::unordered_map m_ipak_lookup; std::vector> m_ipaks; };