2015-08-13 10:03:20 +00:00
|
|
|
|
|
|
|
#include "mergeoperation.hpp"
|
|
|
|
|
|
|
|
#include "../doc/state.hpp"
|
2015-08-16 13:24:48 +00:00
|
|
|
#include "../doc/document.hpp"
|
|
|
|
|
|
|
|
#include "mergestages.hpp"
|
2015-08-13 10:03:20 +00:00
|
|
|
|
2015-08-16 16:27:17 +00:00
|
|
|
CSMTools::MergeOperation::MergeOperation (CSMDoc::Document& document, ToUTF8::FromType encoding)
|
2015-08-16 13:24:48 +00:00
|
|
|
: CSMDoc::Operation (CSMDoc::State_Merging, true), mState (document)
|
2015-08-13 10:03:20 +00:00
|
|
|
{
|
2015-08-30 09:08:56 +00:00
|
|
|
appendStage (new StartMergeStage (mState));
|
|
|
|
|
2015-08-21 12:02:32 +00:00
|
|
|
appendStage (new MergeIdCollectionStage<ESM::Global> (mState, &CSMWorld::Data::getGlobals));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::GameSetting> (mState, &CSMWorld::Data::getGmsts));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::Skill> (mState, &CSMWorld::Data::getSkills));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::Class> (mState, &CSMWorld::Data::getClasses));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::Faction> (mState, &CSMWorld::Data::getFactions));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::Race> (mState, &CSMWorld::Data::getRaces));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::Sound> (mState, &CSMWorld::Data::getSounds));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::Script> (mState, &CSMWorld::Data::getScripts));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::Region> (mState, &CSMWorld::Data::getRegions));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::BirthSign> (mState, &CSMWorld::Data::getBirthsigns));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::Spell> (mState, &CSMWorld::Data::getSpells));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::Dialogue> (mState, &CSMWorld::Data::getTopics));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::Dialogue> (mState, &CSMWorld::Data::getJournals));
|
|
|
|
appendStage (new MergeIdCollectionStage<CSMWorld::Cell> (mState, &CSMWorld::Data::getCells));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::Filter> (mState, &CSMWorld::Data::getFilters));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::Enchantment> (mState, &CSMWorld::Data::getEnchantments));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::BodyPart> (mState, &CSMWorld::Data::getBodyParts));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::DebugProfile> (mState, &CSMWorld::Data::getDebugProfiles));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::SoundGenerator> (mState, &CSMWorld::Data::getSoundGens));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::MagicEffect> (mState, &CSMWorld::Data::getMagicEffects));
|
|
|
|
appendStage (new MergeIdCollectionStage<ESM::StartScript> (mState, &CSMWorld::Data::getStartScripts));
|
2015-08-23 10:58:49 +00:00
|
|
|
appendStage (new MergeIdCollectionStage<CSMWorld::Pathgrid, CSMWorld::SubCellCollection<CSMWorld::Pathgrid> > (mState, &CSMWorld::Data::getPathgrids));
|
|
|
|
appendStage (new MergeIdCollectionStage<CSMWorld::Info, CSMWorld::InfoCollection> (mState, &CSMWorld::Data::getTopicInfos));
|
|
|
|
appendStage (new MergeIdCollectionStage<CSMWorld::Info, CSMWorld::InfoCollection> (mState, &CSMWorld::Data::getJournalInfos));
|
2015-08-25 09:54:16 +00:00
|
|
|
appendStage (new MergeRefIdsStage (mState));
|
2015-08-26 15:21:24 +00:00
|
|
|
appendStage (new MergeReferencesStage (mState));
|
2015-08-30 12:27:22 +00:00
|
|
|
appendStage (new MergeReferencesStage (mState));
|
2017-10-14 15:32:42 +00:00
|
|
|
appendStage (new PopulateLandTexturesMergeStage (mState));
|
2015-09-03 14:15:00 +00:00
|
|
|
appendStage (new MergeLandStage (mState));
|
2017-10-14 15:32:42 +00:00
|
|
|
appendStage (new FixLandsAndLandTexturesMergeStage (mState));
|
2017-10-14 17:18:31 +00:00
|
|
|
appendStage (new CleanupLandTexturesMergeStage (mState));
|
2015-08-21 12:02:32 +00:00
|
|
|
|
2015-08-30 09:08:56 +00:00
|
|
|
appendStage (new FinishMergedDocumentStage (mState, encoding));
|
2015-08-16 13:24:48 +00:00
|
|
|
}
|
2015-08-13 10:03:20 +00:00
|
|
|
|
2017-04-28 15:30:26 +00:00
|
|
|
void CSMTools::MergeOperation::setTarget (std::unique_ptr<CSMDoc::Document> document)
|
2015-08-16 13:24:48 +00:00
|
|
|
{
|
2017-04-28 15:30:26 +00:00
|
|
|
mState.mTarget = std::move(document);
|
2015-08-13 10:03:20 +00:00
|
|
|
}
|
|
|
|
|
2015-08-16 13:24:48 +00:00
|
|
|
void CSMTools::MergeOperation::operationDone()
|
2015-08-13 10:03:20 +00:00
|
|
|
{
|
2015-08-16 13:24:48 +00:00
|
|
|
CSMDoc::Operation::operationDone();
|
2015-08-13 10:03:20 +00:00
|
|
|
|
2015-08-16 13:24:48 +00:00
|
|
|
if (mState.mCompleted)
|
|
|
|
emit mergeDone (mState.mTarget.release());
|
2015-08-13 10:03:20 +00:00
|
|
|
}
|