Пример #1
0
        public override float GetPriority(Pawn pawn)
        {
            if (FuelUtility.FueledEnergySourceNeedRefilling(pawn) != null)
            {
                return(10f);
            }

            return(0f);
        }
Пример #2
0
        protected override Job TryGiveJob(Pawn pawn)
        {
            if (pawn.Downed)
            {
                return(null);
            }

            if (pawn.InBed())
            {
                return(null);
            }

            Thing fueledEnergySource = FuelUtility.FueledEnergySourceNeedRefilling(pawn);

            //Nothing to refill.
            if (fueledEnergySource == null)
            {
                return(null);
            }

            //Is there anything to refill it witH?
            EnergySource_Fueled fuelEnergySourceComp = fueledEnergySource.TryGetComp <EnergySource_Fueled>();

            if (!fuelEnergySourceComp.autoRefuel)
            {
                return(null);
            }

            Thing closestConsumablePowerSource = FuelUtility.FindSuitableFuelForPawn(pawn, fuelEnergySourceComp);

            //No compatible fuel source found.
            if (closestConsumablePowerSource == null)
            {
                return(null);
            }

            //Refill the fueled energy source with this.
            Job refuelJob   = new Job(refillJob, fueledEnergySource, closestConsumablePowerSource);
            int refuelCount = fuelEnergySourceComp.CalculateFuelNeededToRefill(closestConsumablePowerSource);

            refuelJob.count = refuelCount;
            return(refuelJob);
        }