Merge branch 'dont_look_at_me_im_hideous' into 'master'

Ignored flag part 2

Closes #6699

See merge request OpenMW/openmw!1782
pull/3226/head
psi29a 3 years ago
commit a0d0f60490

@ -15,6 +15,7 @@
#include <components/esm/records.hpp> #include <components/esm/records.hpp>
#include "record.hpp" #include "record.hpp"
#include "labels.hpp"
#define ESMTOOL_VERSION 1.2 #define ESMTOOL_VERSION 1.2
@ -398,7 +399,8 @@ int load(Arguments& info)
if(!quiet && interested) if(!quiet && interested)
{ {
std::cout << "\nRecord: " << n.toStringView() << " '" << record->getId() << "'\n"; std::cout << "\nRecord: " << n.toStringView() << " '" << record->getId() << "'\n"
<< "Record flags: " << recordFlags(record->getFlags()) << '\n';
record->print(); record->print();
} }

@ -902,3 +902,17 @@ std::string weaponFlags(int flags)
properties += Misc::StringUtils::format("(0x%08X)", flags); properties += Misc::StringUtils::format("(0x%08X)", flags);
return properties; return properties;
} }
std::string recordFlags(uint32_t flags)
{
std::string properties;
if (flags == 0) properties += "[None] ";
if (flags & ESM::FLAG_Deleted) properties += "Deleted ";
if (flags & ESM::FLAG_Persistent) properties += "Persistent ";
if (flags & ESM::FLAG_Ignored) properties += "Ignored ";
if (flags & ESM::FLAG_Blocked) properties += "Blocked ";
int unused = ~(ESM::FLAG_Deleted | ESM::FLAG_Persistent | ESM::FLAG_Ignored | ESM::FLAG_Blocked);
if (flags & unused) properties += "Invalid ";
properties += Misc::StringUtils::format("(0x%08X)", flags);
return properties;
}

@ -60,6 +60,8 @@ std::string raceFlags(int flags);
std::string spellFlags(int flags); std::string spellFlags(int flags);
std::string weaponFlags(int flags); std::string weaponFlags(int flags);
std::string recordFlags(uint32_t flags);
// Missing flags functions: // Missing flags functions:
// aiServicesFlags, possibly more // aiServicesFlags, possibly more

@ -196,6 +196,11 @@ namespace EsmLoader
{ {
const ESM::NAME recName = reader.getRecName(); const ESM::NAME recName = reader.getRecName();
reader.getRecHeader(); reader.getRecHeader();
if (reader.getRecordFlags() & ESM::FLAG_Ignored)
{
reader.skipRecord();
continue;
}
loadRecord(query, recName, reader, content); loadRecord(query, recName, reader, content);
} }
} }

Loading…
Cancel
Save