2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 13:47:43 +00:00

Much more reliable CMDL with CINF/CSKR extract

This commit is contained in:
Jack Andersen
2015-09-05 19:34:30 -10:00
parent 4ede471d1e
commit cf7836fc9a
14 changed files with 151 additions and 82 deletions

View File

@@ -197,6 +197,21 @@ void PAKBridge::build()
}
}
void PAKBridge::addCMDLRigPairs(std::unordered_map<UniqueID32, std::pair<UniqueID32, UniqueID32>>& addTo) const
{
for (const std::pair<UniqueID32, DNAMP1::PAK::Entry*>& entry : m_pak.m_idMap)
{
if (entry.second->type == FOURCC('ANCS'))
{
PAKEntryReadStream rs = entry.second->beginReadStream(m_node);
ANCS ancs;
ancs.read(rs);
for (const ANCS::CharacterSet::CharacterInfo& ci : ancs.characterSet.characters)
addTo[ci.cmdl] = std::make_pair(ci.cskr, ci.cinf);
}
}
}
ResExtractor<PAKBridge> PAKBridge::LookupExtractor(const DNAMP1::PAK::Entry& entry)
{
switch (entry.type)
@@ -206,9 +221,9 @@ ResExtractor<PAKBridge> PAKBridge::LookupExtractor(const DNAMP1::PAK::Entry& ent
case SBIG('TXTR'):
return {TXTR::Extract, nullptr, {_S(".png")}};
case SBIG('CMDL'):
return {nullptr, CMDL::Extract, {_S(".blend")}, 2};
return {nullptr, CMDL::Extract, {_S(".blend")}, 1};
case SBIG('ANCS'):
return {nullptr, ANCS::Extract, {_S(".yaml"), _S(".blend")}, 1};
return {nullptr, ANCS::Extract, {_S(".yaml"), _S(".blend")}, 2};
}
return {};
}