Ejemplo n.º 1
0
        public static Toil TakeMealFromDispenser(TargetIndex ind, Pawn eater)
        {
            Toil toil = new Toil();

            toil.initAction = delegate()
            {
                Pawn actor  = toil.actor;
                Job  curJob = actor.jobs.curJob;
                Building_NutrientPasteDispenser building_NutrientPasteDispenser = (Building_NutrientPasteDispenser)curJob.GetTarget(ind).Thing;
                Thing thing = building_NutrientPasteDispenser.TryDispenseFood();
                if (thing == null)
                {
                    actor.jobs.curDriver.EndJobWith(JobCondition.Incompletable);
                }
                else
                {
                    actor.carryTracker.TryStartCarry(thing);
                    actor.CurJob.SetTarget(ind, actor.carryTracker.CarriedThing);
                }
            };
            toil.FailOnCannotTouch(ind, PathEndMode.Touch);
            toil.defaultCompleteMode = ToilCompleteMode.Delay;
            toil.defaultDuration     = Building_NutrientPasteDispenser.CollectDuration;
            return(toil);
        }
            internal void <> m__0()
            {
                Pawn actor  = this.toil.actor;
                Job  curJob = actor.jobs.curJob;
                Building_NutrientPasteDispenser building_NutrientPasteDispenser = (Building_NutrientPasteDispenser)curJob.GetTarget(this.ind).Thing;
                Thing thing = building_NutrientPasteDispenser.TryDispenseFood();

                if (thing == null)
                {
                    actor.jobs.curDriver.EndJobWith(JobCondition.Incompletable);
                    return;
                }
                actor.carryTracker.TryStartCarry(thing);
                actor.CurJob.SetTarget(this.ind, actor.carryTracker.CarriedThing);
            }