Make deleted flag a parameter of load/save methods (instead of a record member) in ESM records

(cherry picked from commit 4a16eba716)

Conflicts:
	components/esm/loadland.cpp
	components/esm/loadland.hpp
This commit is contained in:
Stanislav Bas 2015-07-20 17:23:14 +03:00 committed by cc9cii
parent 7013ba751c
commit 82363bf318
90 changed files with 715 additions and 1051 deletions

View file

@ -8,29 +8,20 @@ namespace ESM
{
unsigned int Door::sRecordId = REC_DOOR;
Door::Door()
: mIsDeleted(false)
{}
void Door::load(ESMReader &esm)
void Door::load(ESMReader &esm, bool &isDeleted)
{
mIsDeleted = false;
isDeleted = false;
bool hasName = false;
while (esm.hasMoreSubs())
{
esm.getSubName();
uint32_t name = esm.retSubName().val;
switch (name)
switch (esm.retSubName().val)
{
case ESM::FourCC<'N','A','M','E'>::value:
mId = esm.getHString();
hasName = true;
break;
case ESM::FourCC<'D','E','L','E'>::value:
esm.skipHSub();
mIsDeleted = true;
break;
case ESM::FourCC<'M','O','D','L'>::value:
mModel = esm.getHString();
break;
@ -46,6 +37,10 @@ namespace ESM
case ESM::FourCC<'A','N','A','M'>::value:
mCloseSound = esm.getHString();
break;
case ESM::FourCC<'D','E','L','E'>::value:
esm.skipHSub();
isDeleted = true;
break;
default:
esm.fail("Unknown subrecord");
break;
@ -56,11 +51,11 @@ namespace ESM
esm.fail("Missing NAME subrecord");
}
void Door::save(ESMWriter &esm) const
void Door::save(ESMWriter &esm, bool isDeleted) const
{
esm.writeHNCString("NAME", mId);
if (mIsDeleted)
if (isDeleted)
{
esm.writeHNCString("DELE", "");
return;
@ -80,6 +75,5 @@ namespace ESM
mScript.clear();
mOpenSound.clear();
mCloseSound.clear();
mIsDeleted = false;
}
}