mirror of https://github.com/AxioDL/metaforce.git
Glob path extract fix
This commit is contained in:
parent
7f987ab10e
commit
ae4f770ca2
|
@ -523,7 +523,7 @@ bool PAKRouter<BRIDGETYPE>::extractResources(const BRIDGETYPE& pakBridge, bool f
|
||||||
|
|
||||||
if (extractor.func_a) /* Doesn't need PAKRouter access */
|
if (extractor.func_a) /* Doesn't need PAKRouter access */
|
||||||
{
|
{
|
||||||
if (force || working.isNone())
|
if (force || !extractor.IsFullyExtracted(working))
|
||||||
{
|
{
|
||||||
PAKEntryReadStream s = item->beginReadStream(*node);
|
PAKEntryReadStream s = item->beginReadStream(*node);
|
||||||
extractor.func_a(s, working);
|
extractor.func_a(s, working);
|
||||||
|
@ -531,7 +531,7 @@ bool PAKRouter<BRIDGETYPE>::extractResources(const BRIDGETYPE& pakBridge, bool f
|
||||||
}
|
}
|
||||||
else if (extractor.func_b) /* Needs PAKRouter access */
|
else if (extractor.func_b) /* Needs PAKRouter access */
|
||||||
{
|
{
|
||||||
if (force || working.isNone())
|
if (force || !extractor.IsFullyExtracted(working))
|
||||||
{
|
{
|
||||||
PAKEntryReadStream s = item->beginReadStream(*node);
|
PAKEntryReadStream s = item->beginReadStream(*node);
|
||||||
extractor.func_b(m_dataSpec, s, working, *this, *item, force, btok,
|
extractor.func_b(m_dataSpec, s, working, *this, *item, force, btok,
|
||||||
|
|
|
@ -105,6 +105,25 @@ struct ResExtractor
|
||||||
std::function<void(const SpecBase&, PAKEntryReadStream&, PAKRouter<PAKBRIDGE>&,
|
std::function<void(const SpecBase&, PAKEntryReadStream&, PAKRouter<PAKBRIDGE>&,
|
||||||
typename PAKBRIDGE::PAKType::Entry&)> nfunc={})
|
typename PAKBRIDGE::PAKType::Entry&)> nfunc={})
|
||||||
: func_b(std::move(func)), fileExts(std::move(fileExtsIn)), weight(weightin), func_name(std::move(nfunc)) {}
|
: func_b(std::move(func)), fileExts(std::move(fileExtsIn)), weight(weightin), func_name(std::move(nfunc)) {}
|
||||||
|
|
||||||
|
bool IsFullyExtracted(const hecl::ProjectPath& path) const
|
||||||
|
{
|
||||||
|
hecl::ProjectPath::Type tp = path.getPathType();
|
||||||
|
if (tp == hecl::ProjectPath::Type::None)
|
||||||
|
return false;
|
||||||
|
else if (tp == hecl::ProjectPath::Type::Glob)
|
||||||
|
{
|
||||||
|
for (int i=0 ; i<6 ; ++i)
|
||||||
|
{
|
||||||
|
if (!fileExts[i])
|
||||||
|
break;
|
||||||
|
hecl::ProjectPath withExt = path.getWithExtension(fileExts[i], true);
|
||||||
|
if (withExt.isNone())
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Level hierarchy representation */
|
/** Level hierarchy representation */
|
||||||
|
|
Loading…
Reference in New Issue