예제 #1
0
        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);
        }
예제 #2
0
 public static bool IsMountable(ThingDef thingDef)
 {
     return(isMountable(thingDef.GetConcreteExample() as Pawn));
 }