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,12 +133,22 @@ public unsafe partial class ResourceLoader
} }
path = path.ToLower(); path = path.ToLower();
if( category == ResourceCategory.Ui ) switch( category )
{
// Only Interface collection.
case ResourceCategory.Ui:
{ {
var resolved = Penumbra.CollectionManager.Interface.ResolvePath( path ); var resolved = Penumbra.CollectionManager.Interface.ResolvePath( path );
return ( resolved, Penumbra.CollectionManager.Interface.ToResolveData() ); 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 ) if( ResolvePathCustomization != null )
{ {
foreach( var resolver in ResolvePathCustomization.GetInvocationList() ) foreach( var resolver in ResolvePathCustomization.GetInvocationList() )
@ -150,6 +160,19 @@ public unsafe partial class ResourceLoader
} }
} }
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 );
} }