private void WheresMyCursorMenu() { Settings.WmcMain.Value = ImGuiExtension.Checkbox("Enable##FRNToggle", Settings.WmcMain); Settings.WmcLineType.Value = ImGuiExtension.ComboBox("Line Type?", Settings.WmcLineType.Value, new List <string> { "Maximum Length To Cursor", "Draw To The Mouse", "Draw To The Edge Of The Screen" }); Settings.WmcLineColor.Value = ImGuiExtension.ColorPicker("Line Color", Settings.WmcLineColor); Settings.WmcLineLength.Value = ImGuiExtension.IntSlider("Line Max Length", Settings.WmcLineLength); Settings.WmcLineSize.Value = ImGuiExtension.IntSlider("Line Thickness", Settings.WmcLineSize); ImGui.Spacing(); Settings.WmcPlayerOffsetX.Value = ImGuiExtension.IntSlider("Player Offset X", Settings.WmcPlayerOffsetX.Value, -100, 100); Settings.WmcPlayerOffsetY.Value = ImGuiExtension.IntSlider("Player Offset Y", Settings.WmcPlayerOffsetY.Value, -100, 100); }
public override bool CreateConfigurationMenu(ExtensionParameter extensionParameter, ref Dictionary <String, Object> Parameters) { ImGui.TextDisabled("Condition Info"); ImGuiExtension.ToolTip("This condition will return true if the player has any of the selected ailments or a minimum of the specified corrupted blood stacks."); base.CreateConfigurationMenu(extensionParameter, ref Parameters); var buffList = GetEnumList <BuffEnums>().ToList(); var buffListSearch = buffList.Where(x => x.Contains(SearchString)).ToList(); HasBuffReady = ImGuiExtension.ComboBox("Buff List", HasBuffReady, buffListSearch); Parameters[SearchingBuff] = HasBuffReady.ToString(); SearchString = ImGuiExtension.InputText("Filter Buffs", SearchString, 32, InputTextFlags.AllowTabInput); Parameters[SearchStringString] = SearchString.ToString(); return(true); }
public override bool CreateConfigurationMenu(ExtensionParameter extensionParameter, ref Dictionary <String, Object> Parameters) { ImGui.TextDisabled("Condition Info"); ImGuiExtension.ToolTip("This condition will return true if the player has any of the selected ailments or a minimum of the specified corrupted blood stacks."); base.CreateConfigurationMenu(extensionParameter, ref Parameters); var kappa = GetEnumList <BuffEnums>().ToList(); var test = kappa.Where(x => x.Contains(SearchString)).ToList(); HasBuffReady = ImGuiExtension.ComboBox("Buff List", HasBuffReady, test); Parameters[SearchingBuff] = HasBuffReady.ToString(); SearchString = ImGuiExtension.InputText("Filter Buffs", SearchString, 32, InputTextFlags.AllowTabInput); Parameters[SearchStringString] = SearchString.ToString(); //HasBuff = ExtensionComponent.InitialiseParameterBoolean(HasBuffString, HasBuff, ref Parameters); // CorruptCount = ImGuiExtension.IntSlider("Corruption Count", CorruptCount, 0, 20); // Parameters[CorruptCountString] = CorruptCount.ToString(); return(true); }
public override bool CreateConfigurationMenu(ExtensionParameter extensionParameter, ref Dictionary <String, Object> Parameters) { ImGui.TextDisabled("Condition Info"); ImGuiExtension.ToolTipWithText("(?)", "This condition will return true if the player has any of the selected ailments or a minimum of the specified corrupted blood stacks."); base.CreateConfigurationMenu(extensionParameter, ref Parameters); var buffList = GetEnumList <BuffEnums>().ToList(); var buffListSearch = buffList.Where(x => x.Contains(SearchString)).ToList(); HasBuffReady = ImGuiExtension.ComboBox("Buff List", HasBuffReady, buffListSearch); Parameters[SearchingBuff] = HasBuffReady.ToString(); SearchString = ImGuiExtension.InputText("Filter Buffs", SearchString, 32, ImGuiInputTextFlags.AllowTabInput); Parameters[SearchStringString] = SearchString.ToString(); RemainingDuration = ImGuiExtension.IntSlider("Remaining Duration", RemainingDuration, 0, 4000); ImGuiExtension.ToolTipWithText("(?)", "Includes buffs with duration longer than specified. Set to 0 to ignore duration."); Parameters[RemainingDurationString] = RemainingDuration.ToString(); MinimumCharges = ImGuiExtension.IntSlider("Minimum Charges", MinimumCharges, 0, 20); ImGuiExtension.ToolTipWithText("(?)", "Includes buffs with charges greater or equal to specified value. Set to 0 to ignore charges."); Parameters[MinimumChargesString] = MinimumCharges.ToString(); return(true); }
public override void DrawSettings() { Settings.ShowInventoryView.Value = ImGuiExtension.Checkbox("Show Inventory Slots", Settings.ShowInventoryView.Value); Settings.MoveInventoryView.Value = ImGuiExtension.Checkbox("Moveable Inventory Slots", Settings.MoveInventoryView.Value); Settings.PickUpKey = ImGuiExtension.HotkeySelector("Pickup Key: " + Settings.PickUpKey.Value.ToString(), Settings.PickUpKey); Settings.LeftClickToggleNode.Value = ImGuiExtension.Checkbox("Mouse Button: " + (Settings.LeftClickToggleNode ? "Left" : "Right"), Settings.LeftClickToggleNode); Settings.LeftClickToggleNode.Value = ImGuiExtension.Checkbox("Return Mouse To Position Before Click", Settings.ReturnMouseToBeforeClickPosition); Settings.GroundChests.Value = ImGuiExtension.Checkbox("Click Chests If No Items Around", Settings.GroundChests); Settings.PickupRange.Value = ImGuiExtension.IntSlider("Pickup Radius", Settings.PickupRange); Settings.ChestRange.Value = ImGuiExtension.IntSlider("Chest Radius", Settings.ChestRange); Settings.ExtraDelay.Value = ImGuiExtension.IntSlider("Extra Click Delay", Settings.ExtraDelay); Settings.MouseSpeed.Value = ImGuiExtension.FloatSlider("Mouse speed", Settings.MouseSpeed); Settings.TimeBeforeNewClick.Value = ImGuiExtension.IntSlider("Time wait for new click", Settings.TimeBeforeNewClick); //Settings.OverrideItemPickup.Value = ImGuiExtension.Checkbox("Item Pickup Override", Settings.OverrideItemPickup); ImGui.SameLine(); //ImGuiExtension.ToolTip("Override item.CanPickup\n\rDO NOT enable this unless you know what you're doing!"); Settings.LazyLooting.Value = ImGuiExtension.Checkbox("Use Lazy Looting", Settings.LazyLooting); Settings.LazyLootingPauseKey.Value = ImGuiExtension.HotkeySelector("Pause lazy looting for 2 sec: " + Settings.LazyLootingPauseKey.Value, Settings.LazyLootingPauseKey); var tempRef = false; if (ImGui.CollapsingHeader("Pickit Rules", ImGuiTreeNodeFlags.Framed | ImGuiTreeNodeFlags.DefaultOpen)) { if (ImGui.Button("Reload All Files")) { LoadRuleFiles(); } Settings.NormalRuleFile = ImGuiExtension.ComboBox("Normal Rules", Settings.NormalRuleFile, PickitFiles, out tempRef); if (tempRef) { _normalRules = LoadPickit(Settings.NormalRuleFile); } Settings.MagicRuleFile = ImGuiExtension.ComboBox("Magic Rules", Settings.MagicRuleFile, PickitFiles, out tempRef); if (tempRef) { _magicRules = LoadPickit(Settings.MagicRuleFile); } Settings.RareRuleFile = ImGuiExtension.ComboBox("Rare Rules", Settings.RareRuleFile, PickitFiles, out tempRef); if (tempRef) { _rareRules = LoadPickit(Settings.RareRuleFile); } Settings.UniqueRuleFile = ImGuiExtension.ComboBox("Unique Rules", Settings.UniqueRuleFile, PickitFiles, out tempRef); if (tempRef) { _uniqueRules = LoadPickit(Settings.UniqueRuleFile); } Settings.WeightRuleFile = ImGuiExtension.ComboBox("Weight Rules", Settings.WeightRuleFile, PickitFiles, out tempRef); if (tempRef) { _weightsRules = LoadWeights(Settings.WeightRuleFile); } Settings.IgnoreRuleFile = ImGuiExtension.ComboBox("Ignore Rules", Settings.IgnoreRuleFile, PickitFiles, out tempRef); if (tempRef) { _ignoreRules = LoadPickit(Settings.IgnoreRuleFile); } } if (ImGui.CollapsingHeader("Item Logic", ImGuiTreeNodeFlags.Framed | ImGuiTreeNodeFlags.DefaultOpen)) { if (ImGui.TreeNode("Influence Types")) { Settings.ShaperItems.Value = ImGuiExtension.Checkbox("Shaper Items", Settings.ShaperItems); Settings.ElderItems.Value = ImGuiExtension.Checkbox("Elder Items", Settings.ElderItems); Settings.HunterItems.Value = ImGuiExtension.Checkbox("Hunter Items", Settings.HunterItems); Settings.CrusaderItems.Value = ImGuiExtension.Checkbox("Crusader Items", Settings.CrusaderItems); Settings.WarlordItems.Value = ImGuiExtension.Checkbox("Warlord Items", Settings.WarlordItems); Settings.RedeemerItems.Value = ImGuiExtension.Checkbox("Redeemer Items", Settings.RedeemerItems); Settings.FracturedItems.Value = ImGuiExtension.Checkbox("Fractured Items", Settings.FracturedItems); Settings.VeiledItems.Value = ImGuiExtension.Checkbox("Veiled Items", Settings.VeiledItems); ImGui.Spacing(); ImGui.TreePop(); } if (ImGui.TreeNode("Links/Sockets/RGB")) { Settings.RGB.Value = ImGuiExtension.Checkbox("RGB Items", Settings.RGB); Settings.RGBWidth.Value = ImGuiExtension.IntSlider("Maximum Width##RGBWidth", Settings.RGBWidth); Settings.RGBHeight.Value = ImGuiExtension.IntSlider("Maximum Height##RGBHeight", Settings.RGBHeight); ImGui.Spacing(); ImGui.Spacing(); ImGui.Spacing(); Settings.TotalSockets.Value = ImGuiExtension.IntSlider("##Sockets", Settings.TotalSockets); ImGui.SameLine(); Settings.Sockets.Value = ImGuiExtension.Checkbox("Sockets", Settings.Sockets); Settings.LargestLink.Value = ImGuiExtension.IntSlider("##Links", Settings.LargestLink); ImGui.SameLine(); Settings.Links.Value = ImGuiExtension.Checkbox("Links", Settings.Links); ImGui.Separator(); ImGui.TreePop(); } if (ImGui.TreeNode("Overrides")) { Settings.UseWeight.Value = ImGuiExtension.Checkbox("Use Weight", Settings.UseWeight); Settings.IgnoreScrollOfWisdom.Value = ImGuiExtension.Checkbox("Ignore Scroll Of Wisdom", Settings.IgnoreScrollOfWisdom); Settings.PickUpEverything.Value = ImGuiExtension.Checkbox("Pickup Everything", Settings.PickUpEverything); Settings.AllDivs.Value = ImGuiExtension.Checkbox("All Divination Cards", Settings.AllDivs); Settings.AllCurrency.Value = ImGuiExtension.Checkbox("All Currency", Settings.AllCurrency); Settings.AllUniques.Value = ImGuiExtension.Checkbox("All Uniques", Settings.AllUniques); Settings.QuestItems.Value = ImGuiExtension.Checkbox("Quest Items", Settings.QuestItems); Settings.Maps.Value = ImGuiExtension.Checkbox("##Maps", Settings.Maps); ImGui.SameLine(); if (ImGui.TreeNode("Maps")) { Settings.MapTier.Value = ImGuiExtension.IntSlider("Lowest Tier", Settings.MapTier); Settings.UniqueMap.Value = ImGuiExtension.Checkbox("All Unique Maps", Settings.UniqueMap); Settings.MapFragments.Value = ImGuiExtension.Checkbox("Fragments", Settings.MapFragments); ImGui.Spacing(); ImGui.TreePop(); } Settings.GemQuality.Value = ImGuiExtension.IntSlider("##Gems", "Lowest Quality", Settings.GemQuality); ImGui.SameLine(); Settings.Gems.Value = ImGuiExtension.Checkbox("Gems", Settings.Gems); Settings.FlasksQuality.Value = ImGuiExtension.IntSlider("##Flasks", "Lowest Quality", Settings.FlasksQuality); ImGui.SameLine(); Settings.Flasks.Value = ImGuiExtension.Checkbox("Flasks", Settings.Flasks); ImGui.Separator(); ImGui.TreePop(); } Settings.HeistItems.Value = ImGuiExtension.Checkbox("Heist Items", Settings.HeistItems); Settings.Rares.Value = ImGuiExtension.Checkbox("##Rares", Settings.Rares); ImGui.SameLine(); if (ImGui.TreeNode("Rares##asd")) { Settings.RareJewels.Value = ImGuiExtension.Checkbox("Jewels", Settings.RareJewels); Settings.RareRingsilvl.Value = ImGuiExtension.IntSlider("##RareRings", "Lowest iLvl", Settings.RareRingsilvl); ImGui.SameLine(); Settings.RareRings.Value = ImGuiExtension.Checkbox("Rings", Settings.RareRings); Settings.RareAmuletsilvl.Value = ImGuiExtension.IntSlider("##RareAmulets", "Lowest iLvl", Settings.RareAmuletsilvl); ImGui.SameLine(); Settings.RareAmulets.Value = ImGuiExtension.Checkbox("Amulets", Settings.RareAmulets); Settings.RareBeltsilvl.Value = ImGuiExtension.IntSlider("##RareBelts", "Lowest iLvl", Settings.RareBeltsilvl); ImGui.SameLine(); Settings.RareBelts.Value = ImGuiExtension.Checkbox("Belts", Settings.RareBelts); Settings.RareGlovesilvl.Value = ImGuiExtension.IntSlider("##RareGloves", "Lowest iLvl", Settings.RareGlovesilvl); ImGui.SameLine(); Settings.RareGloves.Value = ImGuiExtension.Checkbox("Gloves", Settings.RareGloves); Settings.RareBootsilvl.Value = ImGuiExtension.IntSlider("##RareBoots", "Lowest iLvl", Settings.RareBootsilvl); ImGui.SameLine(); Settings.RareBoots.Value = ImGuiExtension.Checkbox("Boots", Settings.RareBoots); Settings.RareHelmetsilvl.Value = ImGuiExtension.IntSlider("##RareHelmets", "Lowest iLvl", Settings.RareHelmetsilvl); ImGui.SameLine(); Settings.RareHelmets.Value = ImGuiExtension.Checkbox("Helmets", Settings.RareHelmets); Settings.RareArmourilvl.Value = ImGuiExtension.IntSlider("##RareArmours", "Lowest iLvl", Settings.RareArmourilvl); ImGui.SameLine(); Settings.RareArmour.Value = ImGuiExtension.Checkbox("Armours", Settings.RareArmour); ImGui.Spacing(); ImGui.Spacing(); ImGui.Spacing(); Settings.RareShieldilvl.Value = ImGuiExtension.IntSlider("##Shields", "Lowest iLvl", Settings.RareShieldilvl); ImGui.SameLine(); Settings.RareShield.Value = ImGuiExtension.Checkbox("Shields", Settings.RareShield); Settings.RareShieldWidth.Value = ImGuiExtension.IntSlider("Maximum Width##RareShieldWidth", Settings.RareShieldWidth); Settings.RareShieldHeight.Value = ImGuiExtension.IntSlider("Maximum Height##RareShieldHeight", Settings.RareShieldHeight); ImGui.Spacing(); ImGui.Spacing(); ImGui.Spacing(); Settings.RareWeaponilvl.Value = ImGuiExtension.IntSlider("##RareWeapons", "Lowest iLvl", Settings.RareWeaponilvl); ImGui.SameLine(); Settings.RareWeapon.Value = ImGuiExtension.Checkbox("Weapons", Settings.RareWeapon); Settings.RareWeaponWidth.Value = ImGuiExtension.IntSlider("Maximum Width##RareWeaponWidth", Settings.RareWeaponWidth); Settings.RareWeaponHeight.Value = ImGuiExtension.IntSlider("Maximum Height##RareWeaponHeight", Settings.RareWeaponHeight); if (ImGui.TreeNode("Full Rare Set Manager Integration##FRSMI")) { ImGui.BulletText("You must use github.com/DetectiveSquirrel/FullRareSetManager in order to utilize this section\nThis will determine what items are still needed to be picked up\nfor the chaos recipe, it uses FRSM's count to check this.'"); ImGui.Spacing(); Settings.FullRareSetManagerOverride.Value = ImGuiExtension.Checkbox("Override Rare Pickup with Full Rare Set Managers' needed pieces", Settings.FullRareSetManagerOverride); Settings.FullRareSetManagerOverrideAllowIdentifiedItems.Value = ImGuiExtension.Checkbox("Pickup Identified items?", Settings.FullRareSetManagerOverrideAllowIdentifiedItems); ImGui.Spacing(); ImGui.Spacing(); ImGui.BulletText("Set the number you wish to pickup for Full Rare Set Manager overrides\nDefault: -1\n-1 will disable these overrides"); ImGui.Spacing(); Settings.FullRareSetManagerPickupOverrides.Weapons = ImGuiExtension.IntSlider("Max Weapons(s)##FRSMOverrides1", Settings.FullRareSetManagerPickupOverrides.Weapons, -1, 100); Settings.FullRareSetManagerPickupOverrides.Helmets = ImGuiExtension.IntSlider("Max Helmets##FRSMOverrides2", Settings.FullRareSetManagerPickupOverrides.Helmets, -1, 100); Settings.FullRareSetManagerPickupOverrides.BodyArmors = ImGuiExtension.IntSlider("Max Body Armors##FRSMOverrides3", Settings.FullRareSetManagerPickupOverrides.BodyArmors, -1, 100); Settings.FullRareSetManagerPickupOverrides.Gloves = ImGuiExtension.IntSlider("Max Gloves##FRSMOverrides4", Settings.FullRareSetManagerPickupOverrides.Gloves, -1, 100); Settings.FullRareSetManagerPickupOverrides.Boots = ImGuiExtension.IntSlider("Max Boots##FRSMOverrides5", Settings.FullRareSetManagerPickupOverrides.Boots, -1, 100); Settings.FullRareSetManagerPickupOverrides.Belts = ImGuiExtension.IntSlider("Max Belts##FRSMOverrides6", Settings.FullRareSetManagerPickupOverrides.Belts, -1, 100); Settings.FullRareSetManagerPickupOverrides.Amulets = ImGuiExtension.IntSlider("Max Amulets##FRSMOverrides7", Settings.FullRareSetManagerPickupOverrides.Amulets, -1, 100); Settings.FullRareSetManagerPickupOverrides.Rings = ImGuiExtension.IntSlider("Max Ring Sets##FRSMOverrides8", Settings.FullRareSetManagerPickupOverrides.Rings, -1, 100); ImGui.Spacing(); ImGui.Spacing(); ImGui.BulletText("Set the ilvl Min/Max you wish to pickup for Full Rare Set Manager overrides\nIt is up to you how to use these two features\nit does not change how FullRareSetManager counts its sets.\nDefault: -1\n-1 will disable these overrides"); ImGui.Spacing(); Settings.FullRareSetManagerPickupOverrides.MinItemLevel = ImGuiExtension.IntSlider("Minimum Item Level##FRSMOverrides9", Settings.FullRareSetManagerPickupOverrides.MinItemLevel, -1, 100); Settings.FullRareSetManagerPickupOverrides.MaxItemLevel = ImGuiExtension.IntSlider("Max Item Level##FRSMOverrides10", Settings.FullRareSetManagerPickupOverrides.MaxItemLevel, -1, 100); ImGui.TreePop(); } ImGui.TreePop(); } } }
public bool Render() { TriggerComposite.Name = ImGuiExtension.InputText("Trigger Name", TriggerComposite.Name, 50, InputTextFlags.AlwaysInsertMode); bool shouldPerformClear = false; int radioTarget = (int)TriggerComposite.Type; shouldPerformClear |= ImGui.RadioButton("PrioritySelector", ref radioTarget, (int)TriggerType.PrioritySelector); ImGuiExtension.ToolTip("A PrioritySelector runs a list of composites in order from first to last until one of the composites returns true."); ImGui.SameLine(); shouldPerformClear |= ImGui.RadioButton("Sequence", ref radioTarget, (int)TriggerType.Sequence); ImGuiExtension.ToolTip("A Sequence runs a list of composites in order from first to last until one of the composites returns false."); shouldPerformClear |= ImGui.RadioButton("Decorator", ref radioTarget, (int)TriggerType.Decorator); ImGuiExtension.ToolTip("A Decorator will run its child if all conditions return true.\nThink of this as an if condition."); ImGui.SameLine(); var choseAction = ImGui.RadioButton("Action", ref radioTarget, (int)TriggerType.Action); ImGuiExtension.ToolTip("An action is a final point in a behavior tree.\nActions can return true or false.\nAll branches MUST end in an action."); if (choseAction && TriggerComposite.Children != null && TriggerComposite.Children.Any() || // If we chose action, make sure we don't have any children (TriggerType)radioTarget == TriggerType.Decorator && TriggerComposite.Children != null && TriggerComposite.Children.Count > 1) // if we chose decorator, make sure we don't have more than 1 child { OpenOKMenu = true; OKMessage = "Trigger has too many children to change to this type.\nRemove unnecessary children and try again."; // Reset everything so the below logic can remain the same shouldPerformClear = false; choseAction = false; radioTarget = (int)TriggerComposite.Type; } if (shouldPerformClear || choseAction) { ActiveWorkingTriggerCondition = null; TriggerComposite.Action = null; SelectedOption1 = -1; SelectedOption2 = -1; } // Save off the selected type into the composite TriggerComposite.Type = (TriggerType)radioTarget; // There is no configuration unless we are an action or decorator if (TriggerComposite.Type == TriggerType.Action || TriggerComposite.Type == TriggerType.Decorator) { if (ImGui.TreeNodeEx("Configuration", TreeNodeFlags.Leaf)) { if (TriggerComposite.Type == TriggerType.Action) { // TODO: HashSet is not guaranteed ordered. This should be fixed later var filterList = ExtensionParameter.Plugin.ExtensionCache.ActionFilterList.ToList(); FilterOption = ImGuiExtension.ComboBox("Filter Type", FilterOption, filterList); var actionList = ExtensionParameter.Plugin.ExtensionCache.ActionList; if (filterList[FilterOption] != ExtensionComponentFilterType.None) { actionList = actionList.Where(x => x.GetFilterTypes().Contains(filterList[FilterOption])).ToList(); } int previouslySelectedAction = SelectedOption1; SelectedOption1 = ImGuiExtension.ComboBox("Action List", SelectedOption1, actionList.Select(x => x.Owner + ": " + x.Name).ToList()); if (SelectedOption1 >= 0) { // If we do not have an extension action cached OR we swapped actions... initialize values if (ActiveWorkingExtensionAction == null || previouslySelectedAction != SelectedOption1) { var action = actionList[SelectedOption1]; if (TriggerComposite.Action == null) { TriggerComposite.Action = new TriggerAction(action.Owner, action.Name); } ActiveWorkingExtensionAction = action.GetAction(); } // Render the menu and ensure the parameters get saved to the action ActiveWorkingExtensionAction.CreateConfigurationMenu(ExtensionParameter, ref TriggerComposite.Action.Parameters); } } else if (TriggerComposite.Type == TriggerType.Decorator) { SelectedOption1 = ImGuiExtension.ComboBox("Conditions", SelectedOption1, TriggerComposite.ConditionList.Select(x => x.Owner + ": " + x.Name).ToList()); if (ImGui.Button("Add")) { //if (ActiveWorkingTriggerCondition == null) //{ ActiveWorkingTriggerCondition = new TriggerCondition(); //} ImGui.OpenPopup("Add condition"); } var selectedCondition = TriggerComposite.ConditionList.ElementAtOrDefault(SelectedOption1); if (selectedCondition != null) { ImGui.SameLine(); if (ImGui.Button("Edit")) { //if (ActiveWorkingTriggerCondition == null) //{ ActiveWorkingTriggerCondition = new TriggerCondition(selectedCondition); EditedTriggerCondition = selectedCondition; //} ImGui.OpenPopup("Add condition"); } ImGui.SameLine(); if (ImGui.Button("Remove")) { TriggerComposite.ConditionList.Remove(TriggerComposite.ConditionList[SelectedOption1]); } } RenderAddConditionMenu(); } ImGui.TreePop(); } } if (ImGui.Button("Save Trigger")) { // Validation if (TriggerComposite.Name == null || TriggerComposite.Name.Length == 0) { OpenOKMenu = true; OKMessage = "Must give a trigger name."; } else { if (EditedTrigger != null) { // We are editing. Copy everything from the new trigger to the old instance EditedTrigger.Name = TriggerComposite.Name; EditedTrigger.Type = TriggerComposite.Type; EditedTrigger.Children = TriggerComposite.Children; EditedTrigger.ConditionList = TriggerComposite.ConditionList; EditedTrigger.Action = TriggerComposite.Action; // Finally, clear out our TriggerCompsite. Otherwise, the caller will think we are adding a new trigger TriggerComposite = null; } return(false); } } ImGui.SameLine(); if (ImGui.Button("Cancel trigger")) { TriggerComposite = null; return(false); } if (OpenOKMenu) { ImGui.OpenPopup("OK Menu"); OpenOKMenu = false; } if (ImGui.BeginPopupModal("OK Menu", WindowFlags.AlwaysAutoResize)) { ImGui.TextDisabled(OKMessage); if (ImGui.SmallButton("OK")) { ImGui.CloseCurrentPopup(); } ImGui.EndPopup(); } return(true); }
private void RenderAddConditionMenu() { if (ImGui.BeginPopupModal("Add condition", WindowFlags.AlwaysAutoResize)) { // TODO: HashSet is not guaranteed ordered. This should be fixed later var filterList = ExtensionParameter.Plugin.ExtensionCache.ConditionFilterList.ToList(); FilterOption = ImGuiExtension.ComboBox("Filter Type", FilterOption, filterList); var conditionList = ExtensionParameter.Plugin.ExtensionCache.ConditionList; if (filterList[FilterOption] != ExtensionComponentFilterType.None) { conditionList = conditionList.Where(x => x.GetFilterTypes().Contains(filterList[FilterOption])).ToList(); } int previouslySelectedCondition = SelectedOption2; if (ActiveWorkingTriggerCondition.Name != null && SelectedOption2 < 0 || conditionList[SelectedOption2].Name != ActiveWorkingTriggerCondition.Name) { // This means we are probably attempting to edit. Set the selected option to the one being edited SelectedOption2 = conditionList.FindIndex(x => ActiveWorkingTriggerCondition.Owner == x.Owner && ActiveWorkingTriggerCondition.Name == x.Name); } SelectedOption2 = ImGuiExtension.ComboBox("Conditions", SelectedOption2, conditionList.Select(x => x.Owner + ": " + x.Name).ToList()); var condition = conditionList.ElementAtOrDefault(SelectedOption2); if (condition != null) { ActiveWorkingTriggerCondition.Owner = condition.Owner; ActiveWorkingTriggerCondition.Name = condition.Name; if (TriggerComposite.ConditionList.Any()) { int conditionTarget = ActiveWorkingTriggerCondition.Linker == null ? 0 : (int)ActiveWorkingTriggerCondition.Linker; // We need a linker condition if (ImGui.RadioButton("And", ref conditionTarget, (int)TriggerConditionType.And)) { ActiveWorkingTriggerCondition.Linker = TriggerConditionType.And; } ImGui.SameLine(); if (ImGui.RadioButton("Or", ref conditionTarget, (int)TriggerConditionType.Or)) { ActiveWorkingTriggerCondition.Linker = TriggerConditionType.Or; } } if (ActiveWorkingExtensionCondition == null || previouslySelectedCondition != SelectedOption2) { ActiveWorkingExtensionCondition = condition.GetCondition(); ActiveWorkingExtensionCondition.Initialise(ActiveWorkingTriggerCondition.Parameters); } ActiveWorkingExtensionCondition.CreateConfigurationMenu(ExtensionParameter, ref ActiveWorkingTriggerCondition.Parameters); if (ImGui.Button("Save condition")) { // If we are saving an edit, copy all the new values over if (EditedTriggerCondition != null) { EditedTriggerCondition.Owner = ActiveWorkingTriggerCondition.Owner; EditedTriggerCondition.Name = ActiveWorkingTriggerCondition.Name; EditedTriggerCondition.Parameters = ActiveWorkingTriggerCondition.Parameters; EditedTriggerCondition.Linker = ActiveWorkingTriggerCondition.Linker; } else { // Saving a new condition TriggerComposite.ConditionList.Add(ActiveWorkingTriggerCondition); SelectedOption1 = TriggerComposite.ConditionList.Count - 1; } // Select the condition we just added ActiveWorkingTriggerCondition = null; EditedTriggerCondition = null; ActiveWorkingExtensionCondition = null; ImGui.CloseCurrentPopup(); } } if (ImGui.Button("Cancel condition")) { ActiveWorkingTriggerCondition = null; EditedTriggerCondition = null; ActiveWorkingExtensionCondition = null; ImGui.CloseCurrentPopup(); } ImGui.EndPopup(); } }
internal override void DrawSettingsMenu() { #region var newSelectedTheme = ImGuiExtension.ComboBox("Select Theme", "Themes", SelectedThemeName, MainMenuWindow.Settings.Theme.Values); if (SelectedThemeName != newSelectedTheme) { SelectedThemeName = newSelectedTheme; LoadedTheme = LoadTheme(newSelectedTheme, false); ApplyTheme(LoadedTheme); } if (ImGuiExtension.Button("Save current theme settings to selected")) { var currentThemeNew = ReadThemeFromCurrent(); SaveTheme(currentThemeNew, SelectedThemeName); } ImGui.Text(""); NewThemeName = ImGuiExtension.InputText("New theme name", NewThemeName, 200, InputTextFlags.Default); if (ImGuiExtension.Button("Create new theme from current")) { if (!string.IsNullOrEmpty(NewThemeName)) { string regexSearch = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars()); Regex r = new Regex(string.Format("[{0}]", Regex.Escape(regexSearch))); NewThemeName = r.Replace(NewThemeName, ""); var currentThemeNew = ReadThemeFromCurrent(); SaveTheme(currentThemeNew, NewThemeName); SelectedThemeName = NewThemeName; LoadThemeFilesList(); } } #endregion ImGui.Text(""); var style = ImGui.GetStyle(); if (ImGui.TreeNode("Theme settings")) { style.AntiAliasedFill = DrawBoolSetting("AntiAliasedFill", style.AntiAliasedFill); style.AntiAliasedLines = DrawBoolSetting("AntiAliasedLines", style.AntiAliasedLines); style.Alpha = DrawFloatSetting("Alpha", style.Alpha * 100, 0, 100) / 100f; style.DisplayWindowPadding = DrawVectorSetting("DisplayWindowPadding", style.DisplayWindowPadding, 0, 20); style.TouchExtraPadding = DrawVectorSetting("TouchExtraPadding", style.TouchExtraPadding, 0, 10); style.WindowPadding = DrawVectorSetting("WindowPadding", style.WindowPadding, 0, 20); style.FramePadding = DrawVectorSetting("FramePadding", style.FramePadding, 0, 20); style.DisplaySafeAreaPadding = DrawVectorSetting("DisplaySafeAreaPadding", style.DisplaySafeAreaPadding, 0, 20); style.ItemInnerSpacing = DrawVectorSetting("ItemInnerSpacing", style.ItemInnerSpacing, 0, 20); style.ItemSpacing = DrawVectorSetting("ItemSpacing", style.ItemSpacing, 0, 20); style.GrabMinSize = DrawFloatSetting("GrabMinSize", style.GrabMinSize, 0, 20); style.GrabRounding = DrawFloatSetting("GrabRounding", style.GrabRounding, 0, 12); style.IndentSpacing = DrawFloatSetting("IndentSpacing", style.IndentSpacing, 0, 30); style.ScrollbarRounding = DrawFloatSetting("ScrollbarRounding", style.ScrollbarRounding, 0, 19); style.ScrollbarSize = DrawFloatSetting("ScrollbarSize", style.ScrollbarSize, 0, 20); style.WindowTitleAlign = DrawVectorSetting("WindowTitleAlign", style.WindowTitleAlign, 0, 1, 0.1f); style.WindowRounding = DrawFloatSetting("WindowRounding", style.WindowRounding, 0, 14); style.ChildWindowRounding = DrawFloatSetting("ChildWindowRounding", style.ChildWindowRounding, 0, 16); style.FrameRounding = DrawFloatSetting("FrameRounding", style.FrameRounding, 0, 12); style.ColumnsMinSpacing = DrawFloatSetting("ColumnsMinSpacing", style.ColumnsMinSpacing, 0, 30); style.CurveTessellationTolerance = DrawFloatSetting("CurveTessellationTolerance", style.CurveTessellationTolerance * 100, 0, 100) / 100; } ImGui.Text(""); #region ColorsDraw ImGui.Text("Colors:"); ImGui.Columns(2, "Columns", true); var colorTypes = Enum.GetValues(typeof(ColorTarget)).Cast <ColorTarget>(); var count = colorTypes.Count() / 2; foreach (var type in colorTypes) { var nameFixed = Regex.Replace(type.ToString(), "(\\B[A-Z])", " $1"); var colorValue = style.GetColor(type); if (ImGui.ColorEdit4(nameFixed, ref colorValue, ColorEditFlags.AlphaBar | ColorEditFlags.NoInputs | ColorEditFlags.AlphaPreviewHalf)) { style.SetColor(type, colorValue); } if (count-- == -1) { ImGui.NextColumn(); } } #endregion }
public void DrawProfilesTable(Profile profile) { var buffsToRemove = new List <int>(); ImGui.Separator(); ImGui.Columns(8, $"EditColums{profile.Name}", true); ImGui.Text("Toggles"); ImGuiExtension.ToolTip("Remove / Status / Show Inactive / Draw an Image", true); ImGui.NextColumn(); ImGui.Text("Colors"); ImGuiExtension.ToolTip("Text / Text Background", true); ImGui.NextColumn(); ImGui.Text("Buff Name"); ImGui.NextColumn(); ImGui.Text("File Name"); ImGui.NextColumn(); ImGui.Text("Type"); ImGui.NextColumn(); ImGui.Text("Size"); ImGui.NextColumn(); ImGui.Text("X"); ImGui.NextColumn(); ImGui.Text("Y"); ImGui.NextColumn(); if (profile.BuffSettings.BuffList.Count != 0) { ImGui.Separator(); } var typeSelector = new List <string> { "Duration", "Charge", "Count", "Duration + Charges", "Duration + Count", "Image Only" }; for (var i = 0; i < profile.BuffSettings.BuffList.Count; i++) { // Remove / Status / Show Inactive if (ImGui.Button($"X##Delete{profile.Name}{i}")) { buffsToRemove.Add(i); } ImGuiExtension.ToolTip("Remove This Buff", false, true); ImGui.SameLine(); profile.BuffSettings.BuffList[i].Settings.Enabled = PoeHUD.Hud.UI.ImGuiExtension.Checkbox($"##Status{profile.Name}{i}", profile.BuffSettings.BuffList[i].Settings.Enabled); ImGuiExtension.ToolTip("Enable This Buff", false, true); ImGui.SameLine(); profile.BuffSettings.BuffList[i].Settings.ShowInactive = PoeHUD.Hud.UI.ImGuiExtension.Checkbox($"##ShowInactive{profile.Name}{i}", profile.BuffSettings.BuffList[i].Settings.ShowInactive); ImGuiExtension.ToolTip("Show a dimmed verison if the buff is inactive", false, true); ImGui.SameLine(); profile.BuffSettings.BuffList[i].Settings.ShowImage = PoeHUD.Hud.UI.ImGuiExtension.Checkbox($"##ShowImage{profile.Name}{i}", profile.BuffSettings.BuffList[i].Settings.ShowImage); ImGuiExtension.ToolTip("Draw an Image", false, true); ImGui.NextColumn(); // Colors - Text / Text Background profile.BuffSettings.BuffList[i].Settings.Colors.Text = PoeHUD.Hud.UI.ImGuiExtension.ColorPicker($"##TextColor{profile.Name}{i}", profile.BuffSettings.BuffList[i].Settings.Colors.Text); ImGuiExtension.ToolTip("Text Color", false, true); ImGui.SameLine(); profile.BuffSettings.BuffList[i].Settings.Colors.TextBackground = PoeHUD.Hud.UI.ImGuiExtension.ColorPicker($"##TextBackgroundColor{profile.Name}{i}", profile.BuffSettings.BuffList[i].Settings.Colors.TextBackground); ImGuiExtension.ToolTip("Text Background Color", false, true); ImGui.NextColumn(); // Buff Name ImGui.PushItemWidth(ImGui.GetContentRegionAvailableWidth()); profile.BuffSettings.BuffList[i].Settings.BuffName = PoeHUD.Hud.UI.ImGuiExtension.InputText($"##BuffName{profile.Name}{i}", profile.BuffSettings.BuffList[i].Settings.BuffName, 1000, InputTextFlags.EnterReturnsTrue); ImGui.PopItemWidth(); ImGui.NextColumn(); // Image File ImGui.PushItemWidth(ImGui.GetContentRegionAvailableWidth()); profile.BuffSettings.BuffList[i].Settings.Image = PoeHUD.Hud.UI.ImGuiExtension.InputText($"##Image{profile.Name}{i}", profile.BuffSettings.BuffList[i].Settings.Image, 1000, InputTextFlags.EnterReturnsTrue); ImGui.PopItemWidth(); ImGui.NextColumn(); // Buff Type ImGui.PushItemWidth(ImGui.GetContentRegionAvailableWidth()); profile.BuffSettings.BuffList[i].Settings.Type = (Buff.BuffType)ImGuiExtension.ComboBox($"##Type{profile.Name}{i}", (int)profile.BuffSettings.BuffList[i].Settings.Type, typeSelector); ImGui.PopItemWidth(); ImGui.NextColumn(); // Buff Size ImGui.PushItemWidth(ImGui.GetContentRegionAvailableWidth()); profile.BuffSettings.BuffList[i].Settings.Size = ImGuiExtension.IntDrag($"##Size{profile.Name}{i}", profile.BuffSettings.BuffList[i].Settings.Size, 1, 300); ImGui.PopItemWidth(); ImGui.NextColumn(); // X Axis ImGui.PushItemWidth(ImGui.GetContentRegionAvailableWidth()); profile.BuffSettings.BuffList[i].Settings.Location.X = ImGuiExtension.IntDrag($"##X{profile.Name}{i}", profile.BuffSettings.BuffList[i].Settings.Location.X, 0, (int)GameController.Window.GetWindowRectangle().Width); ImGui.PopItemWidth(); ImGui.NextColumn(); // Y Axis ImGui.PushItemWidth(ImGui.GetContentRegionAvailableWidth()); profile.BuffSettings.BuffList[i].Settings.Location.Y = ImGuiExtension.IntDrag($"##Y{profile.Name}{i}", profile.BuffSettings.BuffList[i].Settings.Location.Y, 0, (int)GameController.Window.GetWindowRectangle().Height); ImGui.PopItemWidth(); ImGui.NextColumn(); } // Remove items in deleteion queue foreach (var i in buffsToRemove) { profile.BuffSettings.BuffList.Remove(profile.BuffSettings.BuffList[i]); } ImGui.Separator(); ImGui.Columns(1, "", false); // Make add new button if (ImGui.Button($"+##Add{profile.Name}")) { var newItem = new Buff.Base { Settings = new Buff.Settings { Location = new Buff.Location { X = 200, Y = 200 }, Size = 64, ShowInactive = false, Image = "Image", BuffName = "BuffName", Type = Buff.BuffType.Duration, Enabled = false, Colors = new Colors { Text = Color.White, TextBackground = new Color(0, 0, 0, 220) } }, DisposableData = new Buff.DisposableData() }; profile.BuffSettings.BuffList.Add(newItem); } ImGui.SameLine(); if (ImGui.Button($"Save##{profile.Name}")) { SaveBuffSettings(profile); } ImGui.SameLine(); if (ImGui.Button($"Reload##{profile.Name}")) { profile.BuffSettings = LoadBuffSettings(profile); } ImGui.Separator(); }