// 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, }; } } }
public static ref ImcFile.ImageChangeData GetValue(this ImcFile file, MetaManipulation manipulation) { var parts = file.GetParts(); var imc = manipulation.ImcIdentifier; var idx = 0; if (imc.ObjectType == ObjectType.Equipment || imc.ObjectType == ObjectType.Accessory) { idx = imc.EquipSlot switch { EquipSlot.Head => 0, EquipSlot.Ears => 0, EquipSlot.Body => 1, EquipSlot.Neck => 1, EquipSlot.Hands => 2, EquipSlot.Wrists => 2, EquipSlot.Legs => 3, EquipSlot.RFinger => 3, EquipSlot.Feet => 4, EquipSlot.LFinger => 4, _ => throw new InvalidEnumArgumentException(), }; } if (imc.Variant == 0) { return(ref parts[idx].DefaultVariant); } if (imc.Variant > parts[idx].Variants.Length) { throw new InvalidImcVariantException(); } return(ref parts[idx].Variants[imc.Variant - 1]); }