protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDespawnedNullOrForbidden(TargetIndex.A); yield return(Toils_Reserve.Reserve(TargetIndex.B)); yield return(Toils_Goto.GotoThing(TargetIndex.B, PathEndMode.ClosestTouch).FailOnDespawnedNullOrForbidden(TargetIndex.B).FailOnSomeonePhysicallyInteracting(TargetIndex.B)); yield return(Toils_Haul.StartCarryThing(TargetIndex.B)); yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch)); yield return(Toils_General.Wait(1200).WithProgressBarToilDelay(TargetIndex.A).FailOnDestroyedOrNull(TargetIndex.A)); Toil finish = new Toil { initAction = delegate { if (module != null) { MKStationModuleDef moduleDef = DefDatabase <MKStationModuleDef> .AllDefs.Where(x => x.Item == module.def).FirstOrDefault(); if (moduleDef == null) { return; } station.AddModule(moduleDef, module); pawn.carryTracker.TryDropCarriedThing(pawn.Position, ThingPlaceMode.Near, out Thing t); module.DeSpawn(); } },
public void RemoveModule(MKStationModuleDef moduleDef) { for (int i = 0; i < Slots.Count; i++) { ModuleSlot <MKStationModule> slot = Slots[i]; if (slot.Module.def == moduleDef) { slot.Module = null; break; } } Notify_ModulesChanges(); }
public void AddModule(MKStationModuleDef moduleDef, Thing item) { MKStationModule module = (MKStationModule)Activator.CreateInstance(moduleDef.workerClass); module.def = moduleDef; module.Station = this; foreach (var slot in Slots) { if (slot.Module == null) { slot.Module = module; slot.Item = item; Notify_ModulesChanges(); break; } } }