From 7a5630bc0e93dad7395633bc0bcd2f06b4223af9 Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 10 Aug 2023 00:54:31 -0400 Subject: [PATCH] Fix default system override #687 --- NewHorizons/Main.cs | 48 ++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/NewHorizons/Main.cs b/NewHorizons/Main.cs index f2d5c7e7..6e5342e4 100644 --- a/NewHorizons/Main.cs +++ b/NewHorizons/Main.cs @@ -116,12 +116,12 @@ namespace NewHorizons else if (Debug) NHLogger.UpdateLogLevel(NHLogger.LogType.Log); else NHLogger.UpdateLogLevel(NHLogger.LogType.Error); + var oldDefaultSystemOverride = _defaultSystemOverride; _defaultSystemOverride = config.GetSettingsValue("Default System Override"); - - // Else it doesn't get set idk - if (currentScene == "TitleScreen" && SystemDict.ContainsKey(_defaultSystemOverride)) + if (oldDefaultSystemOverride != _defaultSystemOverride) { - _currentStarSystem = _defaultSystemOverride; + ResetCurrentStarSystem(); + NHLogger.Log($"Changed default star system override to {_defaultSystemOverride}"); } var wasUsingCustomTitleScreen = _useCustomTitleScreen; @@ -553,17 +553,7 @@ namespace NewHorizons } else { - // Reset back to original solar system after going to main menu. - // If the override is a valid system then we go there - if (SystemDict.ContainsKey(_defaultSystemOverride)) - { - _currentStarSystem = _defaultSystemOverride; - IsWarpingFromShip = true; // always do this else sometimes the spawn gets messed up - } - else - { - _currentStarSystem = _defaultStarSystem; - } + ResetCurrentStarSystem(); } } @@ -614,7 +604,7 @@ namespace NewHorizons if (starSystemName != "SolarSystem") { SetDefaultSystem(starSystemName); - _currentStarSystem = starSystemName; + _currentStarSystem = DefaultStarSystem; } } @@ -903,15 +893,23 @@ namespace NewHorizons { if (SystemDict[_currentStarSystem].Config.respawnHere) return; - // If the override is a valid system then we go there - if (SystemDict.ContainsKey(_defaultSystemOverride)) - { - _currentStarSystem = _defaultSystemOverride; - } - else - { - _currentStarSystem = _defaultStarSystem; - } + ResetCurrentStarSystem(); + } + } + + private void ResetCurrentStarSystem() + { + if (SystemDict.ContainsKey(_defaultSystemOverride)) + { + _currentStarSystem = _defaultSystemOverride; + + // Sometimes the override will not support spawning regularly, so always warp in + IsWarpingFromShip = true; + } + else + { + _currentStarSystem = _defaultStarSystem; + IsWarpingFromShip = false; } } #endregion Change star system