1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-12-13 02:13:12 +00:00

Bring ESM4 head part reading up-to-date with FO76

This commit is contained in:
Alexei Kotov 2024-01-05 18:27:33 +03:00
parent 0b63fafc6d
commit bd2ea715b4
2 changed files with 21 additions and 5 deletions

View file

@ -48,6 +48,9 @@ void ESM4::HeadPart::load(ESM4::Reader& reader)
case ESM4::SUB_EDID: case ESM4::SUB_EDID:
reader.getZString(mEditorId); reader.getZString(mEditorId);
break; break;
case ESM::fourCC("XALG"): // FO76
reader.get(mExtraFlags2);
break;
case ESM4::SUB_FULL: case ESM4::SUB_FULL:
reader.getLocalizedString(mFullName); reader.getLocalizedString(mFullName);
break; break;
@ -58,7 +61,7 @@ void ESM4::HeadPart::load(ESM4::Reader& reader)
reader.getZString(mModel); reader.getZString(mModel);
break; break;
case ESM4::SUB_HNAM: case ESM4::SUB_HNAM:
reader.getFormId(mAdditionalPart); reader.getFormId(mExtraParts.emplace_back());
break; break;
case ESM4::SUB_NAM0: // TES5 case ESM4::SUB_NAM0: // TES5
{ {
@ -87,15 +90,25 @@ void ESM4::HeadPart::load(ESM4::Reader& reader)
case ESM4::SUB_TNAM: case ESM4::SUB_TNAM:
reader.getFormId(mBaseTexture); reader.getFormId(mBaseTexture);
break; break;
case ESM4::SUB_CNAM:
reader.getFormId(mColor);
break;
case ESM4::SUB_RNAM:
reader.getFormId(mValidRaces.emplace_back());
break;
case ESM4::SUB_PNAM: case ESM4::SUB_PNAM:
reader.get(mType); reader.get(mType);
break; break;
case ESM4::SUB_MODT: // Model data case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC: case ESM4::SUB_MODC:
case ESM4::SUB_MODS: case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end case ESM4::SUB_MODF:
case ESM4::SUB_RNAM: case ESM::fourCC("ENLM"):
case ESM4::SUB_CNAM: case ESM::fourCC("XFLG"):
case ESM::fourCC("ENLT"):
case ESM::fourCC("ENLS"):
case ESM::fourCC("AUUV"):
case ESM::fourCC("MODD"): // Model data end
case ESM4::SUB_CTDA: case ESM4::SUB_CTDA:
reader.skipSubRecordData(); reader.skipSubRecordData();
break; break;

View file

@ -43,6 +43,7 @@ namespace ESM4
{ {
ESM::FormId mId; // from the header ESM::FormId mId; // from the header
std::uint32_t mFlags; // from the header, see enum type RecordFlag for details std::uint32_t mFlags; // from the header, see enum type RecordFlag for details
std::uint64_t mExtraFlags2;
std::string mEditorId; std::string mEditorId;
std::string mFullName; std::string mFullName;
@ -70,10 +71,12 @@ namespace ESM4
Type_Eyelashes = 13, Type_Eyelashes = 13,
}; };
ESM::FormId mAdditionalPart; std::vector<ESM::FormId> mExtraParts;
std::array<std::string, 3> mTriFile; std::array<std::string, 3> mTriFile;
ESM::FormId mBaseTexture; ESM::FormId mBaseTexture;
ESM::FormId mColor;
std::vector<ESM::FormId> mValidRaces;
void load(ESM4::Reader& reader); void load(ESM4::Reader& reader);
// void save(ESM4::Writer& writer) const; // void save(ESM4::Writer& writer) const;