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(); };
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; }
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*/; } }
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*/; }
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); }
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)); } } } }