Merge branch 'master' into Plugin-Installer

This commit is contained in:
Jerric 2026-02-22 17:59:45 -05:00 committed by GitHub
commit f28d40f6ae
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 18 additions and 16 deletions

View file

@ -6,7 +6,7 @@
<PropertyGroup Label="Feature"> <PropertyGroup Label="Feature">
<Description>XIV Launcher addon framework</Description> <Description>XIV Launcher addon framework</Description>
<DalamudVersion>14.0.2.1</DalamudVersion> <DalamudVersion>14.0.2.2</DalamudVersion>
<AssemblyVersion>$(DalamudVersion)</AssemblyVersion> <AssemblyVersion>$(DalamudVersion)</AssemblyVersion>
<Version>$(DalamudVersion)</Version> <Version>$(DalamudVersion)</Version>
<FileVersion>$(DalamudVersion)</FileVersion> <FileVersion>$(DalamudVersion)</FileVersion>

View file

@ -3,6 +3,7 @@ using System.Reflection;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using Dalamud.Configuration.Internal;
using Dalamud.Game; using Dalamud.Game;
using Dalamud.Logging.Internal; using Dalamud.Logging.Internal;
@ -65,6 +66,13 @@ internal static class HookVerifier
/// <exception cref="HookVerificationException">Exception thrown when we think the hook is not correctly declared.</exception> /// <exception cref="HookVerificationException">Exception thrown when we think the hook is not correctly declared.</exception>
public static void Verify<T>(IntPtr address) where T : Delegate public static void Verify<T>(IntPtr address) where T : Delegate
{ {
// API15 TODO: Always throw
var config = Service<DalamudConfiguration>.GetNullable();
if (config != null && config.DevPluginLoadLocations.Count == 0)
{
return;
}
var entry = ToVerify.FirstOrDefault(x => x.Address == address); var entry = ToVerify.FirstOrDefault(x => x.Address == address);
// Nothing to verify for this hook? // Nothing to verify for this hook?
@ -121,7 +129,7 @@ internal static class HookVerifier
return sameType || SizeOf(paramLeft, isMarshaled) == SizeOf(paramRight, false); return sameType || SizeOf(paramLeft, isMarshaled) == SizeOf(paramRight, false);
} }
private static int SizeOf(Type type, bool isMarshaled) private static int SizeOf(Type type, bool isMarshaled)
{ {
return type switch { return type switch {
_ when type == typeof(sbyte) || type == typeof(byte) || (type == typeof(bool) && !isMarshaled) => 1, _ when type == typeof(sbyte) || type == typeof(byte) || (type == typeof(bool) && !isMarshaled) => 1,
@ -137,19 +145,19 @@ internal static class HookVerifier
}; };
} }
private static int GetSizeOf(Type type) private static int GetSizeOf(Type type)
{ {
try try
{ {
return Marshal.SizeOf(Activator.CreateInstance(type)!); return Marshal.SizeOf(Activator.CreateInstance(type)!);
} }
catch catch
{ {
return 0; return 0;
} }
} }
private static bool IsStruct(Type type) private static bool IsStruct(Type type)
{ {
return type != typeof(decimal) && type is { IsValueType: true, IsPrimitive: false, IsEnum: false }; return type != typeof(decimal) && type is { IsValueType: true, IsPrimitive: false, IsEnum: false };
} }

View file

@ -297,17 +297,11 @@ internal unsafe partial class ImageNodeTree : ResNodeTree
} }
this.TexType = asset->AtkTexture.TextureType; this.TexType = asset->AtkTexture.TextureType;
this.Texture = asset->AtkTexture.IsTextureReady() ? asset->AtkTexture.GetKernelTexture() : null;
if (this.TexType == Resource) if (this.TexType == Resource && asset->AtkTexture.Resource != null && asset->AtkTexture.Resource->TexFileResourceHandle != null)
{ {
var resource = asset->AtkTexture.Resource; this.Path = asset->AtkTexture.Resource->TexFileResourceHandle->ResourceHandle.FileName.ToString();
this.Texture = resource->KernelTextureObject;
this.Path = Marshal.PtrToStringAnsi(new(resource->TexFileResourceHandle->ResourceHandle.FileName.BufferPtr));
}
else
{
this.Texture = this.TexType == KernelTexture ? asset->AtkTexture.KernelTexture : null;
this.Path = null;
} }
this.HiRes = this.Path?.Contains("_hr1") ?? false; this.HiRes = this.Path?.Contains("_hr1") ?? false;