public static IEnumerable <Zone> MultiSelectableZonesInScreenRectDistinct(Rect rect) { CellRect mapRect = ThingSelectionUtility.GetMapRect(rect); ThingSelectionUtility.yieldedZones.Clear(); try { foreach (IntVec3 c in mapRect) { if (c.InBounds(Find.CurrentMap)) { Zone zone = c.GetZone(Find.CurrentMap); if (zone != null) { if (zone.IsMultiselectable) { if (!ThingSelectionUtility.yieldedZones.Contains(zone)) { yield return(zone); } } } } } } finally { base.< > __Finally0(); } }
public static IEnumerable <Thing> MultiSelectableThingsInScreenRectDistinct(Rect rect) { CellRect mapRect = ThingSelectionUtility.GetMapRect(rect); ThingSelectionUtility.yieldedThings.Clear(); foreach (IntVec3 item in mapRect) { if (item.InBounds(Find.VisibleMap)) { List <Thing> cellThings = Find.VisibleMap.thingGrid.ThingsListAt(item); if (cellThings != null) { for (int i = 0; i < cellThings.Count; i++) { Thing t = cellThings[i]; if (ThingSelectionUtility.SelectableByMapClick(t) && !t.def.neverMultiSelect && !ThingSelectionUtility.yieldedThings.Contains(t)) { yield return(t); /*Error: Unable to find new state assignment for yield return*/; } } } } } yield break; IL_01a1: /*Error near IL_01a2: Unexpected return in MoveNext()*/; }
public static IEnumerable <Thing> MultiSelectableThingsInScreenRectDistinct(Rect rect) { CellRect mapRect = ThingSelectionUtility.GetMapRect(rect); ThingSelectionUtility.yieldedThings.Clear(); try { foreach (IntVec3 c in mapRect) { if (c.InBounds(Find.CurrentMap)) { List <Thing> cellThings = Find.CurrentMap.thingGrid.ThingsListAt(c); if (cellThings != null) { for (int i = 0; i < cellThings.Count; i++) { Thing t = cellThings[i]; if (ThingSelectionUtility.SelectableByMapClick(t) && !t.def.neverMultiSelect && !ThingSelectionUtility.yieldedThings.Contains(t)) { yield return(t); } } } } } } finally { base.< > __Finally0(); } }
public bool CanTarget(TargetInfo targ) { if (this.validator != null && !this.validator(targ)) { return(false); } if (targ.Thing == null) { return(this.canTargetLocations); } if (this.neverTargetDoors && targ.Thing.def.IsDoor) { return(false); } if (this.onlyTargetDamagedThings && targ.Thing.HitPoints == targ.Thing.MaxHitPoints) { return(false); } if (this.onlyTargetFlammables && !targ.Thing.FlammableNow) { return(false); } if (this.mustBeSelectable && !ThingSelectionUtility.SelectableByMapClick(targ.Thing)) { return(false); } if (this.targetSpecificThing != null && targ.Thing == this.targetSpecificThing) { return(true); } if (this.canTargetFires && targ.Thing.def == ThingDefOf.Fire) { return(true); } if (this.canTargetPawns && targ.Thing.def.category == ThingCategory.Pawn) { if (((Pawn)targ.Thing).Downed) { if (this.neverTargetIncapacitated) { return(false); } } else if (this.onlyTargetIncapacitatedPawns) { return(false); } return(this.onlyTargetFactions == null || this.onlyTargetFactions.Contains(targ.Thing.Faction)); } if (this.canTargetBuildings && targ.Thing.def.category == ThingCategory.Building) { return((!this.onlyTargetThingsAffectingRegions || targ.Thing.def.AffectsRegions) && (this.onlyTargetFactions == null || this.onlyTargetFactions.Contains(targ.Thing.Faction))); } return(this.canTargetItems && (!this.mapObjectTargetsMustBeAutoAttackable || targ.Thing.def.isAutoAttackableMapObject)); }
public void ShortcutKeysOnGUI() { if (Current.ProgramState == ProgramState.Playing) { if (KeyBindingDefOf.NextColonist.KeyDownEvent) { ThingSelectionUtility.SelectNextColonist(); Event.current.Use(); } if (KeyBindingDefOf.PreviousColonist.KeyDownEvent) { ThingSelectionUtility.SelectPreviousColonist(); Event.current.Use(); } } }
public static IEnumerable <object> SelectableObjectsAt(IntVec3 c, Map map) { List <Thing> thingList = c.GetThingList(map); for (int i = 0; i < thingList.Count; i++) { Thing t = thingList[i]; if (ThingSelectionUtility.SelectableByMapClick(t)) { yield return(t); } } Zone z = map.zoneManager.ZoneAt(c); if (z != null) { yield return(z); } }
public static IEnumerable <Zone> MultiSelectableZonesInScreenRectDistinct(Rect rect) { CellRect mapRect = ThingSelectionUtility.GetMapRect(rect); ThingSelectionUtility.yieldedZones.Clear(); foreach (IntVec3 item in mapRect) { if (item.InBounds(Find.VisibleMap)) { Zone zone = item.GetZone(Find.VisibleMap); if (zone != null && zone.IsMultiselectable && !ThingSelectionUtility.yieldedZones.Contains(zone)) { yield return(zone); /*Error: Unable to find new state assignment for yield return*/; } } } yield break; IL_014a: /*Error near IL_014b: Unexpected return in MoveNext()*/; }
public static IEnumerable <object> SelectableObjectsAt(IntVec3 c, Map map) { List <Thing> thingList = c.GetThingList(map); for (int i = 0; i < thingList.Count; i++) { Thing t = thingList[i]; if (ThingSelectionUtility.SelectableByMapClick(t)) { yield return((object)t); /*Error: Unable to find new state assignment for yield return*/; } } Zone z = map.zoneManager.ZoneAt(c); if (z != null) { yield return((object)z); /*Error: Unable to find new state assignment for yield return*/; } }
private void SelectAllMatchingObjectUnderMouseOnScreen() { List <object> list = this.SelectableObjectsUnderMouse().ToList <object>(); if (list.Count == 0) { return; } Thing clickedThing = list.FirstOrDefault((object o) => o is Pawn && ((Pawn)o).Faction == Faction.OfPlayer && !((Pawn)o).IsPrisoner) as Thing; clickedThing = (list.FirstOrDefault((object o) => o is Pawn) as Thing); if (clickedThing == null) { clickedThing = ((from o in list where o is Thing && !((Thing)o).def.neverMultiSelect select o).FirstOrDefault <object>() as Thing); } Rect rect = new Rect(0f, 0f, (float)UI.screenWidth, (float)UI.screenHeight); if (clickedThing != null) { IEnumerable enumerable = ThingSelectionUtility.MultiSelectableThingsInScreenRectDistinct(rect); Predicate <Thing> predicate = delegate(Thing t) { if (t.def != clickedThing.def || t.Faction != clickedThing.Faction || this.IsSelected(t)) { return(false); } Pawn pawn = clickedThing as Pawn; if (pawn != null) { Pawn pawn2 = t as Pawn; if (pawn2.RaceProps != pawn.RaceProps) { return(false); } if (pawn2.HostFaction != pawn.HostFaction) { return(false); } } return(true); }; foreach (Thing obj in enumerable) { if (predicate(obj)) { this.Select(obj, true, true); } } return; } if (list.FirstOrDefault((object o) => o is Zone && ((Zone)o).IsMultiselectable) == null) { return; } IEnumerable <Zone> enumerable2 = ThingSelectionUtility.MultiSelectableZonesInScreenRectDistinct(rect); foreach (Zone current in enumerable2) { if (!this.IsSelected(current)) { this.Select(current, true, true); } } }
private void SelectInsideDragBox() { if (!this.ShiftIsHeld) { this.ClearSelection(); } bool selectedSomething = false; List <Thing> list = Find.ColonistBar.MapColonistsOrCorpsesInScreenRect(this.dragBox.ScreenRect); for (int i = 0; i < list.Count; i++) { selectedSomething = true; this.Select(list[i], true, true); } if (selectedSomething) { return; } List <Caravan> list2 = Find.ColonistBar.CaravanMembersCaravansInScreenRect(this.dragBox.ScreenRect); for (int j = 0; j < list2.Count; j++) { if (!selectedSomething) { CameraJumper.TryJumpAndSelect(list2[j]); selectedSomething = true; } else { Find.WorldSelector.Select(list2[j], true); } } if (selectedSomething) { return; } List <Thing> boxThings = ThingSelectionUtility.MultiSelectableThingsInScreenRectDistinct(this.dragBox.ScreenRect).ToList <Thing>(); Func <Predicate <Thing>, bool> func = delegate(Predicate <Thing> predicate) { foreach (Thing current2 in from t in boxThings where predicate(t) select t) { this.Select(current2, true, true); selectedSomething = true; } return(selectedSomething); }; Predicate <Thing> arg = (Thing t) => t.def.category == ThingCategory.Pawn && ((Pawn)t).RaceProps.Humanlike && t.Faction == Faction.OfPlayer; if (func(arg)) { return; } Predicate <Thing> arg2 = (Thing t) => t.def.category == ThingCategory.Pawn && ((Pawn)t).RaceProps.Humanlike; if (func(arg2)) { return; } Predicate <Thing> arg3 = (Thing t) => t.def.CountAsResource; if (func(arg3)) { return; } Predicate <Thing> arg4 = (Thing t) => t.def.category == ThingCategory.Pawn; if (func(arg4)) { return; } if (func((Thing t) => t.def.selectable)) { return; } List <Zone> list3 = ThingSelectionUtility.MultiSelectableZonesInScreenRectDistinct(this.dragBox.ScreenRect).ToList <Zone>(); foreach (Zone current in list3) { selectedSomething = true; this.Select(current, true, true); } if (selectedSomething) { return; } this.SelectUnderMouse(); }
public bool CanTarget(TargetInfo targ) { if (validator != null && !validator(targ)) { return(false); } if (targ.Thing == null) { return(canTargetLocations); } if (neverTargetDoors && targ.Thing.def.IsDoor) { return(false); } if (onlyTargetDamagedThings && targ.Thing.HitPoints == targ.Thing.MaxHitPoints) { return(false); } if (onlyTargetFlammables && !targ.Thing.FlammableNow) { return(false); } if (mustBeSelectable && !ThingSelectionUtility.SelectableByMapClick(targ.Thing)) { return(false); } if (targetSpecificThing != null && targ.Thing == targetSpecificThing) { return(true); } if (canTargetFires && targ.Thing.def == ThingDefOf.Fire) { return(true); } if (canTargetPawns && targ.Thing.def.category == ThingCategory.Pawn) { Pawn pawn = (Pawn)targ.Thing; if (pawn.Downed) { if (neverTargetIncapacitated) { return(false); } } else if (onlyTargetIncapacitatedPawns) { return(false); } if (onlyTargetFactions != null && !onlyTargetFactions.Contains(targ.Thing.Faction)) { return(false); } if (pawn.NonHumanlikeOrWildMan()) { if (pawn.Faction == Faction.OfMechanoids) { if (!canTargetMechs) { return(false); } } else if (!canTargetAnimals) { return(false); } } if (!pawn.NonHumanlikeOrWildMan() && !canTargetHumans) { return(false); } if (onlyTargetControlledPawns && !pawn.IsColonistPlayerControlled) { return(false); } if (onlyTargetColonists && (!pawn.IsColonist || pawn.HostFaction != null)) { return(false); } if (onlyTargetPrisonersOfColony && !pawn.IsPrisonerOfColony) { return(false); } if (onlyTargetPsychicSensitive && pawn.GetStatValue(StatDefOf.PsychicSensitivity) <= 0f) { return(false); } if (neverTargetHostileFaction && !pawn.IsPrisonerOfColony) { Faction factionOrExtraMiniOrHomeFaction = pawn.FactionOrExtraMiniOrHomeFaction; if (factionOrExtraMiniOrHomeFaction != null && factionOrExtraMiniOrHomeFaction.HostileTo(Faction.OfPlayer)) { return(false); } } return(true); } if (canTargetBuildings && targ.Thing.def.category == ThingCategory.Building) { if (onlyTargetThingsAffectingRegions && !targ.Thing.def.AffectsRegions) { return(false); } if (onlyTargetFactions != null && !onlyTargetFactions.Contains(targ.Thing.Faction)) { return(false); } return(true); } if (canTargetItems) { if (mapObjectTargetsMustBeAutoAttackable && !targ.Thing.def.isAutoAttackableMapObject) { return(false); } if (thingCategory == ThingCategory.None || thingCategory == targ.Thing.def.category) { return(true); } } return(false); }
private void SelectAllMatchingObjectUnderMouseOnScreen() { List <object> list = SelectableObjectsUnderMouse().ToList(); if (list.Count == 0) { return; } Thing clickedThing = list.FirstOrDefault((object o) => o is Pawn && ((Pawn)o).Faction == Faction.OfPlayer && !((Pawn)o).IsPrisoner) as Thing; clickedThing = (list.FirstOrDefault((object o) => o is Pawn) as Thing); if (clickedThing == null) { clickedThing = (list.Where((object o) => o is Thing && !((Thing)o).def.neverMultiSelect).FirstOrDefault() as Thing); } Rect rect = new Rect(0f, 0f, UI.screenWidth, UI.screenHeight); if (clickedThing == null) { if (list.FirstOrDefault((object o) => o is Zone && ((Zone)o).IsMultiselectable) != null) { foreach (Zone item in ThingSelectionUtility.MultiSelectableZonesInScreenRectDistinct(rect)) { if (!IsSelected(item)) { Select(item); } } } } else { IEnumerable <Thing> enumerable = ThingSelectionUtility.MultiSelectableThingsInScreenRectDistinct(rect); Predicate <Thing> predicate = delegate(Thing t) { if (t.def != clickedThing.GetInnerIfMinified().def || t.Faction != clickedThing.Faction || IsSelected(t)) { return(false); } Pawn pawn = clickedThing as Pawn; if (pawn != null) { Pawn pawn2 = t as Pawn; if (pawn2.RaceProps != pawn.RaceProps) { return(false); } if (pawn2.HostFaction != pawn.HostFaction) { return(false); } } return(true); }; foreach (Thing item2 in (IEnumerable)enumerable) { if (predicate(item2.GetInnerIfMinified())) { Select(item2); } } } }
private void SelectAllMatchingObjectUnderMouseOnScreen() { List <object> list = SelectableObjectsUnderMouse().ToList(); if (list.Count != 0) { Thing clickedThing = list.FirstOrDefault((object o) => o is Pawn && ((Pawn)o).Faction == Faction.OfPlayer && !((Pawn)o).IsPrisoner) as Thing; clickedThing = (list.FirstOrDefault((object o) => o is Pawn) as Thing); if (clickedThing == null) { clickedThing = ((from o in list where o is Thing && !((Thing)o).def.neverMultiSelect select o).FirstOrDefault() as Thing); } Rect rect = new Rect(0f, 0f, (float)UI.screenWidth, (float)UI.screenHeight); if (clickedThing == null) { object obj = list.FirstOrDefault((object o) => o is Zone && ((Zone)o).IsMultiselectable); if (obj != null) { IEnumerable <Zone> enumerable = ThingSelectionUtility.MultiSelectableZonesInScreenRectDistinct(rect); foreach (Zone item in enumerable) { if (!IsSelected(item)) { Select(item); } } } } else { IEnumerable enumerable2 = ThingSelectionUtility.MultiSelectableThingsInScreenRectDistinct(rect); Predicate <Thing> predicate = delegate(Thing t) { if (t.def != clickedThing.def || t.Faction != clickedThing.Faction || IsSelected(t)) { return(false); } Pawn pawn = clickedThing as Pawn; if (pawn != null) { Pawn pawn2 = t as Pawn; if (pawn2.RaceProps != pawn.RaceProps) { return(false); } if (pawn2.HostFaction != pawn.HostFaction) { return(false); } } return(true); }; IEnumerator enumerator2 = enumerable2.GetEnumerator(); try { while (enumerator2.MoveNext()) { Thing obj2 = (Thing)enumerator2.Current; if (predicate(obj2)) { Select(obj2); } } } finally { IDisposable disposable; if ((disposable = (enumerator2 as IDisposable)) != null) { disposable.Dispose(); } } } } }