Files
Performance-Fish/Source/PerformanceFish/JobSystem/WorkGiver_MergeOptimization.cs
T
2022-10-26 20:13:39 +02:00

28 lines
1014 B
C#

// Copyright (c) 2022 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.JobSystem;
public class WorkGiver_MergeOptimization : ClassWithFishPatches
{
public class JobOnThing_Patch : FishPatch
{
public override string Description => "Removes mergeables from ListerMergeables if they no longer qualify as mergeable when trying to check for a merging job on them. Vanilla RimWorld just fails and keeps them in";
public override MethodBase TargetMethodInfo => AccessTools.Method(typeof(WorkGiver_Merge), nameof(WorkGiver_Merge.JobOnThing));
public static void Prefix(Thing t)
{
if (t.GetSlotGroup() is null)
RemoveFromListerMergeables(t);
}
private static void RemoveFromListerMergeables(Thing t)
{
var map = t.MapHeld;
map.listerMergeables.TryRemove(t);
map.listerHaulables.Check(t);
}
}
}