protected override void Update() { _needPower = CacheCaravanPartUser.PartPowerCaravans .Where(caravan => !ChargeSourceUtility.FindSources(caravan).Any()) .ToList(); _needPowerMove = _needPower.Where(caravan => caravan.pawns.Any <Pawn>(PartUtility.RequiresPartsForMovement <AddedPartPowerConsumer>)).ToList(); _needPowerLive = _needPower.Where(caravan => caravan.pawns.Any <Pawn>(PartUtility.RequiresPartsToLive <AddedPartPowerConsumer>)).ToList(); }
static List <FloatMenuOption> AddPrioritizingPartPowerOption(List <FloatMenuOption> __result, Vector3 clickPos, Pawn pawn) { if (pawn.Downed || !PartEnergyNeed.HasNeed(pawn)) { return(__result); } foreach (var target in GenUI.TargetsAt(clickPos, ForChargers, false)) { if (ChargeSourceUtility.FindSources(target.Thing).Any(charger => charger.Available)) { __result.Add(CreateMenuOption(target.Thing, pawn, target)); } } return(__result); }
protected override Verse.AI.Job TryGiveJob(Pawn pawn) { if (pawn.Downed) { return(null); } var need = pawn.needs.TryGetNeed <PartEnergyNeed>(); if (need == null || !need.CanBeSatisfied || !need.SeekSatisfaction) { return(null); } var result = ChargeSourceUtility.ClosestChargeSource(pawn); return(result != null ? new Verse.AI.Job(CyberizationDefOf.SeekPartPower, result) : null); }
protected override void Update() { _needPower = PartPowerUsers.Where(pawn => ChargeSourceUtility.ClosestChargeSource(pawn) == null).ToList(); _needPowerLive = _needPower.Where(PartUtility.RequiresPartsToLive <AddedPartPowerConsumer>).ToList(); _needPowerMove = _needPower.Where(PartUtility.RequiresPartsForMovement <AddedPartPowerConsumer>).ToList(); }