From 8d269926c2bc720dab76f46f8ecfc041eb66879a Mon Sep 17 00:00:00 2001 From: goat <16760685+goaaats@users.noreply.github.com> Date: Thu, 19 Aug 2021 23:44:02 +0200 Subject: [PATCH] feat: make exception popup a yesno, exit process after choosing --- Dalamud/EntryPoint.cs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/Dalamud/EntryPoint.cs b/Dalamud/EntryPoint.cs index f365d7912..cac591a99 100644 --- a/Dalamud/EntryPoint.cs +++ b/Dalamud/EntryPoint.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics; using System.IO; using System.Linq; using System.Net; @@ -11,6 +12,7 @@ using Dalamud.Logging.Internal; using Dalamud.Utility; using HarmonyLib; using Newtonsoft.Json; +using PInvoke; using Serilog; using Serilog.Core; using Serilog.Events; @@ -202,11 +204,20 @@ namespace Dalamud $"{ex.TargetSite.DeclaringType.Assembly.GetName().Name}, {ex.TargetSite.DeclaringType.FullName}::{ex.TargetSite.Name}"; } - Util.Fatal( + const MessageBoxType flags = NativeFunctions.MessageBoxType.YesNo | NativeFunctions.MessageBoxType.IconError | NativeFunctions.MessageBoxType.SystemModal; + var result = MessageBoxW( + Process.GetCurrentProcess().MainWindowHandle, $"An internal error in a Dalamud plugin occurred.\nThe game must close.\n\nType: {ex.GetType().Name}\n{info}\n\nMore information has been recorded separately, please contact us in our Discord or on GitHub.\n\nDo you want to disable all plugins the next time you start the game?", - "Dalamud"); + "Dalamud", + flags); - // TODO Plugin disabling + if (result == (int)User32.MessageBoxResult.IDYES) + { + Log.Information("User chose to disable plugins on next launch..."); + // TODO When services are in + } + + Environment.Exit(-1); break; default: