Some refactoring. Remove unused code

openmw-38
Stanislav Bas 10 years ago
parent e65ff723ce
commit 5fd48efd28

@ -194,7 +194,7 @@ namespace MWWorld
if (inserted.second)
mShared.push_back(&inserted.first->second);
return RecordId(record.mId, ESM::isRecordDeleted(record));
return RecordId(record.mId, record.mIsDeleted);
}
template<typename T>
void Store<T>::setUp()
@ -327,7 +327,7 @@ namespace MWWorld
record.load (reader);
insert (record);
return RecordId(record.mId, ESM::isRecordDeleted(record));
return RecordId(record.mId, record.mIsDeleted);
}
// LandTexture
@ -1083,6 +1083,35 @@ namespace MWWorld
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>;

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

@ -12,7 +12,6 @@
#include "esmwriter.hpp"
#include "defs.hpp"
#include "cellid.hpp"
#include "util.hpp"
namespace
{
@ -53,21 +52,27 @@ namespace ESM
return ref.mRefNum == refNum;
}
void Cell::load(ESMReader &esm, bool saveContext)
{
void Cell::load(ESMReader &esm, bool saveContext)
{
loadName(esm);
loadData(esm);
loadCell(esm, saveContext);
}
}
void Cell::loadName(ESMReader &esm)
{
void Cell::loadName(ESMReader &esm)
{
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;
if (mData.mFlags & Interior)
@ -109,26 +114,27 @@ void Cell::loadCell(ESMReader &esm, bool saveContext)
mContextList.push_back(esm.getContext());
esm.skipRecord();
}
}
}
void Cell::loadData(ESMReader &esm)
{
void Cell::loadData(ESMReader &esm)
{
esm.getHNT(mData, "DATA", 12);
}
}
void Cell::postLoad(ESMReader &esm)
{
void Cell::postLoad(ESMReader &esm)
{
// Save position of the cell references and move on
mContextList.push_back(esm.getContext());
esm.skipRecord();
}
}
void Cell::save(ESMWriter &esm) const
{
void Cell::save(ESMWriter &esm) const
{
esm.writeHNCString("NAME", mName);
if (mIsDeleted)
{
writeDeleSubRecord(esm);
esm.writeHNCString("DELE", "");
}
esm.writeHNT("DATA", mData, 12);
@ -154,17 +160,17 @@ void Cell::save(ESMWriter &esm) const
esm.writeHNT("NAM5", mMapColor);
}
if (mRefNumCounter != 0 && !mIsDeleted)
if (mRefNumCounter != 0)
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));
}
}
std::string Cell::getDescription() const
{
std::string Cell::getDescription() const
{
if (mData.mFlags & Interior)
{
return mName;
@ -175,10 +181,10 @@ std::string Cell::getDescription() const
stream << mData.mX << ", " << mData.mY;
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.
if (!esm.hasMoreSubs())
return false;
@ -207,17 +213,17 @@ bool Cell::getNextRef(ESMReader &esm, CellRef &ref, bool ignoreMoves, MovedCellR
adjustRefNum (ref.mRefNum, esm);
return true;
}
}
bool Cell::getNextMVRF(ESMReader &esm, MovedCellRef &mref)
{
bool Cell::getNextMVRF(ESMReader &esm, MovedCellRef &mref)
{
esm.getHT(mref.mRefNum.mIndex);
esm.getHNOT(mref.mTarget, "CNDT");
adjustRefNum (mref.mRefNum, esm);
return true;
}
}
void Cell::blank()
{

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

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

@ -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;
}
}

@ -8,16 +8,6 @@
#include "esmreader.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
{
@ -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

Loading…
Cancel
Save