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));
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 7
0
        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));
        }
Exemplo n.º 8
0
        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));
        }
Exemplo n.º 14
0
        protected ActivationResult ActivateWithFilter(Designator designator, Map map, Predicate <Thing> thingFilter)
        {
            var hitCount = DesignateAllThings(designator, map, thingFilter);

            return(ActivationResult.FromCount(hitCount, BaseMessageKey));
        }