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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user