Change ResourceHandle strings a bit.

This commit is contained in:
Ottermandias 2023-01-22 15:16:19 +01:00
parent 471005b5b1
commit 7ab1426a2c
3 changed files with 10 additions and 5 deletions

View file

@ -182,7 +182,7 @@ public unsafe partial class ResourceLoader
return ReadSqPackHook.Original( resourceManager, fileDescriptor, priority, isSync ); return ReadSqPackHook.Original( resourceManager, fileDescriptor, priority, isSync );
} }
if( !Utf8GamePath.FromSpan( fileDescriptor->ResourceHandle->FileNameSpan(), out var gamePath, false ) || 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 );
} }

View file

@ -3,6 +3,8 @@ using System.Runtime.InteropServices;
using FFXIVClientStructs.FFXIV.Client.System.Resource; using FFXIVClientStructs.FFXIV.Client.System.Resource;
using Penumbra.GameData; using Penumbra.GameData;
using Penumbra.GameData.Enums; using Penumbra.GameData.Enums;
using Penumbra.String;
using Penumbra.String.Classes;
namespace Penumbra.Interop.Structs; namespace Penumbra.Interop.Structs;
@ -40,7 +42,7 @@ public unsafe struct ResourceHandle
public const int SsoSize = 15; public const int SsoSize = 15;
public byte* FileName() public byte* FileNamePtr()
{ {
if( FileNameLength > SsoSize ) if( FileNameLength > SsoSize )
{ {
@ -53,8 +55,11 @@ public unsafe struct ResourceHandle
} }
} }
public ReadOnlySpan< byte > FileNameSpan() public ByteString FileName()
=> new(FileName(), FileNameLength); => ByteString.FromByteStringUnsafe( FileNamePtr(), FileNameLength, true );
public bool GamePath( out Utf8GamePath path )
=> Utf8GamePath.FromSpan( new ReadOnlySpan< byte >( FileNamePtr(), FileNameLength ), out path );
[FieldOffset( 0x00 )] [FieldOffset( 0x00 )]
public void** VTable; public void** VTable;

View file

@ -33,7 +33,7 @@ public partial class ConfigWindow
// Draw the name of a resource file. // Draw the name of a resource file.
private static unsafe void Text( ResourceHandle* resource ) private static unsafe void Text( ResourceHandle* resource )
=> Text( resource->FileName(), resource->FileNameLength ); => Text( resource->FileName().Path, resource->FileNameLength );
// Draw a ByteString as a selectable. // Draw a ByteString as a selectable.
internal static unsafe bool Selectable( ByteString s, bool selected ) internal static unsafe bool Selectable( ByteString s, bool selected )