mirror of
https://github.com/goatcorp/Dalamud.git
synced 2026-02-25 22:21:49 +01:00
Merge branch 'master' into Plugin-Installer-Plus-RepoFilter
This commit is contained in:
commit
fadbb406f2
3 changed files with 18 additions and 16 deletions
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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 };
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue