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)); }
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); }