lazydev 12 years ago
parent 7e689abdfb
commit 759b2e96bf

@ -112,8 +112,8 @@ void Cell::load(ESMReader &esm, MWWorld::ESMStore &store)
// instead.
if (mData.mFlags & QuasiEx)
mRegion = esm.getHNOString("RGNN");
else
esm.getHNT(mAmbi, "AMBI", 16);
else if (esm.isNextSub("AMBI"))
esm.getHT(mAmbi);
}
else
{
@ -126,7 +126,7 @@ void Cell::load(ESMReader &esm, MWWorld::ESMStore &store)
if (esm.isNextSub("NAM0")) {
esm.getHT(mNAM0);
}
// preload moved references
while (esm.isNextSub("MVRF")) {
CellRef ref;
@ -135,7 +135,7 @@ void Cell::load(ESMReader &esm, MWWorld::ESMStore &store)
MWWorld::Store<ESM::Cell> &cStore = const_cast<MWWorld::Store<ESM::Cell>&>(store.get<ESM::Cell>());
ESM::Cell *cellAlt = const_cast<ESM::Cell*>(cStore.searchOrCreate(cMRef.mTarget[0], cMRef.mTarget[1]));
// Get regular moved reference data. Adapted from CellStore::loadRefs. Maybe we can optimize the following
// implementation when the oher implementation works as well.
getNextRef(esm, ref);
@ -143,7 +143,7 @@ void Cell::load(ESMReader &esm, MWWorld::ESMStore &store)
std::transform (ref.mRefID.begin(), ref.mRefID.end(), std::back_inserter (lowerCase),
(int(*)(int)) std::tolower);
// Add data required to make reference appear in the correct cell.
// We should not need to test for duplicates, as this part of the code is pre-cell merge.
mMovedRefs.push_back(cMRef);
@ -186,7 +186,7 @@ void Cell::save(ESMWriter &esm)
if (mMapColor != 0)
esm.writeHNT("NAM5", mMapColor);
}
if (mNAM0 != 0)
esm.writeHNT("NAM0", mNAM0);
}
@ -226,7 +226,7 @@ bool Cell::getNextRef(ESMReader &esm, CellRef &ref)
esm.getHNT(ref.mRefnum, "FRMR");
ref.mRefID = esm.getHNString("NAME");
// Identify references belonging to a parent file and adapt the ID accordingly.
int local = (ref.mRefnum & 0xff000000) >> 24;
size_t global = esm.getIndex() + 1;
@ -249,7 +249,7 @@ bool Cell::getNextRef(ESMReader &esm, CellRef &ref)
// missing
ref.mScale = 1.0;
esm.getHNOT(ref.mScale, "XSCL");
// TODO: support loading references from saves, there are tons of keys not recognized yet.
// The following is just an incomplete list.
if (esm.isNextSub("ACTN"))
@ -266,7 +266,7 @@ bool Cell::getNextRef(ESMReader &esm, CellRef &ref)
esm.skipHSub();
else if (esm.isNextSub("CRED")) // ???
esm.skipHSub();
ref.mOwner = esm.getHNOString("ANAM");
ref.mGlob = esm.getHNOString("BNAM");
ref.mSoul = esm.getHNOString("XSOL");
@ -305,7 +305,7 @@ bool Cell::getNextRef(ESMReader &esm, CellRef &ref)
esm.getHNOT(ref.mFltv, "FLTV");
esm.getHNOT(ref.mPos, "DATA", 24);
// Number of references in the cell? Maximum once in each cell,
// but not always at the beginning, and not always right. In other
// words, completely useless.
@ -318,7 +318,7 @@ bool Cell::getNextRef(ESMReader &esm, CellRef &ref)
esm.getHT(ref.mNam0);
//esm.getHNOT(NAM0, "NAM0");
}
if (esm.isNextSub("DELE")) {
esm.skipHSub();
ref.mDeleted = 2; // Deleted, will not respawn.
@ -333,7 +333,7 @@ bool Cell::getNextMVRF(ESMReader &esm, MovedCellRef &mref)
{
esm.getHT(mref.mRefnum);
esm.getHNOT(mref.mTarget, "CNDT");
// Identify references belonging to a parent file and adapt the ID accordingly.
int local = (mref.mRefnum & 0xff000000) >> 24;
size_t global = esm.getIndex() + 1;

Loading…
Cancel
Save