예제 #1
0
        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();
                    }
                },
예제 #2
0
        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();
        }
예제 #3
0
        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;
                }
            }
        }