Files
ADOFAIRenderer/Core/FirstUpdateHook.cs
T

66 lines
1.9 KiB
C#

using ADOFAIRenderer.Localization;
using ADOFAIRenderer.UI;
using UnityEngine;
namespace ADOFAIRenderer.Core;
[DefaultExecutionOrder(int.MinValue)]
internal class FirstUpdateHook : MonoBehaviour
{
private bool _checkedFFmpeg;
private bool _checkedNvidiaDriver;
private void Update()
{
if (!_checkedFFmpeg)
{
if (FFmpegDownloadUI.Instance) return;
if (!FFmpegDownloadUI.CheckFFmpegExists())
{
FFmpegDownloadUI.ShowDownloadUI();
return;
}
_checkedFFmpeg = true;
}
if (!_checkedNvidiaDriver)
{
if (CommonWarningDialogUI.Instance) return;
_checkedNvidiaDriver = true;
CheckNvidiaDriverWarning();
}
if (RenderManager.Instance)
{
RenderManager.Instance.OnPreUpdate();
}
}
private void CheckNvidiaDriverWarning()
{
var driverVer = Util.GPUUtil.GetNvidiaDriverVersion();
if (driverVer is null or >= 610.00f) return;
var currentVersion = driverVer.Value.ToString("F2");
CommonWarningDialogUI.ShowDialog(
LocalizationManager.Get("ui.driver_warning.title"),
LocalizationManager.Get("ui.driver_warning.body", currentVersion),
new DialogButton(LocalizationManager.Get("ui.driver_warning.btn_update"), () =>
{
Application.OpenURL("https://www.nvidia.com/Download/index.aspx");
Application.Quit();
}, new Color(0.0f, 0.8f, 1.0f, 1.0f)),
new DialogButton(LocalizationManager.Get("ui.driver_warning.btn_disable"), () =>
{
RenderMod.IsFeatureDisabled = true;
}),
new DialogButton(LocalizationManager.Get("ui.driver_warning.btn_continue"), () =>
{
// ignored
})
);
}
}