Some refactoring. Remove unused code

This commit is contained in:
Stanislav Bas 2015-07-16 22:31:59 +03:00
parent e65ff723ce
commit 5fd48efd28
7 changed files with 173 additions and 260 deletions

View file

@ -194,7 +194,7 @@ namespace MWWorld
if (inserted.second) if (inserted.second)
mShared.push_back(&inserted.first->second); mShared.push_back(&inserted.first->second);
return RecordId(record.mId, ESM::isRecordDeleted(record)); return RecordId(record.mId, record.mIsDeleted);
} }
template<typename T> template<typename T>
void Store<T>::setUp() void Store<T>::setUp()
@ -327,7 +327,7 @@ namespace MWWorld
record.load (reader); record.load (reader);
insert (record); insert (record);
return RecordId(record.mId, ESM::isRecordDeleted(record)); return RecordId(record.mId, record.mIsDeleted);
} }
// LandTexture // LandTexture
@ -1083,6 +1083,35 @@ namespace MWWorld
return RecordId(script.mId); return RecordId(script.mId);
} }
// GameSetting
// Need to specialize load() and read() methods, because GameSetting can't
// be deleted (has no mIsDeleted flag)
//=========================================================================
template <>
inline RecordId Store<ESM::GameSetting>::load(ESM::ESMReader &reader)
{
ESM::GameSetting setting;
setting.load(reader);
Misc::StringUtils::toLower(setting.mId);
std::pair<typename Static::iterator, bool> inserted = mStatic.insert(std::make_pair(setting.mId, setting));
if (inserted.second)
mShared.push_back(&inserted.first->second);
return RecordId(setting.mId);
}
template <>
inline RecordId Store<ESM::GameSetting>::read(ESM::ESMReader &reader)
{
ESM::GameSetting setting;
setting.load(reader);
insert(setting);
return RecordId(setting.mId);
}
} }
template class MWWorld::Store<ESM::Activator>; template class MWWorld::Store<ESM::Activator>;

View file

@ -3,7 +3,6 @@
#include "esmreader.hpp" #include "esmreader.hpp"
#include "esmwriter.hpp" #include "esmwriter.hpp"
#include "defs.hpp" #include "defs.hpp"
#include "util.hpp"
namespace ESM namespace ESM
{ {

View file

@ -12,7 +12,6 @@
#include "esmwriter.hpp" #include "esmwriter.hpp"
#include "defs.hpp" #include "defs.hpp"
#include "cellid.hpp" #include "cellid.hpp"
#include "util.hpp"
namespace namespace
{ {
@ -53,21 +52,27 @@ namespace ESM
return ref.mRefNum == refNum; return ref.mRefNum == refNum;
} }
void Cell::load(ESMReader &esm, bool saveContext) void Cell::load(ESMReader &esm, bool saveContext)
{ {
loadName(esm); loadName(esm);
loadData(esm); loadData(esm);
loadCell(esm, saveContext); loadCell(esm, saveContext);
} }
void Cell::loadName(ESMReader &esm) void Cell::loadName(ESMReader &esm)
{ {
mName = esm.getHNString("NAME"); mName = esm.getHNString("NAME");
mIsDeleted = readDeleSubRecord(esm);
}
void Cell::loadCell(ESMReader &esm, bool saveContext) mIsDeleted = false;
{ if (esm.isNextSub("DELE"))
{
esm.skipHSub();
mIsDeleted = true;
}
}
void Cell::loadCell(ESMReader &esm, bool saveContext)
{
mRefNumCounter = 0; mRefNumCounter = 0;
if (mData.mFlags & Interior) if (mData.mFlags & Interior)
@ -109,26 +114,27 @@ void Cell::loadCell(ESMReader &esm, bool saveContext)
mContextList.push_back(esm.getContext()); mContextList.push_back(esm.getContext());
esm.skipRecord(); esm.skipRecord();
} }
} }
void Cell::loadData(ESMReader &esm) void Cell::loadData(ESMReader &esm)
{ {
esm.getHNT(mData, "DATA", 12); esm.getHNT(mData, "DATA", 12);
} }
void Cell::postLoad(ESMReader &esm) void Cell::postLoad(ESMReader &esm)
{ {
// Save position of the cell references and move on // Save position of the cell references and move on
mContextList.push_back(esm.getContext()); mContextList.push_back(esm.getContext());
esm.skipRecord(); esm.skipRecord();
} }
void Cell::save(ESMWriter &esm) const void Cell::save(ESMWriter &esm) const
{ {
esm.writeHNCString("NAME", mName); esm.writeHNCString("NAME", mName);
if (mIsDeleted) if (mIsDeleted)
{ {
writeDeleSubRecord(esm); esm.writeHNCString("DELE", "");
} }
esm.writeHNT("DATA", mData, 12); esm.writeHNT("DATA", mData, 12);
@ -154,17 +160,17 @@ void Cell::save(ESMWriter &esm) const
esm.writeHNT("NAM5", mMapColor); esm.writeHNT("NAM5", mMapColor);
} }
if (mRefNumCounter != 0 && !mIsDeleted) if (mRefNumCounter != 0)
esm.writeHNT("NAM0", mRefNumCounter); esm.writeHNT("NAM0", mRefNumCounter);
} }
void Cell::restore(ESMReader &esm, int iCtx) const void Cell::restore(ESMReader &esm, int iCtx) const
{ {
esm.restoreContext(mContextList.at (iCtx)); esm.restoreContext(mContextList.at (iCtx));
} }
std::string Cell::getDescription() const std::string Cell::getDescription() const
{ {
if (mData.mFlags & Interior) if (mData.mFlags & Interior)
{ {
return mName; return mName;
@ -175,10 +181,10 @@ std::string Cell::getDescription() const
stream << mData.mX << ", " << mData.mY; stream << mData.mX << ", " << mData.mY;
return stream.str(); return stream.str();
} }
} }
bool Cell::getNextRef(ESMReader &esm, CellRef &ref, bool ignoreMoves, MovedCellRef *mref) bool Cell::getNextRef(ESMReader &esm, CellRef &ref, bool ignoreMoves, MovedCellRef *mref)
{ {
// TODO: Try and document reference numbering, I don't think this has been done anywhere else. // TODO: Try and document reference numbering, I don't think this has been done anywhere else.
if (!esm.hasMoreSubs()) if (!esm.hasMoreSubs())
return false; return false;
@ -207,17 +213,17 @@ bool Cell::getNextRef(ESMReader &esm, CellRef &ref, bool ignoreMoves, MovedCellR
adjustRefNum (ref.mRefNum, esm); adjustRefNum (ref.mRefNum, esm);
return true; return true;
} }
bool Cell::getNextMVRF(ESMReader &esm, MovedCellRef &mref) bool Cell::getNextMVRF(ESMReader &esm, MovedCellRef &mref)
{ {
esm.getHT(mref.mRefNum.mIndex); esm.getHT(mref.mRefNum.mIndex);
esm.getHNOT(mref.mTarget, "CNDT"); esm.getHNOT(mref.mTarget, "CNDT");
adjustRefNum (mref.mRefNum, esm); adjustRefNum (mref.mRefNum, esm);
return true; return true;
} }
void Cell::blank() void Cell::blank()
{ {

View file

@ -26,6 +26,7 @@ namespace ESM
{ {
case ESM::FourCC<'N','A','M','E'>::value: case ESM::FourCC<'N','A','M','E'>::value:
mId = esm.getHString(); mId = esm.getHString();
hasName = true;
break; break;
case ESM::FourCC<'D','E','L','E'>::value: case ESM::FourCC<'D','E','L','E'>::value:
esm.skipHSub(); esm.skipHSub();

View file

@ -26,7 +26,7 @@ namespace ESM
{ {
case ESM::FourCC<'N','A','M','E'>::value: case ESM::FourCC<'N','A','M','E'>::value:
mId = esm.getHString(); mId = esm.getHString();
hasName = false; hasName = true;
break; break;
case ESM::FourCC<'D','E','L','E'>::value: case ESM::FourCC<'D','E','L','E'>::value:
esm.skipHSub(); esm.skipHSub();

View file

@ -1,75 +0,0 @@
#include "util.hpp"
#include <cstdint>
namespace ESM
{
bool readDeleSubRecord(ESMReader &esm)
{
if (esm.isNextSub("DELE"))
{
esm.skipHSub();
return true;
}
return false;
}
void writeDeleSubRecord(ESMWriter &esm)
{
esm.writeHNT("DELE", static_cast<int32_t>(0));
}
template <>
bool isRecordDeleted<StartScript>(const StartScript &script)
{
return false;
}
template <>
bool isRecordDeleted<Race>(const Race &race)
{
return false;
}
template <>
bool isRecordDeleted<GameSetting>(const GameSetting &gmst)
{
return false;
}
template <>
bool isRecordDeleted<Skill>(const Skill &skill)
{
return false;
}
template <>
bool isRecordDeleted<MagicEffect>(const MagicEffect &mgef)
{
return false;
}
template <>
bool isRecordDeleted<Pathgrid>(const Pathgrid &pgrd)
{
return false;
}
template <>
bool isRecordDeleted<Land>(const Land &land)
{
return false;
}
template <>
bool isRecordDeleted<DebugProfile>(const DebugProfile &profile)
{
return false;
}
template <>
bool isRecordDeleted<Filter>(const Filter &filter)
{
return false;
}
}

View file

@ -8,16 +8,6 @@
#include "esmreader.hpp" #include "esmreader.hpp"
#include "esmwriter.hpp" #include "esmwriter.hpp"
#include "loadsscr.hpp"
#include "loadglob.hpp"
#include "loadrace.hpp"
#include "loadgmst.hpp"
#include "loadskil.hpp"
#include "loadmgef.hpp"
#include "loadland.hpp"
#include "loadpgrd.hpp"
#include "debugprofile.hpp"
#include "filter.hpp"
namespace ESM namespace ESM
{ {
@ -63,43 +53,6 @@ struct Vector3
} }
}; };
bool readDeleSubRecord(ESMReader &esm);
void writeDeleSubRecord(ESMWriter &esm);
template <class RecordT>
bool isRecordDeleted(const RecordT &record)
{
return record.mIsDeleted;
}
// The following records can't be deleted (for now)
template <>
bool isRecordDeleted<StartScript>(const StartScript &script);
template <>
bool isRecordDeleted<Race>(const Race &race);
template <>
bool isRecordDeleted<GameSetting>(const GameSetting &gmst);
template <>
bool isRecordDeleted<Skill>(const Skill &skill);
template <>
bool isRecordDeleted<MagicEffect>(const MagicEffect &mgef);
template <>
bool isRecordDeleted<Pathgrid>(const Pathgrid &pgrd);
template <>
bool isRecordDeleted<Land>(const Land &land);
template <>
bool isRecordDeleted<DebugProfile>(const DebugProfile &profile);
template <>
bool isRecordDeleted<Filter>(const Filter &filter);
} }
#endif #endif