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;
 }