Пример #1
0
        private bool HasJobOnCell(WorkGiver_Scanner workGiverScanner, IntVec3 cell)
        {
            List <WorkGiver_Scanner> workGivers = WorkerDefUtility.GetCombinedWorkGiverScanners(workGiverScanner);

            foreach (WorkGiver_Scanner scanner in workGivers)
            {
                var potentialWorkCells = scanner.PotentialWorkCellsGlobal(Meeseeks);
                if ((potentialWorkCells == null || potentialWorkCells.Contains(cell)) && !Memory.jobTargets.Contains(cell) && scanner.HasJobOnCell(Meeseeks, cell, true))
                {
                    return(true);
                }
            }

            return(false);
        }
Пример #2
0
        private bool HasJobOnThing(WorkGiver_Scanner workGiverScanner, Thing thing)
        {
            List <WorkGiver_Scanner> workGivers = WorkerDefUtility.GetCombinedWorkGiverScanners(workGiverScanner);

            foreach (WorkGiver_Scanner scanner in workGivers)
            {
                var potentialWorkThings = scanner.PotentialWorkThingsGlobal(Meeseeks);
                if ((potentialWorkThings == null || potentialWorkThings.Contains(thing)) && !Memory.jobTargets.Contains(thing) && scanner.HasJobOnThing(Meeseeks, thing, true))
                {
                    return(true);
                }
            }

            return(false);
        }
Пример #3
0
        protected Job ScanForJob(Pawn meeseeks, CompMeeseeksMemory memory, SavedJob savedJob, SavedTargetInfo jobTarget, ref JobAvailability jobAvailabilty, bool scanAllThingsOnCell = false)
        {
            Job job = null;

            if (savedJob.workGiverDef != null && savedJob.workGiverDef.Worker != null)
            {
                WorkGiver_Scanner workGiverScanner = savedJob.workGiverDef.Worker as WorkGiver_Scanner;
                if (workGiverScanner != null)
                {
                    List <WorkGiver_Scanner> workGivers = WorkerDefUtility.GetCombinedWorkGiverScanners(workGiverScanner);

                    foreach (WorkGiver_Scanner scanner in workGivers)
                    {
                        job = this.GetJobOnTarget(meeseeks, jobTarget, scanner, scanAllThingsOnCell);

                        if (job != null)
                        {
                            if (memory.JobStuckRepeat(job))
                            {
                                Logger.ErrorFormat(this, "Stuck job detected and removed on {0}.", jobTarget);
                                jobAvailabilty = JobAvailability.Delayed;
                                job            = null;
                            }
                            else
                            {
                                //Logger.MessageFormat(this, "Job WAS found for {0}.", scanner.def.defName);
                                jobAvailabilty = JobAvailability.Available;
                                return(job);
                            }
                        }

                        //Logger.MessageFormat(this, "No {0} job found.", scanner.def.defName);
                    }
                }
                else
                {
                    Logger.WarningFormat(this, "No work scanner");
                }
            }
            else
            {
                Logger.WarningFormat(this, "Missing saved job workGiverDef or Worker for savedJob: {0}", savedJob.def.defName);
            }

            return(job);
        }