mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-19 22:53:50 +00:00
Object verifier check to see if the script used by that object actually exists. Should resolve Bug #2582.
This commit is contained in:
parent
b7044ac119
commit
6966555377
3 changed files with 93 additions and 24 deletions
|
@ -8,12 +8,14 @@
|
||||||
CSMTools::ReferenceableCheckStage::ReferenceableCheckStage(
|
CSMTools::ReferenceableCheckStage::ReferenceableCheckStage(
|
||||||
const CSMWorld::RefIdData& referenceable, const CSMWorld::IdCollection<ESM::Race >& races,
|
const CSMWorld::RefIdData& referenceable, const CSMWorld::IdCollection<ESM::Race >& races,
|
||||||
const CSMWorld::IdCollection<ESM::Class>& classes,
|
const CSMWorld::IdCollection<ESM::Class>& classes,
|
||||||
const CSMWorld::IdCollection<ESM::Faction>& faction)
|
const CSMWorld::IdCollection<ESM::Faction>& faction,
|
||||||
|
const CSMWorld::IdCollection<ESM::Script>& scripts)
|
||||||
:
|
:
|
||||||
mReferencables(referenceable),
|
mReferencables(referenceable),
|
||||||
mRaces(races),
|
mRaces(races),
|
||||||
mClasses(classes),
|
mClasses(classes),
|
||||||
mFactions(faction),
|
mFactions(faction),
|
||||||
|
mScripts(scripts),
|
||||||
mPlayerPresent(false)
|
mPlayerPresent(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -245,6 +247,9 @@ void CSMTools::ReferenceableCheckStage::bookCheck(
|
||||||
CSMWorld::UniversalId id(CSMWorld::UniversalId::Type_Book, book.mId);
|
CSMWorld::UniversalId id(CSMWorld::UniversalId::Type_Book, book.mId);
|
||||||
|
|
||||||
inventoryItemCheck<ESM::Book>(book, messages, id.toString(), true);
|
inventoryItemCheck<ESM::Book>(book, messages, id.toString(), true);
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Book>(book, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::activatorCheck(
|
void CSMTools::ReferenceableCheckStage::activatorCheck(
|
||||||
|
@ -265,6 +270,9 @@ void CSMTools::ReferenceableCheckStage::activatorCheck(
|
||||||
//Checking for model, IIRC all activators should have a model
|
//Checking for model, IIRC all activators should have a model
|
||||||
if (activator.mModel.empty())
|
if (activator.mModel.empty())
|
||||||
messages.push_back (std::make_pair (id, activator.mId + " has no model"));
|
messages.push_back (std::make_pair (id, activator.mId + " has no model"));
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Activator>(activator, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::potionCheck(
|
void CSMTools::ReferenceableCheckStage::potionCheck(
|
||||||
|
@ -284,6 +292,9 @@ void CSMTools::ReferenceableCheckStage::potionCheck(
|
||||||
|
|
||||||
inventoryItemCheck<ESM::Potion>(potion, messages, id.toString());
|
inventoryItemCheck<ESM::Potion>(potion, messages, id.toString());
|
||||||
//IIRC potion can have empty effects list just fine.
|
//IIRC potion can have empty effects list just fine.
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Potion>(potion, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -305,6 +316,9 @@ void CSMTools::ReferenceableCheckStage::apparatusCheck(
|
||||||
inventoryItemCheck<ESM::Apparatus>(apparatus, messages, id.toString());
|
inventoryItemCheck<ESM::Apparatus>(apparatus, messages, id.toString());
|
||||||
|
|
||||||
toolCheck<ESM::Apparatus>(apparatus, messages, id.toString());
|
toolCheck<ESM::Apparatus>(apparatus, messages, id.toString());
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Apparatus>(apparatus, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::armorCheck(
|
void CSMTools::ReferenceableCheckStage::armorCheck(
|
||||||
|
@ -331,6 +345,9 @@ void CSMTools::ReferenceableCheckStage::armorCheck(
|
||||||
//checking for health. Only positive numbers are allowed, or 0 is illegal
|
//checking for health. Only positive numbers are allowed, or 0 is illegal
|
||||||
if (armor.mData.mHealth <= 0)
|
if (armor.mData.mHealth <= 0)
|
||||||
messages.push_back (std::make_pair (id, armor.mId + " has non positive health"));
|
messages.push_back (std::make_pair (id, armor.mId + " has non positive health"));
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Armor>(armor, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::clothingCheck(
|
void CSMTools::ReferenceableCheckStage::clothingCheck(
|
||||||
|
@ -348,6 +365,9 @@ void CSMTools::ReferenceableCheckStage::clothingCheck(
|
||||||
const ESM::Clothing& clothing = (dynamic_cast<const CSMWorld::Record<ESM::Clothing>& >(baseRecord)).get();
|
const ESM::Clothing& clothing = (dynamic_cast<const CSMWorld::Record<ESM::Clothing>& >(baseRecord)).get();
|
||||||
CSMWorld::UniversalId id(CSMWorld::UniversalId::Type_Clothing, clothing.mId);
|
CSMWorld::UniversalId id(CSMWorld::UniversalId::Type_Clothing, clothing.mId);
|
||||||
inventoryItemCheck<ESM::Clothing>(clothing, messages, id.toString(), true);
|
inventoryItemCheck<ESM::Clothing>(clothing, messages, id.toString(), true);
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Clothing>(clothing, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::containerCheck(
|
void CSMTools::ReferenceableCheckStage::containerCheck(
|
||||||
|
@ -377,6 +397,9 @@ void CSMTools::ReferenceableCheckStage::containerCheck(
|
||||||
//checking for name
|
//checking for name
|
||||||
if (container.mName.empty())
|
if (container.mName.empty())
|
||||||
messages.push_back (std::make_pair (id, container.mId + " has an empty name"));
|
messages.push_back (std::make_pair (id, container.mId + " has an empty name"));
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Container>(container, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::creatureCheck (
|
void CSMTools::ReferenceableCheckStage::creatureCheck (
|
||||||
|
@ -444,6 +467,9 @@ void CSMTools::ReferenceableCheckStage::creatureCheck (
|
||||||
//TODO, find meaning of other values
|
//TODO, find meaning of other values
|
||||||
if (creature.mData.mGold < 0) //It seems that this is for gold in merchant creatures
|
if (creature.mData.mGold < 0) //It seems that this is for gold in merchant creatures
|
||||||
messages.push_back (std::make_pair (id, creature.mId + " has negative gold "));
|
messages.push_back (std::make_pair (id, creature.mId + " has negative gold "));
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Creature>(creature, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::doorCheck(
|
void CSMTools::ReferenceableCheckStage::doorCheck(
|
||||||
|
@ -455,15 +481,18 @@ void CSMTools::ReferenceableCheckStage::doorCheck(
|
||||||
if (baseRecord.isDeleted())
|
if (baseRecord.isDeleted())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const ESM::Door& Door = (dynamic_cast<const CSMWorld::Record<ESM::Door>&>(baseRecord)).get();
|
const ESM::Door& door = (dynamic_cast<const CSMWorld::Record<ESM::Door>&>(baseRecord)).get();
|
||||||
CSMWorld::UniversalId id(CSMWorld::UniversalId::Type_Door, Door.mId);
|
CSMWorld::UniversalId id(CSMWorld::UniversalId::Type_Door, door.mId);
|
||||||
|
|
||||||
//usual, name or model
|
//usual, name or model
|
||||||
if (Door.mName.empty())
|
if (door.mName.empty())
|
||||||
messages.push_back (std::make_pair (id, Door.mId + " has an empty name"));
|
messages.push_back (std::make_pair (id, door.mId + " has an empty name"));
|
||||||
|
|
||||||
if (Door.mModel.empty())
|
if (door.mModel.empty())
|
||||||
messages.push_back (std::make_pair (id, Door.mId + " has no model"));
|
messages.push_back (std::make_pair (id, door.mId + " has no model"));
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Door>(door, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::ingredientCheck(
|
void CSMTools::ReferenceableCheckStage::ingredientCheck(
|
||||||
|
@ -478,10 +507,13 @@ void CSMTools::ReferenceableCheckStage::ingredientCheck(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ESM::Ingredient& Ingredient = (dynamic_cast<const CSMWorld::Record<ESM::Ingredient>& >(baseRecord)).get();
|
const ESM::Ingredient& ingredient = (dynamic_cast<const CSMWorld::Record<ESM::Ingredient>& >(baseRecord)).get();
|
||||||
CSMWorld::UniversalId id(CSMWorld::UniversalId::Type_Ingredient, Ingredient.mId);
|
CSMWorld::UniversalId id(CSMWorld::UniversalId::Type_Ingredient, ingredient.mId);
|
||||||
|
|
||||||
inventoryItemCheck<ESM::Ingredient>(Ingredient, messages, id.toString());
|
inventoryItemCheck<ESM::Ingredient>(ingredient, messages, id.toString());
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Ingredient>(ingredient, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::creaturesLevListCheck(
|
void CSMTools::ReferenceableCheckStage::creaturesLevListCheck(
|
||||||
|
@ -542,6 +574,9 @@ void CSMTools::ReferenceableCheckStage::lightCheck(
|
||||||
if (light.mData.mTime == 0)
|
if (light.mData.mTime == 0)
|
||||||
messages.push_back (std::make_pair (id, light.mId + " has zero duration"));
|
messages.push_back (std::make_pair (id, light.mId + " has zero duration"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Light>(light, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::lockpickCheck(
|
void CSMTools::ReferenceableCheckStage::lockpickCheck(
|
||||||
|
@ -562,6 +597,9 @@ void CSMTools::ReferenceableCheckStage::lockpickCheck(
|
||||||
inventoryItemCheck<ESM::Lockpick>(lockpick, messages, id.toString());
|
inventoryItemCheck<ESM::Lockpick>(lockpick, messages, id.toString());
|
||||||
|
|
||||||
toolCheck<ESM::Lockpick>(lockpick, messages, id.toString(), true);
|
toolCheck<ESM::Lockpick>(lockpick, messages, id.toString(), true);
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Lockpick>(lockpick, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::miscCheck(
|
void CSMTools::ReferenceableCheckStage::miscCheck(
|
||||||
|
@ -580,6 +618,9 @@ void CSMTools::ReferenceableCheckStage::miscCheck(
|
||||||
CSMWorld::UniversalId id(CSMWorld::UniversalId::Type_Miscellaneous, miscellaneous.mId);
|
CSMWorld::UniversalId id(CSMWorld::UniversalId::Type_Miscellaneous, miscellaneous.mId);
|
||||||
|
|
||||||
inventoryItemCheck<ESM::Miscellaneous>(miscellaneous, messages, id.toString());
|
inventoryItemCheck<ESM::Miscellaneous>(miscellaneous, messages, id.toString());
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Miscellaneous>(miscellaneous, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::npcCheck (
|
void CSMTools::ReferenceableCheckStage::npcCheck (
|
||||||
|
@ -697,6 +738,9 @@ void CSMTools::ReferenceableCheckStage::npcCheck (
|
||||||
messages.push_back (std::make_pair (id, npc.mId + " has no hair"));
|
messages.push_back (std::make_pair (id, npc.mId + " has no hair"));
|
||||||
|
|
||||||
//TODO: reputation, Disposition, rank, everything else
|
//TODO: reputation, Disposition, rank, everything else
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::NPC>(npc, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::weaponCheck(
|
void CSMTools::ReferenceableCheckStage::weaponCheck(
|
||||||
|
@ -773,6 +817,9 @@ void CSMTools::ReferenceableCheckStage::weaponCheck(
|
||||||
messages.push_back (std::make_pair (id, weapon.mId + " has negative reach"));
|
messages.push_back (std::make_pair (id, weapon.mId + " has negative reach"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Weapon>(weapon, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::probeCheck(
|
void CSMTools::ReferenceableCheckStage::probeCheck(
|
||||||
|
@ -792,6 +839,9 @@ void CSMTools::ReferenceableCheckStage::probeCheck(
|
||||||
|
|
||||||
inventoryItemCheck<ESM::Probe>(probe, messages, id.toString());
|
inventoryItemCheck<ESM::Probe>(probe, messages, id.toString());
|
||||||
toolCheck<ESM::Probe>(probe, messages, id.toString(), true);
|
toolCheck<ESM::Probe>(probe, messages, id.toString(), true);
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Probe>(probe, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::repairCheck (
|
void CSMTools::ReferenceableCheckStage::repairCheck (
|
||||||
|
@ -808,6 +858,9 @@ void CSMTools::ReferenceableCheckStage::repairCheck (
|
||||||
|
|
||||||
inventoryItemCheck<ESM::Repair> (repair, messages, id.toString());
|
inventoryItemCheck<ESM::Repair> (repair, messages, id.toString());
|
||||||
toolCheck<ESM::Repair> (repair, messages, id.toString(), true);
|
toolCheck<ESM::Repair> (repair, messages, id.toString(), true);
|
||||||
|
|
||||||
|
// Check that mentioned scripts exist
|
||||||
|
scriptCheck<ESM::Repair>(repair, messages, id.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::staticCheck (
|
void CSMTools::ReferenceableCheckStage::staticCheck (
|
||||||
|
@ -919,3 +972,13 @@ template<typename List> void CSMTools::ReferenceableCheckStage::listCheck (
|
||||||
someList.mId + " contains item with non-positive level"));
|
someList.mId + " contains item with non-positive level"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename Tool> void CSMTools::ReferenceableCheckStage::scriptCheck (
|
||||||
|
const Tool& someTool, CSMDoc::Messages& messages, const std::string& someID)
|
||||||
|
{
|
||||||
|
if (!someTool.mScript.empty())
|
||||||
|
{
|
||||||
|
if (mScripts.searchId(someTool.mScript) == -1)
|
||||||
|
messages.push_back (std::make_pair (someID, someTool.mId + " refers to an unknown script \""+someTool.mScript+"\""));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -15,7 +15,8 @@ namespace CSMTools
|
||||||
ReferenceableCheckStage (const CSMWorld::RefIdData& referenceable,
|
ReferenceableCheckStage (const CSMWorld::RefIdData& referenceable,
|
||||||
const CSMWorld::IdCollection<ESM::Race>& races,
|
const CSMWorld::IdCollection<ESM::Race>& races,
|
||||||
const CSMWorld::IdCollection<ESM::Class>& classes,
|
const CSMWorld::IdCollection<ESM::Class>& classes,
|
||||||
const CSMWorld::IdCollection<ESM::Faction>& factions);
|
const CSMWorld::IdCollection<ESM::Faction>& factions,
|
||||||
|
const CSMWorld::IdCollection<ESM::Script>& scripts);
|
||||||
|
|
||||||
virtual void perform(int stage, CSMDoc::Messages& messages);
|
virtual void perform(int stage, CSMDoc::Messages& messages);
|
||||||
virtual int setup();
|
virtual int setup();
|
||||||
|
@ -46,26 +47,30 @@ namespace CSMTools
|
||||||
//FINAL CHECK
|
//FINAL CHECK
|
||||||
void finalCheck (CSMDoc::Messages& messages);
|
void finalCheck (CSMDoc::Messages& messages);
|
||||||
|
|
||||||
//TEMPLATE CHECKS
|
//TEMPLATE CHECKS
|
||||||
template<typename ITEM> void inventoryItemCheck(const ITEM& someItem,
|
template<typename ITEM> void inventoryItemCheck(const ITEM& someItem,
|
||||||
CSMDoc::Messages& messages,
|
CSMDoc::Messages& messages,
|
||||||
const std::string& someID,
|
const std::string& someID,
|
||||||
bool enchantable); //for all enchantable items.
|
bool enchantable); //for all enchantable items.
|
||||||
|
|
||||||
template<typename ITEM> void inventoryItemCheck(const ITEM& someItem,
|
template<typename ITEM> void inventoryItemCheck(const ITEM& someItem,
|
||||||
CSMDoc::Messages& messages,
|
CSMDoc::Messages& messages,
|
||||||
const std::string& someID); //for non-enchantable items.
|
const std::string& someID); //for non-enchantable items.
|
||||||
|
|
||||||
template<typename TOOL> void toolCheck(const TOOL& someTool,
|
template<typename TOOL> void toolCheck(const TOOL& someTool,
|
||||||
CSMDoc::Messages& messages,
|
CSMDoc::Messages& messages,
|
||||||
const std::string& someID,
|
const std::string& someID,
|
||||||
bool canbebroken); //for tools with uses.
|
bool canbebroken); //for tools with uses.
|
||||||
|
|
||||||
template<typename TOOL> void toolCheck(const TOOL& someTool,
|
template<typename TOOL> void toolCheck(const TOOL& someTool,
|
||||||
CSMDoc::Messages& messages,
|
CSMDoc::Messages& messages,
|
||||||
const std::string& someID); //for tools without uses.
|
const std::string& someID); //for tools without uses.
|
||||||
|
|
||||||
template<typename LIST> void listCheck(const LIST& someList,
|
template<typename LIST> void listCheck(const LIST& someList,
|
||||||
|
CSMDoc::Messages& messages,
|
||||||
|
const std::string& someID);
|
||||||
|
|
||||||
|
template<typename TOOL> void scriptCheck(const TOOL& someTool,
|
||||||
CSMDoc::Messages& messages,
|
CSMDoc::Messages& messages,
|
||||||
const std::string& someID);
|
const std::string& someID);
|
||||||
|
|
||||||
|
@ -73,6 +78,7 @@ namespace CSMTools
|
||||||
const CSMWorld::IdCollection<ESM::Race>& mRaces;
|
const CSMWorld::IdCollection<ESM::Race>& mRaces;
|
||||||
const CSMWorld::IdCollection<ESM::Class>& mClasses;
|
const CSMWorld::IdCollection<ESM::Class>& mClasses;
|
||||||
const CSMWorld::IdCollection<ESM::Faction>& mFactions;
|
const CSMWorld::IdCollection<ESM::Faction>& mFactions;
|
||||||
|
const CSMWorld::IdCollection<ESM::Script>& mScripts;
|
||||||
bool mPlayerPresent;
|
bool mPlayerPresent;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,7 +81,7 @@ CSMDoc::OperationHolder *CSMTools::Tools::getVerifier()
|
||||||
|
|
||||||
mVerifierOperation->appendStage (new SpellCheckStage (mData.getSpells()));
|
mVerifierOperation->appendStage (new SpellCheckStage (mData.getSpells()));
|
||||||
|
|
||||||
mVerifierOperation->appendStage (new ReferenceableCheckStage (mData.getReferenceables().getDataSet(), mData.getRaces(), mData.getClasses(), mData.getFactions()));
|
mVerifierOperation->appendStage (new ReferenceableCheckStage (mData.getReferenceables().getDataSet(), mData.getRaces(), mData.getClasses(), mData.getFactions(), mData.getScripts()));
|
||||||
|
|
||||||
mVerifierOperation->appendStage (new ReferenceCheckStage(mData.getReferences(), mData.getReferenceables(), mData.getCells(), mData.getFactions()));
|
mVerifierOperation->appendStage (new ReferenceCheckStage(mData.getReferences(), mData.getReferenceables(), mData.getCells(), mData.getFactions()));
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ CSMTools::Tools::Tools (CSMDoc::Document& document)
|
||||||
connect (&mSearch, SIGNAL (done (int, bool)), this, SIGNAL (done (int, bool)));
|
connect (&mSearch, SIGNAL (done (int, bool)), this, SIGNAL (done (int, bool)));
|
||||||
connect (&mSearch,
|
connect (&mSearch,
|
||||||
SIGNAL (reportMessage (const CSMWorld::UniversalId&, const std::string&, const std::string&, int)),
|
SIGNAL (reportMessage (const CSMWorld::UniversalId&, const std::string&, const std::string&, int)),
|
||||||
this, SLOT (verifierMessage (const CSMWorld::UniversalId&, const std::string&, const std::string&, int)));
|
this, SLOT (verifierMessage (const CSMWorld::UniversalId&, const std::string&, const std::string&, int)));
|
||||||
}
|
}
|
||||||
|
|
||||||
CSMTools::Tools::~Tools()
|
CSMTools::Tools::~Tools()
|
||||||
|
@ -130,7 +130,7 @@ CSMTools::Tools::~Tools()
|
||||||
mSearch.abortAndWait();
|
mSearch.abortAndWait();
|
||||||
delete mSearchOperation;
|
delete mSearchOperation;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (std::map<int, ReportModel *>::iterator iter (mReports.begin()); iter!=mReports.end(); ++iter)
|
for (std::map<int, ReportModel *>::iterator iter (mReports.begin()); iter!=mReports.end(); ++iter)
|
||||||
delete iter->second;
|
delete iter->second;
|
||||||
}
|
}
|
||||||
|
@ -149,7 +149,7 @@ CSMWorld::UniversalId CSMTools::Tools::newSearch()
|
||||||
{
|
{
|
||||||
mReports.insert (std::make_pair (mNextReportNumber++, new ReportModel (true)));
|
mReports.insert (std::make_pair (mNextReportNumber++, new ReportModel (true)));
|
||||||
|
|
||||||
return CSMWorld::UniversalId (CSMWorld::UniversalId::Type_Search, mNextReportNumber-1);
|
return CSMWorld::UniversalId (CSMWorld::UniversalId::Type_Search, mNextReportNumber-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::Tools::runSearch (const CSMWorld::UniversalId& searchId, const Search& search)
|
void CSMTools::Tools::runSearch (const CSMWorld::UniversalId& searchId, const Search& search)
|
||||||
|
@ -159,11 +159,11 @@ void CSMTools::Tools::runSearch (const CSMWorld::UniversalId& searchId, const Se
|
||||||
if (!mSearchOperation)
|
if (!mSearchOperation)
|
||||||
{
|
{
|
||||||
mSearchOperation = new SearchOperation (mDocument);
|
mSearchOperation = new SearchOperation (mDocument);
|
||||||
mSearch.setOperation (mSearchOperation);
|
mSearch.setOperation (mSearchOperation);
|
||||||
}
|
}
|
||||||
|
|
||||||
mSearchOperation->configure (search);
|
mSearchOperation->configure (search);
|
||||||
|
|
||||||
mSearch.start();
|
mSearch.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ CSMTools::ReportModel *CSMTools::Tools::getReport (const CSMWorld::UniversalId&
|
||||||
id.getType()!=CSMWorld::UniversalId::Type_LoadErrorLog &&
|
id.getType()!=CSMWorld::UniversalId::Type_LoadErrorLog &&
|
||||||
id.getType()!=CSMWorld::UniversalId::Type_Search)
|
id.getType()!=CSMWorld::UniversalId::Type_Search)
|
||||||
throw std::logic_error ("invalid request for report model: " + id.toString());
|
throw std::logic_error ("invalid request for report model: " + id.toString());
|
||||||
|
|
||||||
return mReports.at (id.getIndex());
|
return mReports.at (id.getIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue