Beispiel #1
0
			public bool MoveNext()
			{
				uint num = (uint)this.$PC;
				this.$PC = -1;
				switch (num)
				{
				case 0u:
					this.FailOnDespawnedNullOrForbidden(TargetIndex.A);
					this.FailOnBurningImmobile(TargetIndex.A);
					this.FailOn(delegate()
					{
						CompLongRangeMineralScanner compLongRangeMineralScanner = this.job.targetA.Thing.TryGetComp<CompLongRangeMineralScanner>();
						return !compLongRangeMineralScanner.CanUseNow;
					});
					this.$current = Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.InteractionCell);
					if (!this.$disposing)
					{
						this.$PC = 1;
					}
					return true;
				case 1u:
					<MakeNewToils>c__AnonStorey.work = new Toil();
					<MakeNewToils>c__AnonStorey.work.tickAction = delegate()
					{
						Pawn actor = <MakeNewToils>c__AnonStorey.work.actor;
						Building building = (Building)actor.CurJob.targetA.Thing;
						CompLongRangeMineralScanner comp = building.GetComp<CompLongRangeMineralScanner>();
						comp.Used(actor);
						actor.skills.Learn(SkillDefOf.Intellectual, 0.035f, false);
						actor.GainComfortFromCellIfPossible();
					};
Beispiel #2
0
		protected override IEnumerable<Toil> MakeNewToils()
		{
			this.FailOnDespawnedNullOrForbidden(TargetIndex.A);
			this.FailOnBurningImmobile(TargetIndex.A);
			this.FailOn(delegate()
			{
				CompLongRangeMineralScanner compLongRangeMineralScanner = this.job.targetA.Thing.TryGetComp<CompLongRangeMineralScanner>();
				return !compLongRangeMineralScanner.CanUseNow;
			});
			yield return Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.InteractionCell);
			Toil work = new Toil();
			work.tickAction = delegate()
			{
				Pawn actor = work.actor;
				Building building = (Building)actor.CurJob.targetA.Thing;
				CompLongRangeMineralScanner comp = building.GetComp<CompLongRangeMineralScanner>();
				comp.Used(actor);
				actor.skills.Learn(SkillDefOf.Intellectual, 0.035f, false);
				actor.GainComfortFromCellIfPossible();
			};
			work.defaultCompleteMode = ToilCompleteMode.Never;
			work.FailOnCannotTouch(TargetIndex.A, PathEndMode.InteractionCell);
			work.activeSkill = (() => SkillDefOf.Intellectual);
			yield return work;
			yield break;
		}
Beispiel #3
0
        public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false)
        {
            if (t.Faction != pawn.Faction)
            {
                return(false);
            }
            Building building = t as Building;

            if (building == null)
            {
                return(false);
            }
            if (building.IsForbidden(pawn))
            {
                return(false);
            }
            LocalTargetInfo target = building;

            if (!pawn.CanReserve(target, 1, -1, null, forced))
            {
                return(false);
            }
            CompLongRangeMineralScanner compLongRangeMineralScanner = building.TryGetComp <CompLongRangeMineralScanner>();

            return(compLongRangeMineralScanner.CanUseNow && !building.IsBurning());
        }
        public override IEnumerable <Gizmo> CompGetGizmosExtra()
        {
            if (parent.Faction == Faction.OfPlayer)
            {
                ThingDef resource = targetMineable.building.mineableThing;
                ThingDef localD;
                yield return((Gizmo) new Command_Action
                {
                    defaultLabel = "CommandSelectMineralToScanFor".Translate() + ": " + resource.LabelCap,
                    icon = resource.uiIcon,
                    iconAngle = resource.uiIconAngle,
                    iconOffset = resource.uiIconOffset,
                    action = delegate
                    {
                        List <ThingDef> mineables = ((GenStep_PreciousLump)GenStepDefOf.PreciousLump.genStep).mineables;
                        List <FloatMenuOption> list = new List <FloatMenuOption>();
                        foreach (ThingDef item2 in mineables)
                        {
                            localD = item2;
                            FloatMenuOption item = new FloatMenuOption(localD.building.mineableThing.LabelCap, delegate
                            {
                                foreach (object selectedObject in Find.Selector.SelectedObjects)
                                {
                                    Thing thing = selectedObject as Thing;
                                    if (thing != null)
                                    {
                                        CompLongRangeMineralScanner compLongRangeMineralScanner = thing.TryGetComp <CompLongRangeMineralScanner>();
                                        if (compLongRangeMineralScanner != null)
                                        {
                                            compLongRangeMineralScanner.targetMineable = localD;
                                        }
                                    }
                                }
                            }, MenuOptionPriority.Default, null, null, 29f, (Rect rect) => Widgets.InfoCardButton(rect.x + 5f, rect.y + (rect.height - 24f) / 2f, localD.building.mineableThing));
                            list.Add(item);
                        }
                        Find.WindowStack.Add(new FloatMenu(list));
                    }
                });

                /*Error: Unable to find new state assignment for yield return*/;
            }
            if (Prefs.DevMode)
            {
                yield return((Gizmo) new Command_Action
                {
                    defaultLabel = "Dev: Find resources now",
                    action = delegate
                    {
                        ((_003CCompGetGizmosExtra_003Ec__Iterator0) /*Error near IL_0144: stateMachine*/)._0024this.FoundMinerals(PawnsFinder.AllMaps_FreeColonists.FirstOrDefault());
                    }
                });

                /*Error: Unable to find new state assignment for yield return*/;
            }
        }
Beispiel #5
0
 public override IEnumerable <Gizmo> CompGetGizmosExtra()
 {
     if (this.parent.Faction == Faction.OfPlayer)
     {
         ThingDef       resource = this.targetMineable.building.mineableThing;
         Command_Action setTarg  = new Command_Action();
         setTarg.defaultLabel = "CommandSelectMineralToScanFor".Translate() + ": " + resource.LabelCap;
         setTarg.icon         = resource.uiIcon;
         setTarg.iconAngle    = resource.uiIconAngle;
         setTarg.iconOffset   = resource.uiIconOffset;
         setTarg.action       = delegate
         {
             List <ThingDef>        mineables = ((GenStep_PreciousLump)GenStepDefOf.PreciousLump.genStep).mineables;
             List <FloatMenuOption> list      = new List <FloatMenuOption>();
             foreach (ThingDef current in mineables)
             {
                 ThingDef        localD = current;
                 FloatMenuOption item   = new FloatMenuOption(localD.building.mineableThing.LabelCap, delegate
                 {
                     foreach (object current2 in Find.Selector.SelectedObjects)
                     {
                         Thing thing = current2 as Thing;
                         if (thing != null)
                         {
                             CompLongRangeMineralScanner compLongRangeMineralScanner = thing.TryGetComp <CompLongRangeMineralScanner>();
                             if (compLongRangeMineralScanner != null)
                             {
                                 compLongRangeMineralScanner.targetMineable = localD;
                             }
                         }
                     }
                 }, MenuOptionPriority.Default, null, null, 29f, (Rect rect) => Widgets.InfoCardButton(rect.x + 5f, rect.y + (rect.height - 24f) / 2f, localD.building.mineableThing), null);
                 list.Add(item);
             }
             Find.WindowStack.Add(new FloatMenu(list));
         };
         yield return(setTarg);
     }
     if (Prefs.DevMode)
     {
         yield return(new Command_Action
         {
             defaultLabel = "Dev: Find resources now",
             action = delegate
             {
                 this.$this.FoundMinerals(PawnsFinder.AllMaps_FreeColonists.FirstOrDefault <Pawn>());
             }
         });
     }
 }
        protected override IEnumerable <Toil> MakeNewToils()
        {
            _003CMakeNewToils_003Ec__Iterator0 _003CMakeNewToils_003Ec__Iterator = (_003CMakeNewToils_003Ec__Iterator0) /*Error near IL_0036: stateMachine*/;

            this.FailOnDespawnedNullOrForbidden(TargetIndex.A);
            this.FailOnBurningImmobile(TargetIndex.A);
            this.FailOn(delegate
            {
                CompLongRangeMineralScanner compLongRangeMineralScanner = _003CMakeNewToils_003Ec__Iterator._0024this.job.targetA.Thing.TryGetComp <CompLongRangeMineralScanner>();
                return(!compLongRangeMineralScanner.CanUseNow);
            });
            yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.InteractionCell));

            /*Error: Unable to find new state assignment for yield return*/;
        }
Beispiel #7
0
 private bool InterruptsMe(CompLongRangeMineralScanner otherScanner)
 {
     if (otherScanner == this)
     {
         return(false);
     }
     if (!otherScanner.Active)
     {
         return(false);
     }
     if (this.Props.mtbDays != otherScanner.Props.mtbDays)
     {
         return(otherScanner.Props.mtbDays < this.Props.mtbDays);
     }
     return(otherScanner.parent.thingIDNumber < this.parent.thingIDNumber);
 }
        public override IEnumerable <Gizmo> CompGetGizmosExtra()
        {
            foreach (Gizmo item2 in base.CompGetGizmosExtra())
            {
                yield return(item2);
            }
            if (parent.Faction != Faction.OfPlayer)
            {
                yield break;
            }
            ThingDef       mineableThing  = targetMineable.building.mineableThing;
            Command_Action command_Action = new Command_Action();

            command_Action.defaultLabel = "CommandSelectMineralToScanFor".Translate() + ": " + mineableThing.LabelCap;
            command_Action.icon         = mineableThing.uiIcon;
            command_Action.iconAngle    = mineableThing.uiIconAngle;
            command_Action.iconOffset   = mineableThing.uiIconOffset;
            command_Action.action       = delegate
            {
                List <ThingDef>        mineables = ((GenStep_PreciousLump)GenStepDefOf.PreciousLump.genStep).mineables;
                List <FloatMenuOption> list      = new List <FloatMenuOption>();
                ThingDef localD = default(ThingDef);
                foreach (ThingDef item3 in mineables)
                {
                    localD = item3;
                    FloatMenuOption item = new FloatMenuOption(localD.building.mineableThing.LabelCap, delegate
                    {
                        foreach (object selectedObject in Find.Selector.SelectedObjects)
                        {
                            Thing thing = selectedObject as Thing;
                            if (thing != null)
                            {
                                CompLongRangeMineralScanner compLongRangeMineralScanner = thing.TryGetComp <CompLongRangeMineralScanner>();
                                if (compLongRangeMineralScanner != null)
                                {
                                    compLongRangeMineralScanner.targetMineable = localD;
                                }
                            }
                        }
                    }, MenuOptionPriority.Default, null, null, 29f, (Rect rect) => Widgets.InfoCardButton(rect.x + 5f, rect.y + (rect.height - 24f) / 2f, localD.building.mineableThing));
                    list.Add(item);
                }
                Find.WindowStack.Add(new FloatMenu(list));
            };
            yield return(command_Action);
        }
Beispiel #9
0
        private void CalculateOtherActiveMineralScanners()
        {
            this.otherActiveMineralScanners.Clear();
            List <Map> maps      = Find.Maps;
            WorldGrid  worldGrid = Find.WorldGrid;

            for (int i = 0; i < maps.Count; i++)
            {
                List <Thing> list = maps[i].listerThings.ThingsInGroup(ThingRequestGroup.LongRangeMineralScanner);
                for (int j = 0; j < list.Count; j++)
                {
                    CompLongRangeMineralScanner compLongRangeMineralScanner = list[j].TryGetComp <CompLongRangeMineralScanner>();
                    if (this.InterruptsMe(compLongRangeMineralScanner))
                    {
                        Vector3 tileCenter = worldGrid.GetTileCenter(maps[i].Tile);
                        float   second     = worldGrid.TileRadiusToAngle(compLongRangeMineralScanner.Props.radius);
                        this.otherActiveMineralScanners.Add(new Pair <Vector3, float>(tileCenter, second));
                    }
                }
            }
        }