1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-07-21 09:14:05 +00:00

Add item icon checks to object record verifier

This commit is contained in:
Capostrophic 2018-08-25 01:44:46 +03:00
parent 34077a6987
commit dc847dce09
3 changed files with 22 additions and 5 deletions

View file

@ -1,6 +1,7 @@
#include "referenceablecheck.hpp" #include "referenceablecheck.hpp"
#include <components/misc/stringops.hpp> #include <components/misc/stringops.hpp>
#include <components/misc/resourcehelpers.hpp>
#include "../prefs/state.hpp" #include "../prefs/state.hpp"
@ -12,13 +13,15 @@ CSMTools::ReferenceableCheckStage::ReferenceableCheckStage(
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, const CSMWorld::IdCollection<ESM::Script>& scripts,
const CSMWorld::Resources& models) const CSMWorld::Resources& models,
const CSMWorld::Resources& icons)
:mObjects(referenceable), :mObjects(referenceable),
mRaces(races), mRaces(races),
mClasses(classes), mClasses(classes),
mFactions(faction), mFactions(faction),
mScripts(scripts), mScripts(scripts),
mModels(models), mModels(models),
mIcons(icons),
mPlayerPresent(false) mPlayerPresent(false)
{ {
mIgnoreBaseRecords = false; mIgnoreBaseRecords = false;
@ -953,7 +956,13 @@ template<typename Item> void CSMTools::ReferenceableCheckStage::inventoryItemChe
//checking for icon //checking for icon
if (someItem.mIcon.empty()) if (someItem.mIcon.empty())
messages.push_back (std::make_pair (someID, "Icon is missing")); // ADD CHECK HERE messages.push_back (std::make_pair (someID, "Icon is missing"));
else if (mIcons.searchId(someItem.mIcon) == -1)
{
std::string ddsIcon = someItem.mIcon;
if (!(Misc::ResourceHelpers::changeExtensionToDds(ddsIcon) && mIcons.searchId(ddsIcon) != -1))
messages.push_back(std::make_pair(someID, "Icon '" + someItem.mIcon + "' does not exist"));
}
if (enchantable && someItem.mData.mEnchant < 0) if (enchantable && someItem.mData.mEnchant < 0)
messages.push_back (std::make_pair (someID, "Enchantment points number is negative")); messages.push_back (std::make_pair (someID, "Enchantment points number is negative"));
@ -981,7 +990,13 @@ template<typename Item> void CSMTools::ReferenceableCheckStage::inventoryItemChe
//checking for icon //checking for icon
if (someItem.mIcon.empty()) if (someItem.mIcon.empty())
messages.push_back (std::make_pair (someID, "Icon is missing")); // ADD CHECK HERE messages.push_back (std::make_pair (someID, "Icon is missing"));
else if (mIcons.searchId(someItem.mIcon) == -1)
{
std::string ddsIcon = someItem.mIcon;
if (!(Misc::ResourceHelpers::changeExtensionToDds(ddsIcon) && mIcons.searchId(ddsIcon) != -1))
messages.push_back(std::make_pair(someID, "Icon '" + someItem.mIcon + "' does not exist"));
}
} }
template<typename Tool> void CSMTools::ReferenceableCheckStage::toolCheck ( template<typename Tool> void CSMTools::ReferenceableCheckStage::toolCheck (

View file

@ -18,7 +18,8 @@ namespace CSMTools
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, const CSMWorld::IdCollection<ESM::Script>& scripts,
const CSMWorld::Resources& models); const CSMWorld::Resources& models,
const CSMWorld::Resources& icons);
virtual void perform(int stage, CSMDoc::Messages& messages); virtual void perform(int stage, CSMDoc::Messages& messages);
virtual int setup(); virtual int setup();
@ -84,6 +85,7 @@ namespace CSMTools
const CSMWorld::IdCollection<ESM::Faction>& mFactions; const CSMWorld::IdCollection<ESM::Faction>& mFactions;
const CSMWorld::IdCollection<ESM::Script>& mScripts; const CSMWorld::IdCollection<ESM::Script>& mScripts;
const CSMWorld::Resources& mModels; const CSMWorld::Resources& mModels;
const CSMWorld::Resources& mIcons;
bool mPlayerPresent; bool mPlayerPresent;
bool mIgnoreBaseRecords; bool mIgnoreBaseRecords;
}; };

View file

@ -83,7 +83,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(), mData.getScripts(), mVerifierOperation->appendStage (new ReferenceableCheckStage (mData.getReferenceables().getDataSet(), mData.getRaces(), mData.getClasses(), mData.getFactions(), mData.getScripts(),
mData.getResources (CSMWorld::UniversalId::Type_Meshes))); mData.getResources (CSMWorld::UniversalId::Type_Meshes), mData.getResources (CSMWorld::UniversalId::Type_Icons)));
mVerifierOperation->appendStage (new ReferenceCheckStage(mData.getReferences(), mData.getReferenceables(), mData.getCells(), mData.getFactions())); mVerifierOperation->appendStage (new ReferenceCheckStage(mData.getReferences(), mData.getReferenceables(), mData.getCells(), mData.getFactions()));