BUTR/Bannerlord.BLSE

View on GitHub
src/Bannerlord.BLSE.Shared/Utils/SpecialKILoader.cs

Summary

Maintainability
A
1 hr
Test Coverage
using System.Diagnostics;
using System.IO;

using Windows.Win32;

namespace Bannerlord.BLSE.Shared.Utils;

internal static class SpecialKILoader
{
    private static FreeLibrarySafeHandle? _specialK;

    public static void LoadSpecialKIfNeeded()
    {
        var specialK = new FileInfo("SpecialK64.dll");
        if (specialK.Exists)
        {
            var dxgiVersionInfo = FileVersionInfo.GetVersionInfo(specialK.FullName);
            var isSpecialK = dxgiVersionInfo is { CompanyName: "The Special☆K Group", ProductName: "Special K" };
            if (!isSpecialK) return;

            _specialK = PInvoke.LoadLibrary(specialK.FullName);
        }
    }
}