Example #1
0
        private void EzTreeChanger()
        {
            //Check if setting is on
            if (!Settings.EnableEzTreeChanger)
            {
                return;
            }

            //check if Skill Tree window is open
            var skillTreeElement = GameController.Game.IngameState.IngameUi.TreePanel;

            if (!skillTreeElement.IsVisible)
            {
                return;
            }

            //delacre a few variables
            var topLeftGameWindow = GameController.Window.GetWindowRectangle().TopLeft;

            var isOpen = true;

            //Start of Draw imgui window
            if (ImGuiExtension.BeginWindow("#noTitleTreePlanner", ref isOpen, (int)topLeftGameWindow.X, (int)topLeftGameWindow.Y, 0, 0, ImGuiWindowFlags.NoTitleBar | ImGuiWindowFlags.NoMove, true))
            {
                bool pressedBack = false;
                bool pressedNext = false;

                if (ImGui.Button("<"))
                {
                    pressedBack = true;
                    //LogMessage($"Selected index wanting to go from {Settings.SelectedBuild.SelectedIndex} -> {Settings.SelectedBuild.SelectedIndex -1}, Max Index in Build is {Settings.SelectedBuild.Trees.Count}", 10);
                }

                ImGui.SameLine();

                if (ImGui.Button(">"))
                {
                    pressedNext = true;
                    //LogMessage($"Selected index wanting to go from {Settings.SelectedBuild.SelectedIndex} -> {Settings.SelectedBuild.SelectedIndex + 1}, Max Index in Build is {Settings.SelectedBuild.Trees.Count}", 10);
                }
                ImGui.SameLine();

                ImGui.Text(Settings.SelectedTreeName);

                if (pressedBack && InBounds(Settings.SelectedBuild.SelectedIndex - 1, Settings.SelectedBuild.Trees.Count - 1))
                {
                    Settings.SelectedBuild.SelectedIndex -= 1;
                    ReadUrlFromSelectedBuild(Settings.SelectedBuild.Trees[Settings.SelectedBuild.SelectedIndex].SkillTreeUrl, Settings.SelectedBuild.Trees[Settings.SelectedBuild.SelectedIndex].Tag);
                }
                if (pressedNext && InBounds(Settings.SelectedBuild.SelectedIndex + 1, Settings.SelectedBuild.Trees.Count - 1))
                {
                    Settings.SelectedBuild.SelectedIndex += 1;
                    ReadUrlFromSelectedBuild(Settings.SelectedBuild.Trees[Settings.SelectedBuild.SelectedIndex].SkillTreeUrl, Settings.SelectedBuild.Trees[Settings.SelectedBuild.SelectedIndex].Tag);
                }

                ImGui.EndMenu();
            }
        }
Example #2
0
        public override void DrawSettingsMenu()
        {
            string[] settingName =
            {
                "Build Selection",
                "Build Edit",
                "Add Build",
                "Colors",
                "Sliders"
            };
            ImGuiNative.igGetContentRegionAvail(out var newcontentRegionArea);
            if (ImGui.BeginChild("LeftSettings", new Vector2(150, newcontentRegionArea.Y), false, WindowFlags.Default))
            {
                for (var i = 0; i < settingName.Length; i++)
                {
                    if (ImGui.Selectable(settingName[i], selected == i))
                    {
                        selected = i;
                    }
                }
            }
            ImGui.EndChild();
            ImGui.SameLine();
            ImGui.PushStyleVar(StyleVar.ChildRounding, 5.0f);
            ImGuiNative.igGetContentRegionAvail(out newcontentRegionArea);
            if (ImGui.BeginChild("RightSettings", new Vector2(newcontentRegionArea.X, newcontentRegionArea.Y), true, WindowFlags.Default))
            {
                switch (settingName[selected])
                {
                case "Build Selection":
                    if (ImGui.Button("Open Build Folder"))
                    {
                        Process.Start(SkillTreeUrlFilesDir);
                    }
                    ImGui.SameLine();
                    if (ImGui.Button("Reload List"))
                    {
                        LoadBuildFiles();
                    }
                    ImGui.SameLine();
                    if (ImGui.Button("Open Forum Thread"))
                    {
                        ReadHtmlLineFromFile(Settings.SelectedURLFile);
                    }
                    Settings.SelectedURLFile = ImGuiExtension.ComboBox("Build Files", Settings.SelectedURLFile, BuildFiles, out var tempBool, ComboFlags.HeightLarge);
                    if (tempBool)
                    {
                        ReadUrlFromSelectedUrl(Settings.SelectedURLFile);
                    }
                    break;

                case "Build Edit":
                    if (!string.IsNullOrEmpty(CurrentlySelectedBuildFile))
                    {
                        CurrentlySelectedBuildFileEdit = ImGuiExtension.InputText("##RenameLabel", CurrentlySelectedBuildFileEdit, 1024, InputTextFlags.EnterReturnsTrue);
                        ImGui.SameLine();
                        if (ImGui.Button("Rename Build"))
                        {
                            RenameFile(CurrentlySelectedBuildFileEdit, Settings.SelectedURLFile);
                        }

                        CurrentlySelectedBuildUrl = ImGuiExtension.InputText("##ChangeURL", CurrentlySelectedBuildUrl, 1024, InputTextFlags.EnterReturnsTrue | InputTextFlags.AutoSelectAll);
                        ImGui.SameLine();
                        if (ImGui.Button("Change URL"))
                        {
                            ReplaceUrlContents(Settings.SelectedURLFile, CurrentlySelectedBuildUrl);
                        }

                        CurrentlySelectedBuildForumThread = ImGuiExtension.InputText("##ChangeThreadURL", CurrentlySelectedBuildForumThread, 1024, InputTextFlags.EnterReturnsTrue | InputTextFlags.AutoSelectAll);
                        ImGui.SameLine();
                        if (ImGui.Button("Change Thread URL"))
                        {
                            ReplaceThreadUrlContents(Settings.SelectedURLFile, CurrentlySelectedBuildForumThread);
                        }
                    }
                    else
                    {
                        ImGui.Text("No Build Selected");
                    }

                    break;

                case "Add Build":
                    AddNewBuildFile      = ImGuiExtension.InputText("Build Name", AddNewBuildFile, 1024, InputTextFlags.EnterReturnsTrue);
                    AddNewBuildUrl       = ImGuiExtension.InputText("Build URL", AddNewBuildUrl, 1024, InputTextFlags.EnterReturnsTrue | InputTextFlags.AutoSelectAll);
                    AddNewBuildThreadUrl = ImGuiExtension.InputText("Build Thread URL", AddNewBuildThreadUrl, 1024, InputTextFlags.EnterReturnsTrue | InputTextFlags.AutoSelectAll);
                    if (ImGui.Button("Create Build"))
                    {
                        AddNewBuild(AddNewBuildFile, AddNewBuildUrl, AddNewBuildThreadUrl);
                        AddNewBuildFile      = "";
                        AddNewBuildUrl       = "";
                        AddNewBuildThreadUrl = "";
                    }

                    break;

                case "Colors":
                    Settings.PickedBorderColor.Value      = ImGuiExtension.ColorPicker("Border Color", Settings.PickedBorderColor);
                    Settings.UnpickedBorderColor.Value    = ImGuiExtension.ColorPicker("Unpicked Border Color", Settings.UnpickedBorderColor);
                    Settings.WrongPickedBorderColor.Value = ImGuiExtension.ColorPicker("Wrong picked Border Color", Settings.WrongPickedBorderColor);
                    Settings.LineColor.Value = ImGuiExtension.ColorPicker("Line Color", Settings.LineColor);
                    break;

                case "Sliders":
                    Settings.PickedBorderWidth.Value      = ImGuiExtension.IntSlider("Picked Border Width", Settings.PickedBorderWidth);
                    Settings.UnpickedBorderWidth.Value    = ImGuiExtension.IntSlider("Unpicked Border Width", Settings.UnpickedBorderWidth);
                    Settings.WrongPickedBorderWidth.Value = ImGuiExtension.IntSlider("WrongPicked Border Width", Settings.WrongPickedBorderWidth);
                    Settings.LineWidth.Value = ImGuiExtension.IntSlider("Line Width", Settings.LineWidth);
                    break;
                }
            }
            ImGui.PopStyleVar();
            ImGui.EndChild();
        }
Example #3
0
        public override void DrawSettings()
        {
            string[] settingName =
            {
                "Build Selection",
                "Build Edit",
                "Build Add",
                "Colors",
                "Sliders",
                "Toggles"
            };
            var newcontentRegionArea = ImGuiNative.igGetContentRegionAvail();

            if (ImGui.BeginChild("LeftSettings", new Vector2(150, newcontentRegionArea.Y), false, ImGuiWindowFlags.None))
            {
                for (var i = 0; i < settingName.Length; i++)
                {
                    if (ImGui.Selectable(settingName[i], selected == i))
                    {
                        selected = i;
                    }
                }
            }

            ImGui.EndChild();
            ImGui.SameLine();
            ImGui.PushStyleVar(ImGuiStyleVar.ChildRounding, 5.0f);
            newcontentRegionArea = ImGuiNative.igGetContentRegionAvail();
            if (ImGui.BeginChild("RightSettings", new Vector2(newcontentRegionArea.X, newcontentRegionArea.Y), true,
                                 ImGuiWindowFlags.None))
            {
                switch (settingName[selected])
                {
                case "Build Selection":
                    // Open Build Folder
                    if (ImGui.Button("Open Build Folder"))
                    {
                        Process.Start(SkillTreeUrlFilesDir);
                    }

                    ImGui.SameLine();
                    // Populate Build List
                    if (ImGui.Button("(Re)Load List"))
                    {
                        BuildFiles = TreeConfig.GetBuilds();
                    }

                    ImGui.SameLine();
                    // Open Forum Thread
                    if (ImGui.Button("Open Forum Thread"))
                    {
                        Process.Start(Settings.SelectedBuild.BuildLink);
                    }

                    Settings.SelectedURLFile = ImGuiExtension.ComboBox("Builds", Settings.SelectedURLFile,
                                                                       BuildFiles, out var buildSelected, ImGuiComboFlags.HeightLarge);
                    if (buildSelected)
                    {
                        Settings.SelectedBuild = TreeConfig.LoadBuild(Settings.SelectedURLFile);
                        ReadUrlFromSelectedUrl(Settings.SelectedURLFile);
                    }
                    var TreeToUse = -1;
                    ImGui.Separator();
                    ImGui.Text($"Currently Selected: {Settings.SelectedTreeName}");
                    ImGui.Separator();
                    ImGui.Columns(2, "LoadColums", true);
                    ImGui.SetColumnWidth(0, 51f);
                    ImGui.Text("");
                    ImGui.NextColumn();
                    ImGui.Text("Tree Name");
                    ImGui.NextColumn();
                    if (Settings.SelectedBuild.Trees.Count != 0)
                    {
                        ImGui.Separator();
                    }
                    for (var j = 0; j < Settings.SelectedBuild.Trees.Count; j++)
                    {
                        if (ImGui.Button($"LOAD##LOADRULE{j}"))
                        {
                            TreeToUse = j;
                            Settings.SelectedBuild.SelectedIndex = j;
                        }


                        ImGui.NextColumn();
                        ImGui.Text(Settings.SelectedBuild.Trees[j].Tag);
                        ImGui.NextColumn();
                        ImGui.PopItemWidth();
                    }
                    ImGui.Columns(1, "", false);
                    ImGui.Separator();

                    if (TreeToUse != -1)
                    {
                        ReadUrlFromSelectedBuild(Settings.SelectedBuild.Trees[TreeToUse].SkillTreeUrl,
                                                 Settings.SelectedBuild.Trees[TreeToUse].Tag);
                    }
                    ImGui.Text("NOTES:");

                    // only way to wrap text with imgui.net without a limit on TextWrap function
                    ImGuiNative.igPushTextWrapPos(0.0f);
                    ImGui.TextUnformatted(Settings.SelectedBuild.Notes);
                    ImGuiNative.igPopTextWrapPos();
                    break;

                case "Build Edit":
                    if (Settings.SelectedBuild.Trees.Count > 0)
                    {
                        var treesToRemove   = new List <int>();
                        var treesToMoveEdit = new List <Tuple <int, bool> >();

                        ImGui.Separator();
                        Settings.SelectedBuild.BuildLink =
                            ImGuiExtension.InputText("Forum Thread", Settings.SelectedBuild.BuildLink,
                                                     1024, ImGuiInputTextFlags.None);

                        ImGui.Text("Notes");
                        // Keep at max 4k byte size not sure why it crashes when upped, not going to bother dealing with this either.
                        Settings.SelectedBuild.Notes = ImGuiExtension.MultiLineTextBox("##Notes",
                                                                                       Settings.SelectedBuild.Notes, 150000, new Vector2(newcontentRegionArea.X - 20, 200),
                                                                                       ImGuiInputTextFlags.Multiline);

                        ImGui.Separator();
                        ImGui.Columns(4, "EditColums", true);
                        ImGui.SetColumnWidth(0, 30f);
                        ImGui.SetColumnWidth(1, 50f);
                        ImGui.Text("");
                        ImGui.NextColumn();
                        ImGui.Text("Move");
                        ImGui.NextColumn();
                        ImGui.Text("Tree Name");
                        ImGui.NextColumn();
                        ImGui.Text("Skill Tree");
                        ImGui.NextColumn();
                        if (Settings.SelectedBuild.Trees.Count != 0)
                        {
                            ImGui.Separator();
                        }
                        for (var j = 0; j < Settings.SelectedBuild.Trees.Count; j++)
                        {
                            if (ImGui.Button($"X##REMOVERULE{j}"))
                            {
                                treesToRemove.Add(j);
                            }

                            ImGui.NextColumn();
                            if (ImGui.Button($"^##MOVERULEUPEDIT{j}"))
                            {
                                treesToMoveEdit.Add(new Tuple <int, bool>(j, true));
                            }
                            ImGui.SameLine();
                            if (ImGui.Button($"v##MOVERULEDOWNEDIT{j}"))
                            {
                                treesToMoveEdit.Add(new Tuple <int, bool>(j, false));
                            }
                            ImGui.NextColumn();
                            ImGui.PushItemWidth(ImGui.GetContentRegionAvail().X);
                            Settings.SelectedBuild.Trees[j].Tag =
                                ImGuiExtension.InputText($"##TAG{j}",
                                                         Settings.SelectedBuild.Trees[j].Tag, 1024,
                                                         ImGuiInputTextFlags.AutoSelectAll).TrimEnd('\0').TrimEnd('\u0000').Replace("\u0000", "");
                            ImGui.PopItemWidth();
                            //ImGui.SameLine();
                            ImGui.NextColumn();
                            ImGui.PushItemWidth(ImGui.GetContentRegionAvail().X);
                            Settings.SelectedBuild.Trees[j].SkillTreeUrl =
                                ImGuiExtension.InputText($"##GN{j}",
                                                         Settings.SelectedBuild.Trees[j].SkillTreeUrl, 1024,
                                                         ImGuiInputTextFlags.AutoSelectAll).TrimEnd('\0').TrimEnd('\u0000').Replace("\u0000", "");
                            ImGui.NextColumn();
                            ImGui.PopItemWidth();
                        }

                        foreach (var i in treesToRemove)
                        {
                            Settings.SelectedBuild.Trees.Remove(Settings.SelectedBuild.Trees[i]);
                        }

                        ImGui.Separator();
                        ImGui.Columns(1, "", false);
                        if (ImGui.Button($"+##AN"))
                        {
                            Settings.SelectedBuild.Trees.Add(new TreeConfig.Tree());
                        }
                        ImGui.Separator();

                        foreach (var i in treesToMoveEdit)
                        {
                            if (i.Item2)
                            {
                                // Move Up
                                if (i.Item1 > 0)
                                {
                                    var itemAbove  = Settings.SelectedBuild.Trees[i.Item1 - 1];
                                    var itemMoving = Settings.SelectedBuild.Trees[i.Item1];

                                    Settings.SelectedBuild.Trees[i.Item1 - 1] = itemMoving;
                                    Settings.SelectedBuild.Trees[i.Item1]     = itemAbove;
                                }
                            }
                            else
                            {
                                // Move Down
                                if (i.Item1 < Settings.SelectedBuild.Trees.Count - 1)
                                {
                                    var itemBelow  = Settings.SelectedBuild.Trees[i.Item1 + 1];
                                    var itemMoving = Settings.SelectedBuild.Trees[i.Item1];

                                    Settings.SelectedBuild.Trees[i.Item1 + 1] = itemMoving;
                                    Settings.SelectedBuild.Trees[i.Item1]     = itemBelow;
                                }
                            }
                        }
                        //ImGui.Separator();

                        CurrentlySelectedBuildFileEdit = ImGuiExtension.InputText("##RenameLabel",
                                                                                  CurrentlySelectedBuildFileEdit, 200, ImGuiInputTextFlags.None);
                        ImGui.SameLine();
                        if (ImGui.Button("Rename Build"))
                        {
                            RenameFile(CurrentlySelectedBuildFileEdit, Settings.SelectedURLFile);
                            BuildFiles = TreeConfig.GetBuilds();
                        }

                        if (ImGui.Button($"Save Build to File: {Settings.SelectedURLFile}"))
                        {
                            TreeConfig.SaveSettingFile($@"{SkillTreeUrlFilesDir}\{Settings.SelectedURLFile}", Settings.SelectedBuild);
                            BuildFiles = TreeConfig.GetBuilds();
                        }
                    }
                    else
                    {
                        ImGui.Text("No Data Selected");
                    }

                    break;

                case "Build Add":
                    var treesToRemoveCreation = new List <int>();
                    var treesToMove           = new List <Tuple <int, bool> >();

                    ImGui.Separator();
                    Settings.SelectedBuildCreating.BuildLink =
                        ImGuiExtension.InputText("Forum Thread",
                                                 Settings.SelectedBuildCreating.BuildLink,
                                                 1024, ImGuiInputTextFlags.None);

                    ImGui.Text("Notes");
                    // Keep at max 4k byte size not sure why it crashes when upped, not going to bother dealing with this either.
                    ImGuiExtension.MultiLineTextBox("##NotesAdd",
                                                    Settings.SelectedBuildCreating.Notes, 4000, new Vector2(newcontentRegionArea.X - 20, 200),
                                                    ImGuiInputTextFlags.Multiline);

                    ImGui.Separator();
                    ImGui.Columns(4, "AddColums", true);
                    ImGui.SetColumnWidth(0, 30f);
                    ImGui.SetColumnWidth(1, 50f);
                    ImGui.Text("");
                    ImGui.NextColumn();
                    ImGui.Text("Move");
                    ImGui.NextColumn();
                    ImGui.Text("Tree Name");
                    ImGui.NextColumn();
                    ImGui.Text("Skill Tree");
                    ImGui.NextColumn();
                    if (Settings.SelectedBuildCreating.Trees.Count != 0)
                    {
                        ImGui.Separator();
                    }
                    for (var j = 0; j < Settings.SelectedBuildCreating.Trees.Count; j++)
                    {
                        if (ImGui.Button($"X##REMOVERULE{j}"))
                        {
                            treesToRemoveCreation.Add(j);
                        }

                        ImGui.NextColumn();
                        if (ImGui.Button($"^##MOVERULEUP{j}"))
                        {
                            treesToMove.Add(new Tuple <int, bool>(j, true));
                        }
                        ImGui.SameLine();
                        if (ImGui.Button($"v##MOVERULEDOWN{j}"))
                        {
                            treesToMove.Add(new Tuple <int, bool>(j, false));
                        }
                        ImGui.NextColumn();
                        ImGui.PushItemWidth(ImGui.GetWindowContentRegionWidth());
                        Settings.SelectedBuildCreating.Trees[j].Tag = ImGuiExtension.InputText($"##TAGADD{j}",
                                                                                               Settings.SelectedBuildCreating.Trees[j].Tag, 1024, ImGuiInputTextFlags.AutoSelectAll);
                        ImGui.PopItemWidth();
                        //ImGui.SameLine();
                        ImGui.NextColumn();
                        ImGui.PushItemWidth(ImGui.GetWindowContentRegionWidth());
                        Settings.SelectedBuildCreating.Trees[j].SkillTreeUrl =
                            ImGuiExtension.InputText($"##GNADD{j}",
                                                     Settings.SelectedBuildCreating.Trees[j].SkillTreeUrl, 1024,
                                                     ImGuiInputTextFlags.AutoSelectAll);
                        ImGui.PopItemWidth();
                        ImGui.NextColumn();
                    }

                    foreach (var i in treesToRemoveCreation)
                    {
                        Settings.SelectedBuildCreating.Trees.Remove(Settings.SelectedBuildCreating.Trees[i]);
                    }

                    ImGui.Separator();
                    ImGui.Columns(1, "", false);
                    if (ImGui.Button($"+##AN"))
                    {
                        Settings.SelectedBuildCreating.Trees.Add(new TreeConfig.Tree());
                    }
                    ImGui.Separator();


                    foreach (var i in treesToMove)
                    {
                        if (i.Item2)
                        {
                            // Move Up
                            if (i.Item1 > 0)
                            {
                                var itemAbove  = Settings.SelectedBuildCreating.Trees[i.Item1 - 1];
                                var itemMoving = Settings.SelectedBuildCreating.Trees[i.Item1];

                                Settings.SelectedBuildCreating.Trees[i.Item1 - 1] = itemMoving;
                                Settings.SelectedBuildCreating.Trees[i.Item1]     = itemAbove;
                            }
                        }
                        else
                        {
                            // Move Down
                            if (i.Item1 < Settings.SelectedBuildCreating.Trees.Count - 1)
                            {
                                var itemBelow  = Settings.SelectedBuildCreating.Trees[i.Item1 + 1];
                                var itemMoving = Settings.SelectedBuildCreating.Trees[i.Item1];

                                Settings.SelectedBuildCreating.Trees[i.Item1 + 1] = itemMoving;
                                Settings.SelectedBuildCreating.Trees[i.Item1]     = itemBelow;
                            }
                        }
                    }

                    //ImGui.Separator();
                    AddNewBuildFile = ImGuiExtension.InputText("##CreationLabel", AddNewBuildFile, 1024, ImGuiInputTextFlags.EnterReturnsTrue);
                    if (ImGui.Button($"Save Build to File: {AddNewBuildFile}"))
                    {
                        TreeConfig.SaveSettingFile($@"{SkillTreeUrlFilesDir}\{AddNewBuildFile}", Settings.SelectedBuildCreating);
                        BuildFiles = TreeConfig.GetBuilds();
                        Settings.SelectedBuildCreating = new TreeConfig.SkillTreeData();
                    }

                    break;

                case "Colors":
                    Settings.PickedBorderColor.Value =
                        ImGuiExtension.ColorPicker("Border Color", Settings.PickedBorderColor);
                    Settings.UnpickedBorderColor.Value =
                        ImGuiExtension.ColorPicker("Unpicked Border Color", Settings.UnpickedBorderColor);
                    Settings.WrongPickedBorderColor.Value = ImGuiExtension.ColorPicker("Wrong picked Border Color",
                                                                                       Settings.WrongPickedBorderColor);
                    Settings.LineColor.Value = ImGuiExtension.ColorPicker("Line Color", Settings.LineColor);
                    break;

                case "Sliders":
                    Settings.offsetX.Value = ImGuiExtension.IntSlider("offsetX", Settings.offsetX);
                    Settings.offsetY.Value = ImGuiExtension.IntSlider("offsetY", Settings.offsetY);

                    Settings.PickedBorderWidth.Value      = ImGuiExtension.IntSlider("Picked Border Width", Settings.PickedBorderWidth);
                    Settings.UnpickedBorderWidth.Value    = ImGuiExtension.IntSlider("Unpicked Border Width", Settings.UnpickedBorderWidth);
                    Settings.WrongPickedBorderWidth.Value = ImGuiExtension.IntSlider("WrongPicked Border Width", Settings.WrongPickedBorderWidth);
                    Settings.LineWidth.Value = ImGuiExtension.IntSlider("Line Width", Settings.LineWidth);
                    break;

                case "Toggles":
                    Settings.EnableEzTreeChanger.Value = ImGuiExtension.Checkbox("Enable EZ Tree Changer Within Builds", Settings.EnableEzTreeChanger);
                    break;
                }
            }

            ImGui.PopStyleVar();
            ImGui.EndChild();
        }