mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-28 16:39:43 +00:00
Merge branch 'init_filesystem_archive' into 'master'
Initialize FileSystemArchive index in constructor See merge request OpenMW/openmw!3870
This commit is contained in:
commit
a297a0e742
2 changed files with 25 additions and 38 deletions
|
@ -12,19 +12,12 @@ namespace VFS
|
|||
{
|
||||
|
||||
FileSystemArchive::FileSystemArchive(const std::filesystem::path& path)
|
||||
: mBuiltIndex(false)
|
||||
, mPath(path)
|
||||
{
|
||||
}
|
||||
|
||||
void FileSystemArchive::listResources(FileMap& out)
|
||||
{
|
||||
if (!mBuiltIndex)
|
||||
: mPath(path)
|
||||
{
|
||||
const auto str = mPath.u8string();
|
||||
size_t prefix = str.size();
|
||||
std::size_t prefix = str.size();
|
||||
|
||||
if (!mPath.empty() && str[prefix - 1] != '\\' && str[prefix - 1] != '/')
|
||||
if (prefix > 0 && str[prefix - 1] != '\\' && str[prefix - 1] != '/')
|
||||
++prefix;
|
||||
|
||||
for (const auto& i : std::filesystem::recursive_directory_iterator(mPath))
|
||||
|
@ -32,29 +25,24 @@ namespace VFS
|
|||
if (std::filesystem::is_directory(i))
|
||||
continue;
|
||||
|
||||
const auto& path = i.path();
|
||||
const std::string proper = Files::pathToUnicodeString(path);
|
||||
|
||||
FileSystemArchiveFile file(path);
|
||||
|
||||
const std::filesystem::path& filePath = i.path();
|
||||
const std::string proper = Files::pathToUnicodeString(filePath);
|
||||
VFS::Path::Normalized searchable(std::string_view{ proper }.substr(prefix));
|
||||
FileSystemArchiveFile file(filePath);
|
||||
|
||||
const auto inserted = mIndex.emplace(std::move(searchable), std::move(file));
|
||||
if (!inserted.second)
|
||||
Log(Debug::Warning)
|
||||
<< "Warning: found duplicate file for '" << proper
|
||||
<< "Found duplicate file for '" << proper
|
||||
<< "', please check your file system for two files with the same name in different cases.";
|
||||
else
|
||||
out[inserted.first->first] = &inserted.first->second;
|
||||
}
|
||||
mBuiltIndex = true;
|
||||
}
|
||||
else
|
||||
|
||||
void FileSystemArchive::listResources(FileMap& out)
|
||||
{
|
||||
for (auto& [k, v] : mIndex)
|
||||
out[k] = &v;
|
||||
}
|
||||
}
|
||||
|
||||
bool FileSystemArchive::contains(Path::NormalizedView file) const
|
||||
{
|
||||
|
|
|
@ -36,7 +36,6 @@ namespace VFS
|
|||
|
||||
private:
|
||||
std::map<VFS::Path::Normalized, FileSystemArchiveFile, std::less<>> mIndex;
|
||||
bool mBuiltIndex;
|
||||
std::filesystem::path mPath;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue