public override ActivationResult Activate(Designator designator, Map map)
        {
            var visibleRect = AllowToolUtility.GetVisibleMapRect();

            return(MenuEntry_SelectSimilarAll.SelectSimilarWithFilter(designator, map,
                                                                      BaseTextKey, BaseMessageKey, t => visibleRect.Contains(t.Position)));
        }
 private static void PrepareReverseDesignatorContextMenus()
 {
     ClearReverseDesignatorPairs();
     foreach (var reverseDesignator in AllowToolUtility.EnumerateReverseDesignators())
     {
         TryBindDesignatorToProvider(reverseDesignator);
     }
 }
Пример #3
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));
        }
Пример #4
0
        public override GizmoResult GizmoOnGUI(Vector2 topLeft, float maxWidth)
        {
            var result = base.GizmoOnGUI(topLeft, maxWidth);

            if (Event.current.type == EventType.Repaint)
            {
                AllowToolUtility.DrawRightClickIcon(topLeft.x + overlayIconOffset.x, topLeft.y + overlayIconOffset.y);
            }
            return(result);
        }
 private static void PrepareReverseDesignatorContextMenus()
 {
     ClearReverseDesignatorPairs();
     foreach (var reverseDesignator in AllowToolUtility.EnumerateReverseDesignators())
     {
         TryBindDesignatorToProvider(reverseDesignator);
     }
     foreach (var designator in AllowThingToggleHandler.GetImpliedReverseDesignators())
     {
         TryBindDesignatorToProvider(designator);
     }
 }
Пример #6
0
 public Command_PartyHunt(Pawn pawn)
 {
     this.pawn    = pawn;
     icon         = AllowToolDefOf.Textures.partyHunt;
     defaultLabel = "PartyHuntToggle_label".Translate();
     defaultDesc  = "PartyHuntToggle_desc".Translate();
     isActive     = () => AllowToolUtility.PartyHuntIsEnabled(pawn);
     toggleAction = ToggleAction;
     hotKey       = KeyBindingDefOf.Misc9;
     disabled     = !AllowToolUtility.PawnCapableOfViolence(pawn);
     if (disabled)
     {
         disabledReason = "IsIncapableOfViolence".Translate(pawn.Name.ToStringShort, pawn);
     }
 }
 public static void RebindAllContextMenus()
 {
     try {
         designatorMenuProviders.Clear();
         // bind handlers to designator instances
         // we can't do a direct type lookup here, since we want to support modded designators.
         // i.e. Designator_Hunt -> Designator_ModdedHunt should also be supported.
         var allDesignators = AllowToolUtility.EnumerateResolvedDirectDesignators();
         foreach (var designator in allDesignators)
         {
             // check if designator matches the type required by any of the handlers
             TryBindDesignatorToProvider(designator);
         }
         PrepareReverseDesignatorContextMenus();
     } catch (Exception e) {
         AllowToolController.Logger.ReportException(e);
     }
 }
Пример #8
0
        // draws the "rightclickable" icon over compatible designator buttons
        public static void DrawCommandOverlayIfNeeded(Command command, Vector2 topLeft)
        {
            var designator = TryResolveCommandToDesignator(command);

            if (designator != null)
            {
                try {
                    if (!AllowToolController.Instance.Handles.ContextOverlaySetting.Value)
                    {
                        return;
                    }
                    if (designatorMenuProviders.ContainsKey(designator))
                    {
                        AllowToolUtility.DrawRightClickIcon(topLeft.x + overlayIconOffset.x, topLeft.y + overlayIconOffset.y);
                    }
                } catch (Exception e) {
                    designatorMenuProviders.Remove(designator);
                    AllowToolController.Logger.ReportException(e);
                }
            }
        }
Пример #9
0
        public override void ContextMenuAction(Designator designator, Map map)
        {
            int  hitCount        = 0;
            bool friendliesFound = false;

            foreach (var thing in map.listerThings.ThingsInGroup(DesingatorRequestGroup))
            {
                if (ValidForDesignation(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), MessageSound.Standard);
            }
            ReportActionResult(hitCount);
        }
        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));
        }
        // draws the "rightclickable" icon over compatible designator buttons
        public static void DrawCommandOverlayIfNeeded(Command command, Vector2 topLeft)
        {
            var designator = TryResolveCommandToDesignator(command);

            if (designator != null)
            {
                try {
                    if (!AllowToolController.Instance.Handles.ContextOverlaySetting.Value)
                    {
                        return;
                    }
                    if (designatorMenuProviders.ContainsKey(designator))
                    {
                        var verticalOffset = command is Command_Toggle ?
                                             56f : 0f;            // checkmark/cross is in the way, use lower right corner
                        AllowToolUtility.DrawRightClickIcon(topLeft.x + overlayIconOffset.x,
                                                            topLeft.y + overlayIconOffset.y + verticalOffset);
                    }
                } catch (Exception e) {
                    designatorMenuProviders.Remove(designator);
                    AllowToolController.Logger.ReportException(e);
                }
            }
        }
Пример #12
0
 private void ToggleAction()
 {
     AllowToolController.Instance.WorldSettings.TogglePawnPartyHunting(pawn, !AllowToolUtility.PartyHuntIsEnabled(pawn));
 }
Пример #13
0
        protected Predicate <Thing> GetVisibleThingFilter()
        {
            var visibleRect = AllowToolUtility.GetVisibleMapRect();

            return(t => visibleRect.Contains(t.Position));
        }
Пример #14
0
        public static AcceptanceReport FriendlyPawnIsValidTarget(Thing t)
        {
            var result = !AllowToolUtility.PawnIsFriendly(t);

            return(result ? true : new AcceptanceReport("Finish_off_floatMenu_reason_friendly".Translate()));
        }