public override void InitiatePawnCrafting() { List <FloatMenuOption> options = new List <FloatMenuOption>(); foreach (DroneCraftingDef droneCraftingDef in (IEnumerable <DroneCraftingDef>)DefDatabase <DroneCraftingDef> .AllDefs.OrderBy <DroneCraftingDef, int>((Func <DroneCraftingDef, int>)(def => def.orderID))) { DroneCraftingDef def = droneCraftingDef; bool disabled = false; if (def.requiredResearch != null && !def.requiredResearch.IsFinished) { disabled = true; } options.Add(new FloatMenuOption(!disabled ? (string)"AndroidDroidCrafterPawnMake".Translate((NamedArgument)def.label) : (string)"AndroidDroidCrafterPawnNeedResearch".Translate((NamedArgument)def.label, (NamedArgument)def.requiredResearch.LabelCap), (Action)(() => { if (disabled) { return; } this.lastDef = def; this.MakePawnAndInitCrafting(def); }), MenuOptionPriority.Default, (Action)null, (Thing)null, 0.0f, (Func <Rect, bool>)null, (WorldObject)null) { Disabled = disabled }); } if (options.Count <= 0) { return; } Find.WindowStack.Add((Window) new FloatMenu(options)); }
public void MakePawnAndInitCrafting(DroneCraftingDef def) { this.orderProcessor.requestedItems.Clear(); foreach (ThingOrderRequest cost in def.costList) { this.orderProcessor.requestedItems.Add(new ThingOrderRequest() { nutrition = cost.nutrition, thingDef = cost.thingDef, amount = cost.amount }); } this.craftingTime = def.timeCost; if (def.useDroneCreator) { this.pawnBeingCrafted = DroidUtility.MakeDroidTemplate(def.pawnKind, this.Faction, this.Map.Tile, (List <SkillRequirement>)null, 6); } else { this.pawnBeingCrafted = PawnGenerator.GeneratePawn(def.pawnKind, this.Faction); } this.crafterStatus = CrafterStatus.Filling; }