public override void Draw() => ImGuiExtension.Label(SettingName);
Beispiel #2
0
        public void Render()
        {
            if (!Settings.Enable.Value)
            {
                return;
            }

            var opened = Settings.Enable.Value;

            Settings.IsCollapsed = !DrawInfoWindow("PoeHUD  " + PoeHUDVersion, ref opened,
                                                   Settings.MenuWindowPos.X, Settings.MenuWindowPos.Y, Settings.MenuWindowSize.X, Settings.MenuWindowSize.Y,
                                                   WindowFlags.Default, Condition.Appearing);
            Settings.Enable.Value = opened;

            if (!Settings.IsCollapsed)
            {
                ImGuiNative.igGetContentRegionAvail(out newcontentRegionArea);
                if (ImGui.BeginChild("PluginsList", new Vector2(PluginNameWidth + 60, newcontentRegionArea.Y), true, WindowFlags.Default))
                {
                    PluginNameWidth = 120;
                    var coreOpened = ImGui.TreeNodeEx("", Settings.CorePluginsTreeState);

                    ImGui.SameLine();
                    if (ImGui.Selectable(CoreMenu.Plugin.PluginName, SelectedPlugin == CoreMenu.Plugin))
                    {
                        SelectedPlugin = CoreMenu.Plugin;
                    }

                    if (coreOpened)
                    {
                        foreach (var defPlugin in CoreMenu.Childs)
                        {
                            if (defPlugin.Childs.Count == 0)
                            {
                                DrawPlugin(defPlugin.Plugin, 20);
                            }
                            else
                            {
                                defPlugin.Plugin.Settings.Enable =
                                    ImGuiExtension.Checkbox($"##{defPlugin.Plugin.PluginName}Enabled", defPlugin.Plugin.Settings.Enable.Value);

                                ImGui.SameLine();
                                var pluginOpened = ImGui.TreeNodeEx($"##{defPlugin.Plugin.PluginName}", TreeNodeFlags.OpenOnArrow);
                                ImGui.SameLine();

                                var labelSize = ImGui.GetTextSize(defPlugin.Plugin.PluginName).X + 30;
                                if (PluginNameWidth < labelSize)
                                {
                                    PluginNameWidth = labelSize;
                                }

                                if (ImGui.Selectable(defPlugin.Plugin.PluginName, SelectedPlugin == defPlugin.Plugin))
                                {
                                    SelectedPlugin = defPlugin.Plugin;
                                }

                                if (pluginOpened)
                                {
                                    foreach (var plugin in defPlugin.Childs)
                                    {
                                        DrawPlugin(plugin.Plugin, 30);
                                    }

                                    ImGuiNative.igUnindent();
                                }
                            }
                        }
                        ImGui.TreePop();
                        Settings.CorePluginsTreeState = TreeNodeFlags.DefaultOpen | TreeNodeFlags.OpenOnArrow;

                        ImGui.Text("");
                    }
                    else
                    {
                        Settings.CorePluginsTreeState = TreeNodeFlags.OpenOnArrow;
                    }

                    if (ImGui.TreeNodeEx("Installed Plugins", Settings.InstalledPluginsTreeNode))
                    {
                        foreach (var plugin in PluginExtensionPlugin.Plugins)
                        {
                            if (Settings.DeveloperMode.Value && Settings.ShowPluginsMS.Value)
                            {
                                var extPlugin = (plugin as ExternalPluginHolder).BPlugin;
                                if (extPlugin == null)    //This can happen while plugin update (using plugin updator) or recompile
                                {
                                    continue;
                                }
                                ImGuiExtension.Label(extPlugin.AwerageMs.ToString());
                                ImGui.SameLine();
                            }

                            DrawPlugin(plugin, 20);
                        }

                        ImGui.TreePop();
                        Settings.InstalledPluginsTreeNode = TreeNodeFlags.DefaultOpen;
                    }
                    else
                    {
                        Settings.InstalledPluginsTreeNode = (TreeNodeFlags)0;
                    }
                }

                ImGui.EndChild();
                ImGui.SameLine();


                if (SelectedPlugin != null)
                {
                    ImGuiNative.igGetContentRegionAvail(out newcontentRegionArea);
                    ImGui.BeginChild("PluginOptions", new Vector2(newcontentRegionArea.X, newcontentRegionArea.Y), true, WindowFlags.Default);

                    var extPlugin = SelectedPlugin as ExternalPluginHolder;
                    if (Settings.DeveloperMode.Value && extPlugin != null)
                    {
                        if (ImGuiExtension.Button("Reload Plugin"))
                        {
                            extPlugin.ReloadPlugin();
                        }

                        if (extPlugin.BPlugin != null)
                        {
                            ImGui.SameLine();
                            ImGuiExtension.Label("CurrentMS: " + extPlugin.BPlugin.CurrentMs);
                            ImGui.SameLine();
                            ImGuiExtension.Label("AwerageMS: " + extPlugin.BPlugin.AwerageMs);
                            ImGui.SameLine();
                            ImGuiExtension.Label("TopMS: " + extPlugin.BPlugin.TopMs);
                        }
                    }
                    SelectedPlugin.DrawSettingsMenu();

                    ImGui.EndChild();
                }

                Settings.MenuWindowSize = ImGui.GetWindowSize();
            }

            Settings.MenuWindowPos = ImGui.GetWindowPosition();
            ImGui.EndWindow();

            if (Settings.ShowImguiDemo.Value)
            {
                bool tmp = Settings.ShowImguiDemo.Value;
                ImGuiNative.igShowDemoWindow(ref tmp);
                Settings.ShowImguiDemo.Value = tmp;
            }
        }
 public virtual void Draw() => ImGuiExtension.Label(SettingName);