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);
            }
Пример #3
0
        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);
        }
Пример #4
0
 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();
 }