From e28483d1ae6a7eb6c656c33834bf2295efd4e8d9 Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Sat, 27 May 2023 16:04:45 +0200 Subject: [PATCH] Stop failure to load on broken configuration files. --- OtterGui | 2 +- Penumbra/Configuration.cs | 20 ++++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/OtterGui b/OtterGui index 73f6b14d..7d0fcdba 160000 --- a/OtterGui +++ b/OtterGui @@ -1 +1 @@ -Subproject commit 73f6b14d16920a94b7b98fe85973b9b2b959ada5 +Subproject commit 7d0fcdbadf70f59675e8666de014e5dcb67da35d diff --git a/Penumbra/Configuration.cs b/Penumbra/Configuration.cs index ba8ca1cc..83fd2e51 100644 --- a/Penumbra/Configuration.cs +++ b/Penumbra/Configuration.cs @@ -4,6 +4,7 @@ using System.IO; using System.Linq; using System.Numerics; using Dalamud.Configuration; +using Dalamud.Interface.Internal.Notifications; using Newtonsoft.Json; using OtterGui; using OtterGui.Classes; @@ -124,13 +125,20 @@ public class Configuration : IPluginConfiguration, ISavable } if (File.Exists(fileNames.ConfigFile)) - { - var text = File.ReadAllText(fileNames.ConfigFile); - JsonConvert.PopulateObject(text, this, new JsonSerializerSettings + try { - Error = HandleDeserializationError, - }); - } + var text = File.ReadAllText(fileNames.ConfigFile); + JsonConvert.PopulateObject(text, this, new JsonSerializerSettings + { + Error = HandleDeserializationError, + }); + } + catch (Exception ex) + { + Penumbra.ChatService.NotificationMessage(ex, + "Error reading Configuration, reverting to default.\nYou may be able to restore your configuration using the rolling backups in the XIVLauncher/backups/Penumbra directory.", + "Error reading Configuration", "Error", NotificationType.Error); + } migrator.Migrate(utility, this); }