Example #1
0
 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);
 }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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();
            }
        }
Example #8
0
        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
        }
Example #9
0
        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();
        }