mirror of
https://github.com/OpenMW/openmw.git
synced 2025-03-04 06:09:40 +00:00
Merge branch 'loadingesm4' into 'master'
Track ESM4 file loading progress See merge request OpenMW/openmw!4516
This commit is contained in:
commit
e515e99937
4 changed files with 12 additions and 5 deletions
|
@ -70,7 +70,7 @@ namespace MWWorld
|
||||||
mEncoder != nullptr ? &mEncoder->getStatelessEncoder() : nullptr);
|
mEncoder != nullptr ? &mEncoder->getStatelessEncoder() : nullptr);
|
||||||
reader.setModIndex(index);
|
reader.setModIndex(index);
|
||||||
reader.updateModIndices(mNameToIndex);
|
reader.updateModIndices(mNameToIndex);
|
||||||
mStore.loadESM4(reader);
|
mStore.loadESM4(reader, listener);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -468,9 +468,16 @@ namespace MWWorld
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ESMStore::loadESM4(ESM4::Reader& reader)
|
void ESMStore::loadESM4(ESM4::Reader& reader, Loading::Listener* listener)
|
||||||
{
|
{
|
||||||
auto visitorRec = [this](ESM4::Reader& reader) { return ESMStoreImp::readRecord(reader, *this); };
|
if (listener != nullptr)
|
||||||
|
listener->setProgressRange(::EsmLoader::fileProgress);
|
||||||
|
auto visitorRec = [this, listener](ESM4::Reader& reader) {
|
||||||
|
bool result = ESMStoreImp::readRecord(reader, *this);
|
||||||
|
if (listener != nullptr)
|
||||||
|
listener->setProgress(::EsmLoader::fileProgress * reader.getFileOffset() / reader.getFileSize());
|
||||||
|
return result;
|
||||||
|
};
|
||||||
ESM4::ReaderUtils::readAll(reader, visitorRec, [](ESM4::Reader&) {});
|
ESM4::ReaderUtils::readAll(reader, visitorRec, [](ESM4::Reader&) {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -219,7 +219,7 @@ namespace MWWorld
|
||||||
void validateDynamic();
|
void validateDynamic();
|
||||||
|
|
||||||
void load(ESM::ESMReader& esm, Loading::Listener* listener, ESM::Dialogue*& dialogue);
|
void load(ESM::ESMReader& esm, Loading::Listener* listener, ESM::Dialogue*& dialogue);
|
||||||
void loadESM4(ESM4::Reader& esm);
|
void loadESM4(ESM4::Reader& esm, Loading::Listener* listener);
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
const Store<T>& get() const
|
const Store<T>& get() const
|
||||||
|
|
|
@ -217,7 +217,7 @@ namespace ESM4
|
||||||
|
|
||||||
// Methods added for updating loading progress bars
|
// Methods added for updating loading progress bars
|
||||||
inline std::size_t getFileSize() const { return mFileSize; }
|
inline std::size_t getFileSize() const { return mFileSize; }
|
||||||
inline std::size_t getFileOffset() const { return mStream->tellg(); }
|
inline std::size_t getFileOffset() const { return mSavedStream ? mSavedStream->tellg() : mStream->tellg(); }
|
||||||
|
|
||||||
// Methods added for saving/restoring context
|
// Methods added for saving/restoring context
|
||||||
ReaderContext getContext(); // WARN: must be called immediately after reading the record header
|
ReaderContext getContext(); // WARN: must be called immediately after reading the record header
|
||||||
|
|
Loading…
Reference in a new issue