public override ActivationResult Activate(Designator designator, Map map) { var hitCount = DesignateAllThings(designator, map, t => t is Plant p && p.Blighted && !p.HasDesignation(DesignationDefOf.CutPlant)); return(ActivationResult.FromCount(hitCount, BaseTextKey)); }
public override ActivationResult Activate(Designator designator, Map map) { // distinct designation defs on selected things var selectedObjects = new HashSet <object>(Find.Selector.SelectedObjects); // also include designations on cells of selected things var selectedTilePositions = new HashSet <IntVec3>( selectedObjects.Where(t => t is Thing) .Select(t => ((Thing)t).Position) ); var selectedDesignationDefs = map.designationManager.allDesignations .Where(des => des.target.HasThing ? selectedObjects.Contains(des.target.Thing) : selectedTilePositions.Contains(des.target.Cell)) .Select(des => des.def) .Distinct() .ToArray(); var affectedDesignations = new HashSet <LocalTargetInfo>(); foreach (var designation in map.designationManager.allDesignations.ToArray()) { if (selectedDesignationDefs.Contains(designation.def)) { map.designationManager.RemoveDesignation(designation); affectedDesignations.Add(designation.target); } } return(affectedDesignations.Count > 0 ? ActivationResult.Success(BaseMessageKey, selectedDesignationDefs.Length, affectedDesignations.Count) : ActivationResult.Failure(BaseMessageKey)); }
public override ActivationResult Activate(Designator designator, Map map) { int hitCountThings = 0; int hitCountTiles = 0; var manager = map.designationManager; foreach (var des in manager.allDesignations.ToArray()) { // skip planning designation, as so does cancel if (des.def == null || !des.def.designateCancelable || des.def == DesignationDefOf.Plan) { continue; } if (des.target.Thing != null) { hitCountThings++; } else { hitCountTiles++; } manager.RemoveDesignation(des); } return(ActivationResult.SuccessMessage("Designator_context_cancel_desig_msg".Translate(hitCountThings, hitCountTiles))); }
public override ActivationResult Activate(Designator designator, Map map) { var playerFaction = Faction.OfPlayer; var hitCount = DesignateAllThings(designator, map, t => t.Faction != playerFaction); return(ActivationResult.FromCount(hitCount, BaseTextKey)); }
public override ActivationResult Activate(Designator designator, Map map) { var visibleRect = AllowToolUtility.GetVisibleMapRect(); var hitCount = DesignateAllThings(designator, map, t => MenuEntry_HaulUrgentAll.CanAutoDesignateThingForUrgentHauling(t) && visibleRect.Contains(t.Position)); return(hitCount > 0 ? ActivationResult.Success(BaseTextKey, hitCount) : ActivationResult.Failure(BaseMessageKey)); }
public override ActivationResult Activate(Designator designator, Map map) { var thingIsVisible = GetVisibleThingFilter(); var hitCount = DesignateAllThings(designator, map, t => MenuEntry_HaulUrgentAll.CanAutoDesignateThingForUrgentHauling(t) && thingIsVisible(t)); return(hitCount > 0 ? ActivationResult.Success(BaseTextKey, hitCount) : ActivationResult.Failure(BaseMessageKey)); }
public override ActivationResult Activate(Designator designator, Map map) { int hitCount = 0; foreach (var blueprint in map.listerThings.ThingsInGroup(ThingRequestGroup.Blueprint).ToArray()) { blueprint.Destroy(DestroyMode.Cancel); hitCount++; } return(ActivationResult.FromCount(hitCount, BaseMessageKey)); }
public static ActivationResult SelectSimilarWithFilter(Designator designator, Map map, string successMessageKey, string failureMessageKey, Predicate <Thing> filter = null) { var des = (Designator_SelectSimilar)designator; des = (Designator_SelectSimilar)des.PickUpReverseDesignator(); if (Find.Selector.NumSelected == 0) { return(ActivationResult.Failure(failureMessageKey)); } des.ReindexSelectionConstraints(); // find things to select var thingsToSelect = new List <Thing>(); foreach (var thing in map.listerThings.AllThings) { if (thing != null && (filter == null || filter(thing)) && des.CanDesignateThing(thing).Accepted) { thingsToSelect.Add(thing); } } // sort by distance to camera var cameraCenter = Current.CameraDriver.MapPosition; thingsToSelect.SortBy(t => t.Position.DistanceTo(cameraCenter)); // do selection var hitCount = 0; var limitWasHit = false; foreach (var thing in thingsToSelect) { if (!des.SelectionLimitAllowsAdditionalThing()) { limitWasHit = true; break; } if (des.TrySelectThing(thing)) { hitCount++; } } return(limitWasHit ? ActivationResult.SuccessMessage((successMessageKey + "_part").Translate(hitCount, thingsToSelect.Count)) : ActivationResult.Success(successMessageKey, hitCount)); }
public override ActivationResult Activate(Designator designator, Map map) { MineDesignateSelectedOres(map); var anyMineDesignations = map.designationManager.SpawnedDesignationsOfDef(DesignationDefOf.Mine).Any(); if (!anyMineDesignations) { return(ActivationResult.Failure(BaseMessageKey)); } // expand designations, excluding designated fogged cells to prevent exposing completely hidden ores var hits = FloodExpandDesignationType(DesignationDefOf.Mine, map, (cell, m) => !m.fogGrid.IsFogged(cell), MineDesignationExpansionIsValid); return(ActivationResult.Success(BaseMessageKey, hits)); }
public override ActivationResult Activate(Designator designator, Map map) { int hitCount = 0; bool friendliesFound = false; foreach (var thing in map.listerThings.ThingsInGroup(DesignationRequestGroup)) { if (ThingIsValidForDesignation(thing) && designator.CanDesignateThing(thing).Accepted) { designator.DesignateThing(thing); hitCount++; if (AllowToolUtility.PawnIsFriendly(thing)) { friendliesFound = true; } } } if (hitCount > 0 && friendliesFound) { Messages.Message("Designator_context_finish_allies".Translate(hitCount), MessageTypeDefOf.CautionInput); } return(ActivationResult.FromCount(hitCount, BaseTextKey)); }
protected ActivationResult ActivateInHomeArea(Designator designator, Map map) { var hitCount = DesignateAllThingsInHomeArea(designator, map); return(ActivationResult.FromCount(hitCount, BaseMessageKey)); }
public virtual ActivationResult Activate(Designator designator, Map map) { var hitCount = DesignateAllThings(designator, map, null); return(ActivationResult.FromCount(hitCount, BaseMessageKey)); }
public override ActivationResult Activate(Designator designator, Map map) { var hitCount = DesignateAllThings(designator, map, CanAutoDesignateThingForUrgentHauling); return(ActivationResult.FromCount(hitCount, BaseMessageKey)); }
protected ActivationResult ActivateWithFilter(Designator designator, Map map, Predicate <Thing> thingFilter) { var hitCount = DesignateAllThings(designator, map, thingFilter); return(ActivationResult.FromCount(hitCount, BaseMessageKey)); }