Files
RimWorld_ResearchWhatever/Source/ResearchWhatever13/Patches/StaticConstructorOnStartupUtilityPatch.cs
CGFighter 27ce46c551 1.0.1
2021-07-31 01:07:20 +03:00

50 lines
1.8 KiB
C#

using System;
using System.Linq;
using System.Collections.Generic;
using Verse;
using HarmonyLib;
using System.Reflection;
using RimWorld;
namespace ResearchWhatever
{
public static class StaticConstructorOnStartupUtility_Patch
{
//[HarmonyPatch(typeof(StaticConstructorOnStartupUtility), "CallAll")]
[HarmonyPatch]
static class StaticConstructorOnStartupUtility_CallAll_ResearchWhateverPatch
{
internal static MethodBase TargetMethod()
{
MethodBase LCallAll = AccessTools.Method("BetterLoading.Stage.InitialLoad.StageRunStaticCctors:PreCallAll");
if (LCallAll == null)
{
LCallAll = AccessTools.Method("Verse.StaticConstructorOnStartupUtility:CallAll");
if (LCallAll == null)
throw new Exception("Couldn't find StaticConstructorOnStartupUtility.CallAll()");
}
else
Log.Message("[ResearchWhatever] BetterLoading detected, workaround initiated");
return LCallAll;
}
//
static void Postfix()
{
List<ThingDef> list = new List<ThingDef>(
from x in DefDatabase<ThingDef>.AllDefsListForReading
where x.thingClass == typeof(Building_ResearchBench) || x.thingClass != null && x.thingClass.IsSubclassOf(typeof(Building_ResearchBench))
select x);
if (list.NullOrEmpty())
return;
else
foreach (var thing in list)
{
thing?.comps?.Add(new CompProperties(typeof(ResearchWhateverComp)));
}
}
}
}
}