예제 #1
0
        // If any conflicts exist, show them in this tab.
        private unsafe void DrawConflictsTab()
        {
            using var tab = DrawTab(ConflictTabHeader, Tabs.Conflicts);
            if (!tab)
            {
                return;
            }

            using var box = ImRaii.ListBox("##conflicts", -Vector2.One);
            if (!box)
            {
                return;
            }

            foreach (var conflict in Penumbra.CollectionManager.Current.Conflicts(_mod))
            {
                if (ImGui.Selectable(conflict.Mod2.Name) && conflict.Mod2 is Mod mod)
                {
                    _window._selector.SelectByValue(mod);
                }

                ImGui.SameLine();
                using (var color = ImRaii.PushColor(ImGuiCol.Text,
                                                    conflict.HasPriority ? ColorId.HandledConflictMod.Value() : ColorId.ConflictingMod.Value()))
                {
                    var priority = conflict.Mod2.Index < 0
                        ? conflict.Mod2.Priority
                        : Penumbra.CollectionManager.Current[conflict.Mod2.Index].Settings !.Priority;
                    ImGui.TextUnformatted($"(Priority {priority})");
                }

                using var indent = ImRaii.PushIndent(30f);
                foreach (var data in conflict.Conflicts)
                {
                    var _ = data switch
                    {
                        Utf8GamePath p => ImGuiNative.igSelectable_Bool(p.Path.Path, 0, ImGuiSelectableFlags.None, Vector2.Zero) > 0,
                        MetaManipulation m => ImGui.Selectable(m.Manipulation?.ToString() ?? string.Empty),
                        _ => false,
                    };
                }
            }
        }