protected override Job TryGiveJob(Pawn pawn)
        {
            int         transportersGroup = pawn.mindState.duty.transportersGroup;
            List <Pawn> allPawnsSpawned   = pawn.Map.mapPawns.AllPawnsSpawned;

            for (int i = 0; i < allPawnsSpawned.Count; i++)
            {
                if (allPawnsSpawned[i] != pawn && allPawnsSpawned[i].CurJobDef == JobDefOf.HaulToTransporter)
                {
                    CompTransporter transporter = ((JobDriver_HaulToTransporter)allPawnsSpawned[i].jobs.curDriver).Transporter;
                    if (transporter != null && transporter.groupID == transportersGroup)
                    {
                        return(null);
                    }
                }
            }
            TransporterUtility.GetTransportersInGroup(transportersGroup, pawn.Map, tmpTransporters);
            CompTransporter compTransporter = FindMyTransporter(tmpTransporters, pawn);

            tmpTransporters.Clear();
            if (compTransporter == null || !pawn.CanReach(compTransporter.parent, PathEndMode.Touch, Danger.Deadly))
            {
                return(null);
            }
            return(JobMaker.MakeJob(JobDefOf.EnterTransporter, compTransporter.parent));
        }
Пример #2
0
 public List <CompTransporter> TransportersInGroup(Map map)
 {
     if (!LoadingInProgressOrReadyToLaunch)
     {
         return(null);
     }
     TransporterUtility.GetTransportersInGroup(groupID, map, tmpTransportersInGroup);
     return(tmpTransportersInGroup);
 }
        protected override Job TryGiveJob(Pawn pawn)
        {
            int transportersGroup = pawn.mindState.duty.transportersGroup;

            TransporterUtility.GetTransportersInGroup(transportersGroup, pawn.Map, JobGiver_EnterTransporter.tmpTransporters);
            CompTransporter compTransporter = this.FindMyTransporter(JobGiver_EnterTransporter.tmpTransporters, pawn);

            if (compTransporter != null && pawn.CanReserveAndReach(compTransporter.parent, PathEndMode.Touch, Danger.Deadly, 1, -1, null, false))
            {
                return(new Job(JobDefOf.EnterTransporter, compTransporter.parent));
            }
            return(null);
        }
 protected override Job TryGiveJob(Pawn pawn)
 {
     TransporterUtility.GetTransportersInGroup(pawn.mindState.duty.transportersGroup, pawn.Map, tmpTransporters);
     for (int i = 0; i < tmpTransporters.Count; i++)
     {
         CompTransporter transporter = tmpTransporters[i];
         if (LoadTransportersJobUtility.HasJobOnTransporter(pawn, transporter))
         {
             return(LoadTransportersJobUtility.JobOnTransporter(pawn, transporter));
         }
     }
     return(null);
 }
        public List <CompTransporter> TransportersInGroup(Map map)
        {
            List <CompTransporter> result;

            if (!this.LoadingInProgressOrReadyToLaunch)
            {
                result = null;
            }
            else
            {
                TransporterUtility.GetTransportersInGroup(this.groupID, map, CompTransporter.tmpTransportersInGroup);
                result = CompTransporter.tmpTransportersInGroup;
            }
            return(result);
        }
        protected override Job TryGiveJob(Pawn pawn)
        {
            int transportersGroup = pawn.mindState.duty.transportersGroup;

            TransporterUtility.GetTransportersInGroup(transportersGroup, pawn.Map, JobGiver_EnterTransporter.tmpTransporters);
            CompTransporter compTransporter = this.FindMyTransporter(JobGiver_EnterTransporter.tmpTransporters, pawn);
            Job             result;

            if (compTransporter == null || !pawn.CanReach(compTransporter.parent, PathEndMode.Touch, Danger.Deadly, false, TraverseMode.ByPawn))
            {
                result = null;
            }
            else
            {
                result = new Job(JobDefOf.EnterTransporter, compTransporter.parent);
            }
            return(result);
        }