From d1e33912b381ce891a5eb60c81bdf1ee9370a65b Mon Sep 17 00:00:00 2001 From: Interkarma Date: Thu, 14 Dec 2023 15:07:46 +1000 Subject: [PATCH] Populate defaultIniData sooner If settings.ini exists but is completely blank, it will freeze game as defaults are never loaded. Populate defaultIniData at the start so defaults are available in the edge case of an empty settings file. --- Assets/Scripts/SettingsManager.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Assets/Scripts/SettingsManager.cs b/Assets/Scripts/SettingsManager.cs index bca27a4e1b..45e8908da6 100644 --- a/Assets/Scripts/SettingsManager.cs +++ b/Assets/Scripts/SettingsManager.cs @@ -737,10 +737,6 @@ void CreateDefaultSettingsFile(string userIniPath) { // Load defaults.ini TextAsset asset = Resources.Load(defaultsIniName); - MemoryStream stream = new MemoryStream(asset.bytes); - StreamReader reader = new StreamReader(stream); - defaultIniData = iniParser.ReadData(reader); - reader.Close(); // Create file File.WriteAllBytes(userIniPath, asset.bytes); @@ -750,6 +746,14 @@ void CreateDefaultSettingsFile(string userIniPath) void ReadSettingsFile() { + // Load defaults.ini + // This is required for fallback sync if everything else goes wrong + TextAsset asset = Resources.Load(defaultsIniName); + MemoryStream stream = new MemoryStream(asset.bytes); + StreamReader reader = new StreamReader(stream); + defaultIniData = iniParser.ReadData(reader); + reader.Close(); + // Must have settings.ini in persistent data path string userIniPath = Path.Combine(PersistentDataPath, SettingsName()); if (!File.Exists(userIniPath))