コード例 #1
0
 public ShipRole(ShipHandler group)
 {
     label             = group.role.label;
     handlingType      = group.role.handlingType;
     slots             = group.role.slots;
     slotsToOperate    = group.role.slotsToOperate;
     preferredHandlers = group.role.preferredHandlers;
 }
コード例 #2
0
        public void GiveLoadJob(Pawn pawn, ShipHandler handler)
        {
            if (this.bills is null)
            {
                this.bills = new List <Jobs.Bill_BoardShip>();
            }

            if (!(bills is null) && bills.Count > 0)
            {
                Jobs.Bill_BoardShip bill = bills.FirstOrDefault(x => x.pawnToBoard == pawn);
                if (!(bill is null))
                {
                    bill.handler = handler;
                    return;
                }
            }
            bills.Add(new Jobs.Bill_BoardShip(pawn, handler));
        }
コード例 #3
0
        public void MultiplePawnFloatMenuOptions(List <Pawn> pawns)
        {
            List <FloatMenuOption> options = new List <FloatMenuOption>();
            FloatMenuOption        opt1    = new FloatMenuOption("BoardShipGroup".Translate(this.Pawn.LabelShort), delegate()
            {
                List <IntVec3> cells = this.Pawn.OccupiedRect().Cells.ToList();
                foreach (Pawn p in pawns)
                {
                    if (cells.Contains(p.Position))
                    {
                        continue;
                    }
                    Job job = new Job(JobDefOf_Ships.Board, this.parent);
                    p.jobs.TryTakeOrderedJob(job, JobTag.DraftedOrder);
                    ShipHandler handler = p.IsColonistPlayerControlled ? this.NextAvailableHandler : this.handlers.Find(x => x.role.handlingType == HandlingTypeFlags.None);
                    this.GiveLoadJob(p, handler);
                    this.ReserveSeat(p, handler);
                }
            }, MenuOptionPriority.Default, null, null, 0f, null, null);
            FloatMenuOption opt2 = new FloatMenuOption("BoardShipGroupFail".Translate(this.Pawn.LabelShort), null, MenuOptionPriority.Default, null, null, 0f, null, null);

            opt2.Disabled = true;
            int r = 0;

            foreach (ShipHandler h in this.handlers)
            {
                r += h.currentlyReserving.Count;
            }
            options.Add(pawns.Count + r > this.SeatsAvailable ? opt2 : opt1);

            FloatMenuMulti floatMenuMap = new FloatMenuMulti(options, pawns, this.Pawn, pawns[0].LabelCap, Verse.UI.MouseMapPosition())
            {
                givesColonistOrders = true
            };

            Find.WindowStack.Add(floatMenuMap);
        }