mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-01 02:15:34 +00:00
Load methods (for ESM records) accept a deleted flag in ESSImporter
(cherry picked from commit 0c6ab6cc94
)
This commit is contained in:
parent
0c4dd48394
commit
38e99c9cd4
4 changed files with 29 additions and 10 deletions
|
@ -134,7 +134,9 @@ namespace ESSImport
|
||||||
void ConvertCell::read(ESM::ESMReader &esm)
|
void ConvertCell::read(ESM::ESMReader &esm)
|
||||||
{
|
{
|
||||||
ESM::Cell cell;
|
ESM::Cell cell;
|
||||||
cell.load(esm, false);
|
bool isDeleted = false;
|
||||||
|
|
||||||
|
cell.load(esm, isDeleted, false);
|
||||||
|
|
||||||
// I wonder what 0x40 does?
|
// I wonder what 0x40 does?
|
||||||
if (cell.isExterior() && cell.mData.mFlags & 0x20)
|
if (cell.isExterior() && cell.mData.mFlags & 0x20)
|
||||||
|
|
|
@ -51,6 +51,8 @@ public:
|
||||||
|
|
||||||
void setContext(Context& context) { mContext = &context; }
|
void setContext(Context& context) { mContext = &context; }
|
||||||
|
|
||||||
|
/// @note The load method of ESM records accept the deleted flag as a parameter.
|
||||||
|
/// I don't know can the DELE sub-record appear in saved games, so the deleted flag will be ignored.
|
||||||
virtual void read(ESM::ESMReader& esm)
|
virtual void read(ESM::ESMReader& esm)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -76,7 +78,9 @@ public:
|
||||||
virtual void read(ESM::ESMReader& esm)
|
virtual void read(ESM::ESMReader& esm)
|
||||||
{
|
{
|
||||||
T record;
|
T record;
|
||||||
record.load(esm);
|
bool isDeleted = false;
|
||||||
|
|
||||||
|
record.load(esm, isDeleted);
|
||||||
mRecords[record.mId] = record;
|
mRecords[record.mId] = record;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,7 +104,9 @@ public:
|
||||||
virtual void read(ESM::ESMReader &esm)
|
virtual void read(ESM::ESMReader &esm)
|
||||||
{
|
{
|
||||||
ESM::NPC npc;
|
ESM::NPC npc;
|
||||||
npc.load(esm);
|
bool isDeleted = false;
|
||||||
|
|
||||||
|
npc.load(esm, isDeleted);
|
||||||
if (npc.mId != "player")
|
if (npc.mId != "player")
|
||||||
{
|
{
|
||||||
// Handles changes to the NPC struct, but since there is no index here
|
// Handles changes to the NPC struct, but since there is no index here
|
||||||
|
@ -136,7 +142,9 @@ public:
|
||||||
{
|
{
|
||||||
// See comment in ConvertNPC
|
// See comment in ConvertNPC
|
||||||
ESM::Creature creature;
|
ESM::Creature creature;
|
||||||
creature.load(esm);
|
bool isDeleted = false;
|
||||||
|
|
||||||
|
creature.load(esm, isDeleted);
|
||||||
mContext->mCreatures[Misc::StringUtils::lowerCase(creature.mId)] = creature;
|
mContext->mCreatures[Misc::StringUtils::lowerCase(creature.mId)] = creature;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -151,7 +159,9 @@ public:
|
||||||
virtual void read(ESM::ESMReader &esm)
|
virtual void read(ESM::ESMReader &esm)
|
||||||
{
|
{
|
||||||
ESM::Global global;
|
ESM::Global global;
|
||||||
global.load(esm);
|
bool isDeleted = false;
|
||||||
|
|
||||||
|
global.load(esm, isDeleted);
|
||||||
if (Misc::StringUtils::ciEqual(global.mId, "gamehour"))
|
if (Misc::StringUtils::ciEqual(global.mId, "gamehour"))
|
||||||
mContext->mHour = global.mValue.getFloat();
|
mContext->mHour = global.mValue.getFloat();
|
||||||
if (Misc::StringUtils::ciEqual(global.mId, "day"))
|
if (Misc::StringUtils::ciEqual(global.mId, "day"))
|
||||||
|
@ -170,8 +180,9 @@ public:
|
||||||
virtual void read(ESM::ESMReader &esm)
|
virtual void read(ESM::ESMReader &esm)
|
||||||
{
|
{
|
||||||
ESM::Class class_;
|
ESM::Class class_;
|
||||||
class_.load(esm);
|
bool isDeleted = false;
|
||||||
|
|
||||||
|
class_.load(esm, isDeleted);
|
||||||
if (class_.mId == "NEWCLASSID_CHARGEN")
|
if (class_.mId == "NEWCLASSID_CHARGEN")
|
||||||
mContext->mCustomPlayerClassName = class_.mName;
|
mContext->mCustomPlayerClassName = class_.mName;
|
||||||
|
|
||||||
|
@ -185,7 +196,9 @@ public:
|
||||||
virtual void read(ESM::ESMReader &esm)
|
virtual void read(ESM::ESMReader &esm)
|
||||||
{
|
{
|
||||||
ESM::Book book;
|
ESM::Book book;
|
||||||
book.load(esm);
|
bool isDeleted = false;
|
||||||
|
|
||||||
|
book.load(esm, isDeleted);
|
||||||
if (book.mData.mSkillID == -1)
|
if (book.mData.mSkillID == -1)
|
||||||
mContext->mPlayer.mObject.mNpcStats.mUsedIds.push_back(Misc::StringUtils::lowerCase(book.mId));
|
mContext->mPlayer.mObject.mNpcStats.mUsedIds.push_back(Misc::StringUtils::lowerCase(book.mId));
|
||||||
|
|
||||||
|
@ -362,7 +375,9 @@ public:
|
||||||
virtual void read(ESM::ESMReader& esm)
|
virtual void read(ESM::ESMReader& esm)
|
||||||
{
|
{
|
||||||
ESM::Faction faction;
|
ESM::Faction faction;
|
||||||
faction.load(esm);
|
bool isDeleted = false;
|
||||||
|
|
||||||
|
faction.load(esm, isDeleted);
|
||||||
std::string id = Misc::StringUtils::toLower(faction.mId);
|
std::string id = Misc::StringUtils::toLower(faction.mId);
|
||||||
|
|
||||||
for (std::map<std::string, int>::const_iterator it = faction.mReactions.begin(); it != faction.mReactions.end(); ++it)
|
for (std::map<std::string, int>::const_iterator it = faction.mReactions.begin(); it != faction.mReactions.end(); ++it)
|
||||||
|
|
|
@ -18,7 +18,8 @@ namespace ESSImport
|
||||||
if (esm.isNextSub("MNAM"))
|
if (esm.isNextSub("MNAM"))
|
||||||
esm.skipHSub();
|
esm.skipHSub();
|
||||||
|
|
||||||
ESM::CellRef::loadData(esm);
|
bool isDeleted = false;
|
||||||
|
ESM::CellRef::loadData(esm, isDeleted);
|
||||||
|
|
||||||
mHasACDT = false;
|
mHasACDT = false;
|
||||||
if (esm.isNextSub("ACDT"))
|
if (esm.isNextSub("ACDT"))
|
||||||
|
|
|
@ -32,7 +32,8 @@ namespace ESSImport
|
||||||
item.mSCRI.load(esm);
|
item.mSCRI.load(esm);
|
||||||
|
|
||||||
// for XSOL and XCHG seen so far, but probably others too
|
// for XSOL and XCHG seen so far, but probably others too
|
||||||
item.ESM::CellRef::loadData(esm);
|
bool isDeleted = false;
|
||||||
|
item.ESM::CellRef::loadData(esm, isDeleted);
|
||||||
|
|
||||||
int charge=-1;
|
int charge=-1;
|
||||||
esm.getHNOT(charge, "XHLT");
|
esm.getHNOT(charge, "XHLT");
|
||||||
|
|
Loading…
Reference in a new issue