Exemple #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,
                    };
                }
            }
        }
Exemple #2
0
        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]);
        }