#pragma once #include namespace fs = std::filesystem; namespace ESLoader { struct RecordCollection; struct PluginData { [[nodiscard]] bool IsLite() const noexcept { return m_isLite; } String m_filename; union { uint8_t m_standardId; uint16_t m_liteId; }; bool m_isLite; }; using PluginCollection = Vector; String ReadZString(Buffer::Reader& aReader) noexcept; String ReadWString(Buffer::Reader& aReader) noexcept; class ESLoader { public: ESLoader(); UniquePtr BuildRecordCollection() noexcept; PluginCollection& GetLoadOrder() noexcept { return m_loadOrder; } private: bool LoadLoadOrder(); UniquePtr LoadFiles(); fs::path GetPath(String& aFilename); fs::path m_directory = ""; Vector m_loadOrder{}; TiltedPhoques::Map m_masterFiles{}; }; } // namespace ESLoader