Change resolving to consider every resource category to fix music resolving.

This commit is contained in:
Ottermandias 2023-01-22 16:39:15 +01:00
parent a9a5f91c90
commit e6d73971e9

View file

@ -133,23 +133,46 @@ public unsafe partial class ResourceLoader
}
path = path.ToLower();
if( category == ResourceCategory.Ui )
switch( category )
{
var resolved = Penumbra.CollectionManager.Interface.ResolvePath( path );
return ( resolved, Penumbra.CollectionManager.Interface.ToResolveData() );
}
if( ResolvePathCustomization != null )
{
foreach( var resolver in ResolvePathCustomization.GetInvocationList() )
// Only Interface collection.
case ResourceCategory.Ui:
{
if( ( ( ResolvePathDelegate )resolver ).Invoke( path, category, resourceType, resourceHash, out var ret ) )
{
return ret;
}
var resolved = Penumbra.CollectionManager.Interface.ResolvePath( path );
return ( resolved, Penumbra.CollectionManager.Interface.ToResolveData() );
}
}
// Never allow changing scripts.
case ResourceCategory.UiScript:
case ResourceCategory.GameScript:
return ( null, ResolveData.Invalid );
// Use actual resolving.
case ResourceCategory.Chara:
case ResourceCategory.Shader:
case ResourceCategory.Vfx:
if( ResolvePathCustomization != null )
{
foreach( var resolver in ResolvePathCustomization.GetInvocationList() )
{
if( ( ( ResolvePathDelegate )resolver ).Invoke( path, category, resourceType, resourceHash, out var ret ) )
{
return ret;
}
}
}
break;
// None of these files are ever associated with specific characters,
// always use the default resolver for now.
case ResourceCategory.Common:
case ResourceCategory.BgCommon:
case ResourceCategory.Bg:
case ResourceCategory.Cut:
case ResourceCategory.Exd:
case ResourceCategory.Music:
case ResourceCategory.Sound:
default:
break;
}
return DefaultResolver( path );
}
@ -182,7 +205,7 @@ public unsafe partial class ResourceLoader
return ReadSqPackHook.Original( resourceManager, fileDescriptor, priority, isSync );
}
if( !fileDescriptor->ResourceHandle->GamePath(out var gamePath) || gamePath.Length == 0 )
if( !fileDescriptor->ResourceHandle->GamePath( out var gamePath ) || gamePath.Length == 0 )
{
return ReadSqPackHook.Original( resourceManager, fileDescriptor, priority, isSync );
}