new-horizons/NewHorizons/Handlers/EyeDetailCacher.cs
2024-06-18 21:04:00 -04:00

40 lines
1.4 KiB
C#

using NewHorizons.Utility;
using NewHorizons.Utility.OWML;
using System.Linq;
namespace NewHorizons.Handlers;
public static class EyeDetailCacher
{
public static void Init()
{
foreach (var body in Main.BodyDict["EyeOfTheUniverse"])
{
NHLogger.LogVerbose($"{nameof(EyeDetailCacher)}: {body.Config.name}");
if (body.Config?.Props?.details == null) continue;
foreach (var detail in body.Config.Props.details)
{
NHLogger.LogVerbose($"{nameof(EyeDetailCacher)}: {detail.path}");
if (string.IsNullOrEmpty(detail.path)) continue;
var planet = detail.path.Contains('/') ? detail.path.Split('/').First() : string.Empty;
// TODO: what other root paths can we ignore
if (planet != "EyeOfTheUniverse_Body" && planet != "Vessel_Body")
{
NHLogger.LogVerbose($"{nameof(EyeDetailCacher)}: Looking for {detail.path}");
var obj = SearchUtilities.Find(detail.path);
if (obj != null)
{
NHLogger.LogVerbose($"{nameof(EyeDetailCacher)}: Added solar system asset to dont destroy on load cache for eye: {detail.path}");
SearchUtilities.AddToDontDestroyOnLoadCache(detail.path, obj);
}
}
}
}
}
}