Ejemplo n.º 1
0
 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);
        }
Ejemplo n.º 3
0
 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);
        }
Ejemplo n.º 5
0
 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);
         }
     }
 }
Ejemplo n.º 6
0
 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();
        }
Ejemplo n.º 8
0
 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;
         }
     }
 }
Ejemplo n.º 9
0
 // 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>();
 }
Ejemplo n.º 10
0
 public override void Update()
 {
     DesignatorContextMenuController.Update();
 }
Ejemplo n.º 11
0
 // 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));
 }