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(); path = path.ToLower();
if( category == ResourceCategory.Ui ) switch( category )
{ {
var resolved = Penumbra.CollectionManager.Interface.ResolvePath( path ); // Only Interface collection.
return ( resolved, Penumbra.CollectionManager.Interface.ToResolveData() ); case ResourceCategory.Ui:
}
if( ResolvePathCustomization != null )
{
foreach( var resolver in ResolvePathCustomization.GetInvocationList() )
{ {
if( ( ( ResolvePathDelegate )resolver ).Invoke( path, category, resourceType, resourceHash, out var ret ) ) var resolved = Penumbra.CollectionManager.Interface.ResolvePath( path );
{ return ( resolved, Penumbra.CollectionManager.Interface.ToResolveData() );
return ret;
}
} }
} // 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 ); return DefaultResolver( path );
} }
@ -182,7 +205,7 @@ public unsafe partial class ResourceLoader
return ReadSqPackHook.Original( resourceManager, fileDescriptor, priority, isSync ); 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 ); return ReadSqPackHook.Original( resourceManager, fileDescriptor, priority, isSync );
} }