private void CheckForHotkeyPresses() { if (Event.current.keyCode == KeyCode.None) { return; } if (AllowToolDefOf.ToolContextMenuAction.JustPressed) { DesignatorContextMenuController.ProcessContextActionHotkeyPress(); } if (!settingGlobalHotkeys || Find.CurrentMap == null) { return; } for (int i = 0; i < activeDesignators.Count; i++) { var entry = activeDesignators[i]; if (entry.key == null || !entry.key.JustPressed || !entry.designator.Visible) { continue; } Find.DesignatorManager.Select(entry.designator); break; } }
public static void EnhanceStockAllowToggle(Command_Toggle toggle) { var standInDesignator = toggle.isActive() ? allowDesignatorStandIn : forbidDesignatorStandIn; DesignatorContextMenuController.RegisterReverseDesignatorPair(standInDesignator, toggle); AddIconReplacementSupport(toggle, standInDesignator); }
public override void Update() { Dragger.Update(); if (Time.frameCount % (60 * 60) == 0) // 'bout every minute { DesignatorContextMenuController.CheckForMemoryLeak(); } }
internal void PrepareSettingsHandles(ModSettingsPack pack) { GlobalHotkeysSetting = pack.GetHandle("globalHotkeys", "setting_globalHotkeys_label".Translate(), "setting_globalHotkeys_desc".Translate(), true); ContextOverlaySetting = pack.GetHandle("contextOverlay", "setting_contextOverlay_label".Translate(), "setting_contextOverlay_desc".Translate(), true); ContextWatermarkSetting = pack.GetHandle("contextWatermark", "setting_contextWatermark_label".Translate(), "setting_contextWatermark_desc".Translate(), true); ReplaceIconsSetting = pack.GetHandle("replaceIcons", "setting_replaceIcons_label".Translate(), "setting_replaceIcons_desc".Translate(), false); HaulWorktypeSetting = pack.GetHandle("haulUrgentlyWorktype", "setting_haulUrgentlyWorktype_label".Translate(), "setting_haulUrgentlyWorktype_desc".Translate(), true); FinishOffWorktypeSetting = pack.GetHandle("finishOffWorktype", "setting_finishOffWorktype_label".Translate(), "setting_finishOffWorktype_desc".Translate(), false); ExtendedContextActionSetting = pack.GetHandle("extendedContextActionKey", "setting_extendedContextHotkey_label".Translate(), "setting_extendedContextHotkey_desc".Translate(), true); ReverseDesignatorPickSetting = pack.GetHandle("reverseDesignatorPick", "setting_reverseDesignatorPick_label".Translate(), "setting_reverseDesignatorPick_desc".Translate(), true); FinishOffUnforbidsSetting = pack.GetHandle("finishOffUnforbids", "setting_finishOffUnforbids_label".Translate(), "setting_finishOffUnforbids_desc".Translate(), true); PartyHuntSetting = pack.GetHandle("partyHunt", "setting_partyHunt_label".Translate(), "setting_partyHunt_desc".Translate(), true); StorageSpaceAlertSetting = pack.GetHandle("storageSpaceAlert", "setting_storageSpaceAlert_label".Translate(), "setting_storageSpaceAlert_desc".Translate(), true); SelectionLimitSetting = pack.GetHandle("selectionLimit", "setting_selectionLimit_label".Translate(), "setting_selectionLimit_desc".Translate(), 200, Validators.IntRangeValidator(50, 100000)); SelectionLimitSetting.SpinnerIncrement = 50; // designators MakeSettingsCategoryToggle(pack, "setting_showToolToggles_label", () => expandToolSettings = !expandToolSettings); foreach (var designatorDef in DefDatabase <ThingDesignatorDef> .AllDefs) { var handleName = DesignatorHandleNamePrefix + designatorDef.defName; var handle = pack.GetHandle(handleName, "setting_showTool_label".Translate(designatorDef.label), null, true); handle.VisibilityPredicate = () => expandToolSettings; designatorToggleHandles[handleName] = handle; } // context menus MakeSettingsCategoryToggle(pack, "setting_showProviderToggles_label", () => expandProviderSettings = !expandProviderSettings); SettingHandle.ShouldDisplay menuEntryHandleVisibility = () => expandProviderSettings; foreach (var handle in DesignatorContextMenuController.RegisterMenuEntryHandles(pack)) { handle.VisibilityPredicate = menuEntryHandleVisibility; } // reverse designators MakeSettingsCategoryToggle(pack, "setting_showReverseToggles_label", () => expandReverseToolSettings = !expandReverseToolSettings); foreach (var reverseDef in DefDatabase <ReverseDesignatorDef> .AllDefs) { var handleName = ReverseDesignatorHandleNamePrefix + reverseDef.defName; var handle = pack.GetHandle(handleName, "setting_showTool_label".Translate(reverseDef.designatorDef.label), "setting_reverseDesignator_desc".Translate(), true); handle.VisibilityPredicate = () => expandReverseToolSettings; reverseDesignatorToggleHandles[handleName] = handle; } FinishOffSkillRequirement = pack.GetHandle("finishOffSkill", "setting_finishOffSkill_label".Translate(), "setting_finishOffSkill_desc".Translate(), true); FinishOffSkillRequirement.VisibilityPredicate = () => Prefs.DevMode; StripMineSettings = pack.GetHandle <StripMineGlobalSettings>("stripMineSettings", null, null); if (StripMineSettings.Value == null) { StripMineSettings.Value = new StripMineGlobalSettings(); } // invisible but resettable StripMineSettings.VisibilityPredicate = () => false; RegisterPackHandlesChangedCallback(pack); }
public static void InterceptInteraction(ref GizmoResult __result, Command __instance) { if (__result.State == GizmoState.Interacted || __result.State == GizmoState.OpenedFloatMenu) { var designator = DesignatorContextMenuController.TryResolveCommandToDesignator(__instance); if (designator != null && DesignatorContextMenuController.TryProcessDesignatorInput(designator)) // return a blank interact event if we intercepted the input { __result = new GizmoResult(GizmoState.Clear, __result.InteractEvent); } } }
internal void ScheduleDesignatorDependencyRefresh() { if (dependencyRefreshScheduled) { return; } dependencyRefreshScheduled = true; // push the job to the next frame to avoid repeating this for every category as the game loads HugsLibController.Instance.DoLater.DoNextUpdate(() => { try { dependencyRefreshScheduled = false; hotKeys.RebindAllDesignators(); DesignatorContextMenuController.RebindAllContextMenus(); } catch (Exception e) { Logger.Error($"Error during designator dependency refresh: {e}"); } }); }
public static void InjectCustomReverseDesignators(ReverseDesignatorDatabase database) { var designatorsList = database.AllDesignators; // inject a chop designator to compensate for the normalized Designator_PlantsCut designatorsList.Add(new Designator_PlantsHarvestWood()); // inject our custom designators foreach (var def in DefDatabase <ReverseDesignatorDef> .AllDefs) { if (AllowToolController.Instance.IsReverseDesignatorEnabledInSettings(def)) { var des = AllowToolController.Instance.InstantiateDesignator(def.designatorClass, def.designatorDef); if (Current.Game.Rules.DesignatorAllowed(des)) { designatorsList.Add(des); } } } DesignatorContextMenuController.PrepareReverseDesignatorContextMenus(); }
private void CheckForHotkeyPresses() { if (Find.CurrentMap == null || Event.current.keyCode == KeyCode.None) { return; } if (AllowToolDefOf.ToolContextMenuAction.JustPressed) { DesignatorContextMenuController.ProcessContextActionHotkeyPress(); } if (!AllowToolController.Instance.Handles.GlobalHotkeysSetting) { return; } for (int i = 0; i < activeListeners.Count; i++) { if (activeListeners[i].hotKey.JustPressed && activeListeners[i].designator.Visible) { Find.DesignatorManager.Select(activeListeners[i].designator); break; } } }
// we do our injections at world load because some mods overwrite ThingDesignatorDef.resolvedDesignators during init public override void WorldLoaded() { InjectDesignators(); DesignatorContextMenuController.PrepareDesignatorContextMenus(); WorldSettings = UtilityWorldObjectManager.GetUtilityWorldObject <WorldSettings>(); }
public override void Update() { DesignatorContextMenuController.Update(); }
// we do our injections at world load because some mods overwrite ThingDesignatorDef.resolvedDesignators during init public override void WorldLoaded() { InjectDesignators(); DesignatorContextMenuController.PrepareContextMenus(); }
public static bool InterceptRightClicksOnSupportedDesignators(Designator __instance) { return(!DesignatorContextMenuController.TryProcessDesignatorInput(__instance)); }