public ShipRole(ShipHandler group) { label = group.role.label; handlingType = group.role.handlingType; slots = group.role.slots; slotsToOperate = group.role.slotsToOperate; preferredHandlers = group.role.preferredHandlers; }
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)); }
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); }