Files
Performance-Fish/Source/PerformanceFish/UtilityPatches.cs
T
bbradson 949bde76ce Mainly more hauling optimizations, utilizing linked storage groups
This also adds an experimental, usually slower, threaded gas grid mode and implements a workaround for the whole mod and game failing to start when opening prepatcher's mod manager with unfortunate timing
2024-02-01 19:57:50 +01:00

60 lines
1.7 KiB
C#

// Copyright (c) 2023 bradson
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
namespace PerformanceFish;
public sealed class UtilityPatches : ClassWithFishPatches
{
public sealed class FinalizeInit_Patch : FishPatch
{
public override bool Enabled => true;
public override bool ShowSettings => false;
public override string Description { get; }
= "Necessary for patches that require a loaded game to function";
public override MethodBase TargetMethodInfo { get; }
= AccessTools.Method(typeof(Game), nameof(Game.FinalizeInit));
[HarmonyPriority(Priority.VeryLow)]
public static void Postfix()
{
foreach (var patch in PerformanceFishMod.AllPatchClasses!)
{
if (patch.RequiresLoadedGameForPatching)
patch.Patches.PatchAll();
}
Benchmarking.SwitchFrame = GenTicks.TicksGame + 6000;
Benchmarking.EndFrame = Benchmarking.SwitchFrame + 6000;
}
}
public sealed class ClearAllMapsAndWorld_Patch : FishPatch
{
public override bool Enabled => true;
public override bool ShowSettings => false;
public override string Description { get; }
= "This clears all Performance Fish caches whenever saves get unloaded, to avoid anything getting carried "
+ "over to a new game by mistake";
public override Delegate TargetMethodGroup => Verse.Profile.MemoryUtility.ClearAllMapsAndWorld;
[HarmonyPriority(Priority.VeryLow)]
public static void Postfix()
{
Cache.Utility.Clear();
ParallelNoAlloc.ClearAll();
foreach (var patch in PerformanceFishMod.AllPatchClasses!)
{
if (patch.RequiresLoadedGameForPatching)
patch.Patches.UnpatchAll();
}
}
}
}