#include "LoaderStringTableIW5.h" #include "Csv/CsvStream.h" #include "Game/IW5/CommonIW5.h" #include "Game/IW5/IW5.h" #include "ObjLoading.h" #include "Pool/GlobalAssetPool.h" #include "StringTable/StringTableLoader.h" #include using namespace IW5; namespace { class StringTableLoader final : public AssetCreator { public: StringTableLoader(MemoryManager& memory, ISearchPath& searchPath) : m_memory(memory), m_search_path(searchPath) { } AssetCreationResult CreateAsset(const std::string& assetName, AssetCreationContext& context) override { const auto file = m_search_path.Open(assetName); if (!file.IsOpen()) return AssetCreationResult::NoAction(); string_table::StringTableLoaderV2 loader; auto* stringTable = loader.LoadFromStream(assetName, m_memory, *file.m_stream); return AssetCreationResult::Success(context.AddAsset(assetName, stringTable)); } private: MemoryManager& m_memory; ISearchPath& m_search_path; }; } // namespace namespace string_table { std::unique_ptr> CreateLoaderIW5(MemoryManager& memory, ISearchPath& searchPath) { return std::make_unique(memory, searchPath); } } // namespace string_table