forked from mirror/openmw-tes3mp
added project scope filter saving
This commit is contained in:
parent
6ac4dedfbe
commit
baae548106
6 changed files with 46 additions and 2 deletions
|
@ -16,6 +16,8 @@ CSMDoc::Saving::Saving (Document& document, const boost::filesystem::path& proje
|
||||||
|
|
||||||
appendStage (new WriteHeaderStage (mDocument, mState, true));
|
appendStage (new WriteHeaderStage (mDocument, mState, true));
|
||||||
|
|
||||||
|
appendStage (new WriteFilterStage (mDocument, mState, CSMFilter::Filter::Scope_Project));
|
||||||
|
|
||||||
appendStage (new CloseSaveStage (mState));
|
appendStage (new CloseSaveStage (mState));
|
||||||
|
|
||||||
// save content file
|
// save content file
|
||||||
|
|
|
@ -52,7 +52,6 @@ void CSMDoc::WriteHeaderStage::perform (int stage, std::vector<std::string>& mes
|
||||||
mState.getWriter().setAuthor ("");
|
mState.getWriter().setAuthor ("");
|
||||||
mState.getWriter().setDescription ("");
|
mState.getWriter().setDescription ("");
|
||||||
mState.getWriter().setRecordCount (0);
|
mState.getWriter().setRecordCount (0);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -96,6 +95,23 @@ void CSMDoc::WriteRefIdCollectionStage::perform (int stage, std::vector<std::str
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CSMDoc::WriteFilterStage::WriteFilterStage (Document& document, SavingState& state,
|
||||||
|
CSMFilter::Filter::Scope scope)
|
||||||
|
: WriteCollectionStage<CSMWorld::IdCollection<CSMFilter::Filter> > (document.getData().getFilters(),
|
||||||
|
state),
|
||||||
|
mDocument (document), mScope (scope)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void CSMDoc::WriteFilterStage::perform (int stage, std::vector<std::string>& messages)
|
||||||
|
{
|
||||||
|
const CSMWorld::Record<CSMFilter::Filter>& record =
|
||||||
|
mDocument.getData().getFilters().getRecord (stage);
|
||||||
|
|
||||||
|
if (record.get().mScope==mScope)
|
||||||
|
WriteCollectionStage<CSMWorld::IdCollection<CSMFilter::Filter> >::perform (stage, messages);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
CSMDoc::CloseSaveStage::CloseSaveStage (SavingState& state)
|
CSMDoc::CloseSaveStage::CloseSaveStage (SavingState& state)
|
||||||
: mState (state)
|
: mState (state)
|
||||||
{}
|
{}
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
#include "savingstate.hpp"
|
#include "savingstate.hpp"
|
||||||
|
|
||||||
#include "../world/record.hpp"
|
#include "../world/record.hpp"
|
||||||
|
#include "../world/idcollection.hpp"
|
||||||
|
|
||||||
|
#include "../filter/filter.hpp"
|
||||||
|
|
||||||
namespace CSMDoc
|
namespace CSMDoc
|
||||||
{
|
{
|
||||||
|
@ -120,6 +123,20 @@ namespace CSMDoc
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class WriteFilterStage : public WriteCollectionStage<CSMWorld::IdCollection<CSMFilter::Filter> >
|
||||||
|
{
|
||||||
|
Document& mDocument;
|
||||||
|
CSMFilter::Filter::Scope mScope;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
WriteFilterStage (Document& document, SavingState& state, CSMFilter::Filter::Scope scope);
|
||||||
|
|
||||||
|
virtual void perform (int stage, std::vector<std::string>& messages);
|
||||||
|
///< Messages resulting from this stage will be appended to \a messages.
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class CloseSaveStage : public Stage
|
class CloseSaveStage : public Stage
|
||||||
{
|
{
|
||||||
SavingState& mState;
|
SavingState& mState;
|
||||||
|
|
|
@ -36,6 +36,7 @@ struct Position
|
||||||
|
|
||||||
enum RecNameInts
|
enum RecNameInts
|
||||||
{
|
{
|
||||||
|
// format 0 / legacy
|
||||||
REC_ACTI = 0x49544341,
|
REC_ACTI = 0x49544341,
|
||||||
REC_ALCH = 0x48434c41,
|
REC_ALCH = 0x48434c41,
|
||||||
REC_APPA = 0x41505041,
|
REC_APPA = 0x41505041,
|
||||||
|
@ -80,7 +81,10 @@ enum RecNameInts
|
||||||
REC_SPEL = 0x4c455053,
|
REC_SPEL = 0x4c455053,
|
||||||
REC_SSCR = 0x52435353,
|
REC_SSCR = 0x52435353,
|
||||||
REC_STAT = 0x54415453,
|
REC_STAT = 0x54415453,
|
||||||
REC_WEAP = 0x50414557
|
REC_WEAP = 0x50414557,
|
||||||
|
|
||||||
|
// format 1
|
||||||
|
REC_FILT = 0x544C4946
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
|
|
||||||
#include "esmreader.hpp"
|
#include "esmreader.hpp"
|
||||||
#include "esmwriter.hpp"
|
#include "esmwriter.hpp"
|
||||||
|
#include "defs.hpp"
|
||||||
|
|
||||||
|
unsigned int ESM::Filter::sRecordId = REC_FILT;
|
||||||
|
|
||||||
void ESM::Filter::load (ESMReader& esm)
|
void ESM::Filter::load (ESMReader& esm)
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,6 +10,8 @@ namespace ESM
|
||||||
|
|
||||||
struct Filter
|
struct Filter
|
||||||
{
|
{
|
||||||
|
static unsigned int sRecordId;
|
||||||
|
|
||||||
std::string mId;
|
std::string mId;
|
||||||
|
|
||||||
std::string mDescription;
|
std::string mDescription;
|
||||||
|
|
Loading…
Reference in a new issue