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); } }
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 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); } }
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); } }
// 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); } } }
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); } } }
private void ToggleAction() { AllowToolController.Instance.WorldSettings.TogglePawnPartyHunting(pawn, !AllowToolUtility.PartyHuntIsEnabled(pawn)); }
protected Predicate <Thing> GetVisibleThingFilter() { var visibleRect = AllowToolUtility.GetVisibleMapRect(); return(t => visibleRect.Contains(t.Position)); }
public static AcceptanceReport FriendlyPawnIsValidTarget(Thing t) { var result = !AllowToolUtility.PawnIsFriendly(t); return(result ? true : new AcceptanceReport("Finish_off_floatMenu_reason_friendly".Translate())); }