public static void AddMechPartsOption(WindowStack instance, FloatMenu menu) { List <FloatMenuOption> options = Traverse.Create(menu).Field("options").GetValue <List <FloatMenuOption> >(); //options.Add(new FloatMenuOption()); bool researchComplete = DefDatabase <ResearchProjectDef> .AllDefs.FirstOrDefault((ResearchProjectDef rp) => rp == WTH_DefOf.WTH_LRMSTuning && rp.IsFinished) != null; ThingDef mechanoidParts = WTH_DefOf.WTH_MineableMechanoidParts; if (researchComplete) { FloatMenuOption item = new FloatMenuOption("WTH_MechanoidParts_LabelShort".Translate(), delegate { foreach (object selectedObject in Find.Selector.SelectedObjects) { Thing selection = selectedObject as Thing; if (selection != null) { CompLongRangeMineralScanner compLongRangeMineralScanner = selection.TryGetComp <CompLongRangeMineralScanner>(); if (compLongRangeMineralScanner != null) { Traverse.Create(compLongRangeMineralScanner).Field("targetMineable").SetValue(mechanoidParts); } } } }, MenuOptionPriority.Default, null, null, 29f, (Rect rect) => Widgets.InfoCardButton(rect.x + 5f, rect.y + (rect.height - 24f) / 2, mechanoidParts.GetConcreteExample()), null); options.Add(item); } Traverse.Create(menu).Field("options").SetValue(options); instance.Add(menu); }
public static bool IsMountable(ThingDef thingDef) { return(isMountable(thingDef.GetConcreteExample() as Pawn)); }