add comp tick, needs tracker and pawn rendering optimizations, cache more dates, fix reflection patches, default to disabled for texture atlas patch

This commit is contained in:
localavaster
2026-04-18 15:18:26 -06:00
parent 1acf3ce319
commit 7d96ecdb1d
10 changed files with 984 additions and 80 deletions
+79 -3
View File
@@ -51,7 +51,7 @@ public sealed class GenLocalDateCaching : ClassWithFishPatches
return __state = true;
}
if (SavedTick != TickHelper.TicksGame)
if (SavedDayTickTick != TickHelper.TicksGame)
return __state = true;
__result = DayTick;
@@ -64,12 +64,88 @@ public sealed class GenLocalDateCaching : ClassWithFishPatches
if (!__state || SavedMap != map)
return;
SavedTick = TickHelper.TicksGame;
SavedDayTickTick = TickHelper.TicksGame;
DayTick = __result;
}
}
public sealed class HourIntegerByMap_Patch : FishPatch
{
public override string Description { get; }
= "Caches results of GenLocalDate.HourInteger for the first map.";
public override Delegate TargetMethodGroup { get; } = (Func<Map, int>)GenLocalDate.HourInteger;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool Prefix(Map map, ref int __result, out bool __state)
{
if (map != SavedMap)
{
if (SavedMap is null && Find.Maps is { Count: > 0 } maps && maps[0] == map)
SavedMap = map;
return __state = true;
}
if (SavedHourIntegerTick != TickHelper.TicksGame)
return __state = true;
__result = HourInteger;
return __state = false;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Postfix(Map map, int __result, bool __state)
{
if (!__state || SavedMap != map)
return;
SavedHourIntegerTick = TickHelper.TicksGame;
HourInteger = __result;
}
}
public sealed class SeasonByMap_Patch : FishPatch
{
public override string Description { get; }
= "Caches results of GenLocalDate.Season for the first map.";
public override Delegate TargetMethodGroup { get; } = (Func<Map, Season>)GenLocalDate.Season;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool Prefix(Map map, ref Season __result, out bool __state)
{
if (map != SavedMap)
{
if (SavedMap is null && Find.Maps is { Count: > 0 } maps && maps[0] == map)
SavedMap = map;
return __state = true;
}
if (SavedSeasonTick != TickHelper.TicksGame)
return __state = true;
__result = Season;
return __state = false;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Postfix(Map map, Season __result, bool __state)
{
if (!__state || SavedMap != map)
return;
SavedSeasonTick = TickHelper.TicksGame;
Season = __result;
}
}
public static Map? SavedMap;
public static int SavedTick = -2;
public static int SavedDayTickTick = -2;
public static int SavedHourIntegerTick = -2;
public static int SavedSeasonTick = -2;
public static int DayTick = -2;
public static int HourInteger = -2;
public static Season Season = Season.Undefined;
}