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
This commit is contained in:
bbradson
2024-02-01 19:57:50 +01:00
parent 20aebe4e83
commit 949bde76ce
27 changed files with 451 additions and 280 deletions
@@ -172,7 +172,7 @@ public sealed class WorkGiver_DoBillPrepatches : ClassWithFishPrepatches
}
}
private static readonly WorkGiver_DoBillOptimization.ThingPositionComparer _insertAtCorrectPositionComparer
private static readonly ThingPositionComparer _insertAtCorrectPositionComparer
= new();
public static void ActualLoop(List<Thing> list, Region r, Pawn pawn, Predicate<Thing> baseValidator,
@@ -599,16 +599,6 @@ public sealed class WorkGiver_DoBillOptimization : ClassWithFishPatches
}
}
public sealed class ThingPositionComparer : IComparer<Thing>
{
public IntVec3 rootCell;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public int Compare(Thing x, Thing y)
=> (x.Position - rootCell).LengthHorizontalSquared.CompareTo(
(y.Position - rootCell).LengthHorizontalSquared);
}
public record struct RecipeIngredientCacheValue
{
public IngredientCacheList? thingDefs;