protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDestroyedOrNull(TargetIndex.A); this.FailOnDestroyedNullOrForbidden(TargetIndex.B); this.FailOn(() => TransporterUtility.WasLoadingCanceled(this.Container)); this.FailOn(delegate() { ThingOwner thingOwner = this.Container.TryGetInnerInteractableThingOwner(); if (thingOwner != null && !thingOwner.CanAcceptAnyOf(this.ThingToCarry, true)) { return(true); } IHaulDestination haulDestination = this.Container as IHaulDestination; return(haulDestination != null && !haulDestination.Accepts(this.ThingToCarry)); }); Toil getToHaulTarget = Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch).FailOnSomeonePhysicallyInteracting(TargetIndex.A); yield return(getToHaulTarget); yield return(Toils_Construct.UninstallIfMinifiable(TargetIndex.A).FailOnSomeonePhysicallyInteracting(TargetIndex.A)); yield return(Toils_Haul.StartCarryThing(TargetIndex.A, false, true, false)); yield return(Toils_Haul.JumpIfAlsoCollectingNextTargetInQueue(getToHaulTarget, TargetIndex.A)); Toil carryToContainer = Toils_Haul.CarryHauledThingToContainer(); yield return(carryToContainer); yield return(Toils_Goto.MoveOffTargetBlueprint(TargetIndex.B)); Toil prepare = Toils_General.Wait(this.Duration, TargetIndex.B); prepare.WithProgressBarToilDelay(TargetIndex.B, false, -0.5f); yield return(prepare); yield return(Toils_Construct.MakeSolidThingFromBlueprintIfNecessary(TargetIndex.B, TargetIndex.C)); yield return(Toils_Haul.DepositHauledThingInContainer(TargetIndex.B, TargetIndex.C)); yield return(Toils_Haul.JumpToCarryToNextContainerIfPossible(carryToContainer, TargetIndex.C)); yield break; }
public bool MoveNext() { uint num = (uint)this.$PC; this.$PC = -1; switch (num) { case 0u: this.FailOnDestroyedOrNull(TargetIndex.A); this.FailOnDestroyedNullOrForbidden(TargetIndex.B); this.FailOn(() => TransporterUtility.WasLoadingCanceled(base.Container)); this.FailOn(delegate() { ThingOwner thingOwner = base.Container.TryGetInnerInteractableThingOwner(); bool result; if (thingOwner != null && !thingOwner.CanAcceptAnyOf(base.ThingToCarry, true)) { result = true; } else { IHaulDestination haulDestination = base.Container as IHaulDestination; result = (haulDestination != null && !haulDestination.Accepts(base.ThingToCarry)); } return(result); }); getToHaulTarget = Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch).FailOnSomeonePhysicallyInteracting(TargetIndex.A); this.$current = getToHaulTarget; if (!this.$disposing) { this.$PC = 1; } return(true); case 1u: this.$current = Toils_Construct.UninstallIfMinifiable(TargetIndex.A).FailOnSomeonePhysicallyInteracting(TargetIndex.A); if (!this.$disposing) { this.$PC = 2; } return(true); case 2u: this.$current = Toils_Haul.StartCarryThing(TargetIndex.A, false, true, false); if (!this.$disposing) { this.$PC = 3; } return(true); case 3u: this.$current = Toils_Haul.JumpIfAlsoCollectingNextTargetInQueue(getToHaulTarget, TargetIndex.A); if (!this.$disposing) { this.$PC = 4; } return(true); case 4u: carryToContainer = Toils_Haul.CarryHauledThingToContainer(); this.$current = carryToContainer; if (!this.$disposing) { this.$PC = 5; } return(true); case 5u: this.$current = Toils_Goto.MoveOffTargetBlueprint(TargetIndex.B); if (!this.$disposing) { this.$PC = 6; } return(true); case 6u: prepare = Toils_General.Wait(base.Duration, TargetIndex.B); prepare.WithProgressBarToilDelay(TargetIndex.B, false, -0.5f); this.$current = prepare; if (!this.$disposing) { this.$PC = 7; } return(true); case 7u: this.$current = Toils_Construct.MakeSolidThingFromBlueprintIfNecessary(TargetIndex.B, TargetIndex.C); if (!this.$disposing) { this.$PC = 8; } return(true); case 8u: this.$current = Toils_Haul.DepositHauledThingInContainer(TargetIndex.B, TargetIndex.C); if (!this.$disposing) { this.$PC = 9; } return(true); case 9u: this.$current = Toils_Haul.JumpToCarryToNextContainerIfPossible(carryToContainer, TargetIndex.C); if (!this.$disposing) { this.$PC = 10; } return(true); case 10u: this.$PC = -1; break; } return(false); }