mirror of
https://github.com/xivdev/Penumbra.git
synced 2026-02-18 22:07:45 +01:00
Turn Settings and Priority into their own types.
This commit is contained in:
parent
77bf441e62
commit
b1ca073276
29 changed files with 422 additions and 298 deletions
|
|
@ -694,7 +694,7 @@ public class ItemSwapTab : IDisposable, ITab
|
|||
UpdateMod(_mod, _mod.Index < newCollection.Settings.Count ? newCollection[_mod.Index].Settings : null);
|
||||
}
|
||||
|
||||
private void OnSettingChange(ModCollection collection, ModSettingChange type, Mod? mod, int oldValue, int groupIdx, bool inherited)
|
||||
private void OnSettingChange(ModCollection collection, ModSettingChange type, Mod? mod, Setting oldValue, int groupIdx, bool inherited)
|
||||
{
|
||||
if (collection != _collectionManager.Active.Current || mod != _mod)
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
|||
// @formatter:on
|
||||
SetFilterTooltip();
|
||||
|
||||
SelectionChanged += OnSelectionChange;
|
||||
SelectionChanged += OnSelectionChange;
|
||||
if (_config.Ephemeral.LastModPath.Length > 0)
|
||||
{
|
||||
var mod = _modManager.FirstOrDefault(m
|
||||
|
|
@ -92,7 +92,7 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
|||
OnCollectionChange(CollectionType.Current, null, _collectionManager.Active.Current, "");
|
||||
}
|
||||
|
||||
private static readonly string[] ValidModExtensions =
|
||||
private static readonly string[] ValidModExtensions =
|
||||
[
|
||||
".ttmp",
|
||||
".ttmp2",
|
||||
|
|
@ -191,15 +191,15 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
|||
}
|
||||
}
|
||||
|
||||
if (state.Priority != 0 && !_config.HidePrioritiesInSelector)
|
||||
if (!state.Priority.IsDefault && !_config.HidePrioritiesInSelector)
|
||||
{
|
||||
var line = ImGui.GetItemRectMin().Y;
|
||||
var itemPos = ImGui.GetItemRectMax().X;
|
||||
var maxWidth = ImGui.GetWindowPos().X + ImGui.GetWindowContentRegionMax().X;
|
||||
var priorityString = $"[{state.Priority}]";
|
||||
var Size = ImGui.CalcTextSize(priorityString).X;
|
||||
var size = ImGui.CalcTextSize(priorityString).X;
|
||||
var remainingSpace = maxWidth - itemPos;
|
||||
var offset = remainingSpace - Size;
|
||||
var offset = remainingSpace - size;
|
||||
if (ImGui.GetScrollMaxY() == 0)
|
||||
offset -= ImGui.GetStyle().ItemInnerSpacing.X;
|
||||
|
||||
|
|
@ -427,7 +427,7 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
|||
|
||||
#region Automatic cache update functions.
|
||||
|
||||
private void OnSettingChange(ModCollection collection, ModSettingChange type, Mod? mod, int oldValue, int groupIdx, bool inherited)
|
||||
private void OnSettingChange(ModCollection collection, ModSettingChange type, Mod? mod, Setting oldValue, int groupIdx, bool inherited)
|
||||
{
|
||||
if (collection != _collectionManager.Active.Current)
|
||||
return;
|
||||
|
|
@ -517,8 +517,8 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
|||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public struct ModState
|
||||
{
|
||||
public ColorId Color;
|
||||
public int Priority;
|
||||
public ColorId Color;
|
||||
public ModPriority Priority;
|
||||
}
|
||||
|
||||
private const StringComparison IgnoreCase = StringComparison.OrdinalIgnoreCase;
|
||||
|
|
@ -744,7 +744,7 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
|||
state = new ModState
|
||||
{
|
||||
Color = ColorId.EnabledMod,
|
||||
Priority = settings?.Priority ?? 0,
|
||||
Priority = settings?.Priority ?? ModPriority.Default,
|
||||
};
|
||||
if (ApplyStringFilters(leaf, mod))
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -9,38 +9,30 @@ using Penumbra.Collections.Manager;
|
|||
using Penumbra.Meta.Manipulations;
|
||||
using Penumbra.Mods;
|
||||
using Penumbra.Mods.Editor;
|
||||
using Penumbra.Mods.Subclasses;
|
||||
using Penumbra.String.Classes;
|
||||
using Penumbra.UI.Classes;
|
||||
|
||||
namespace Penumbra.UI.ModsTab;
|
||||
|
||||
public class ModPanelConflictsTab : ITab
|
||||
public class ModPanelConflictsTab(CollectionManager collectionManager, ModFileSystemSelector selector) : ITab
|
||||
{
|
||||
private readonly ModFileSystemSelector _selector;
|
||||
private readonly CollectionManager _collectionManager;
|
||||
|
||||
public ModPanelConflictsTab(CollectionManager collectionManager, ModFileSystemSelector selector)
|
||||
{
|
||||
_collectionManager = collectionManager;
|
||||
_selector = selector;
|
||||
}
|
||||
|
||||
private int? _currentPriority = null;
|
||||
private int? _currentPriority;
|
||||
|
||||
public ReadOnlySpan<byte> Label
|
||||
=> "Conflicts"u8;
|
||||
|
||||
public bool IsVisible
|
||||
=> _collectionManager.Active.Current.Conflicts(_selector.Selected!).Count > 0;
|
||||
=> collectionManager.Active.Current.Conflicts(selector.Selected!).Count > 0;
|
||||
|
||||
private readonly ConditionalWeakTable<IMod, object> _expandedMods = new();
|
||||
private readonly ConditionalWeakTable<IMod, object> _expandedMods = [];
|
||||
|
||||
private int GetPriority(ModConflicts conflicts)
|
||||
private ModPriority GetPriority(ModConflicts conflicts)
|
||||
{
|
||||
if (conflicts.Mod2.Index < 0)
|
||||
return conflicts.Mod2.Priority;
|
||||
|
||||
return _collectionManager.Active.Current[conflicts.Mod2.Index].Settings?.Priority ?? 0;
|
||||
return collectionManager.Active.Current[conflicts.Mod2.Index].Settings?.Priority ?? ModPriority.Default;
|
||||
}
|
||||
|
||||
public void DrawContent()
|
||||
|
|
@ -63,8 +55,8 @@ public class ModPanelConflictsTab : ITab
|
|||
DrawCurrentRow(priorityWidth);
|
||||
|
||||
// Can not be null because otherwise the tab bar is never drawn.
|
||||
var mod = _selector.Selected!;
|
||||
foreach (var (conflict, index) in _collectionManager.Active.Current.Conflicts(mod).OrderByDescending(GetPriority)
|
||||
var mod = selector.Selected!;
|
||||
foreach (var (conflict, index) in collectionManager.Active.Current.Conflicts(mod).OrderByDescending(GetPriority)
|
||||
.ThenBy(c => c.Mod2.Name.Lower).WithIndex())
|
||||
{
|
||||
using var id = ImRaii.PushId(index);
|
||||
|
|
@ -77,18 +69,18 @@ public class ModPanelConflictsTab : ITab
|
|||
ImGui.TableNextColumn();
|
||||
using var c = ImRaii.PushColor(ImGuiCol.Text, ColorId.FolderLine.Value());
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.TextUnformatted(_selector.Selected!.Name);
|
||||
ImGui.TextUnformatted(selector.Selected!.Name);
|
||||
ImGui.TableNextColumn();
|
||||
var priority = _collectionManager.Active.Current[_selector.Selected!.Index].Settings!.Priority;
|
||||
var priority = collectionManager.Active.Current[selector.Selected!.Index].Settings!.Priority.Value;
|
||||
ImGui.SetNextItemWidth(priorityWidth);
|
||||
if (ImGui.InputInt("##priority", ref priority, 0, 0, ImGuiInputTextFlags.EnterReturnsTrue))
|
||||
_currentPriority = priority;
|
||||
|
||||
if (ImGui.IsItemDeactivatedAfterEdit() && _currentPriority.HasValue)
|
||||
{
|
||||
if (_currentPriority != _collectionManager.Active.Current[_selector.Selected!.Index].Settings!.Priority)
|
||||
_collectionManager.Editor.SetModPriority(_collectionManager.Active.Current, (Mod)_selector.Selected!,
|
||||
_currentPriority.Value);
|
||||
if (_currentPriority != collectionManager.Active.Current[selector.Selected!.Index].Settings!.Priority.Value)
|
||||
collectionManager.Editor.SetModPriority(collectionManager.Active.Current, selector.Selected!,
|
||||
new ModPriority(_currentPriority.Value));
|
||||
|
||||
_currentPriority = null;
|
||||
}
|
||||
|
|
@ -104,7 +96,7 @@ public class ModPanelConflictsTab : ITab
|
|||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
if (ImGui.Selectable(conflict.Mod2.Name) && conflict.Mod2 is Mod otherMod)
|
||||
_selector.SelectByValue(otherMod);
|
||||
selector.SelectByValue(otherMod);
|
||||
var hovered = ImGui.IsItemHovered();
|
||||
var rightClicked = ImGui.IsItemClicked(ImGuiMouseButton.Right);
|
||||
if (conflict.Mod2 is Mod otherMod2)
|
||||
|
|
@ -112,7 +104,7 @@ public class ModPanelConflictsTab : ITab
|
|||
if (hovered)
|
||||
ImGui.SetTooltip("Click to jump to mod, Control + Right-Click to disable mod.");
|
||||
if (rightClicked && ImGui.GetIO().KeyCtrl)
|
||||
_collectionManager.Editor.SetModState(_collectionManager.Active.Current, otherMod2, false);
|
||||
collectionManager.Editor.SetModState(collectionManager.Active.Current, otherMod2, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -146,7 +138,7 @@ public class ModPanelConflictsTab : ITab
|
|||
ImGui.TableNextColumn();
|
||||
var conflictPriority = DrawPriorityInput(conflict, priorityWidth);
|
||||
ImGui.SameLine();
|
||||
var selectedPriority = _collectionManager.Active.Current[_selector.Selected!.Index].Settings!.Priority;
|
||||
var selectedPriority = collectionManager.Active.Current[selector.Selected!.Index].Settings!.Priority.Value;
|
||||
DrawPriorityButtons(conflict.Mod2 as Mod, conflictPriority, selectedPriority, buttonSize);
|
||||
ImGui.TableNextColumn();
|
||||
DrawExpandButton(conflict.Mod2, expanded, buttonSize);
|
||||
|
|
@ -171,7 +163,7 @@ public class ModPanelConflictsTab : ITab
|
|||
using var color = ImRaii.PushColor(ImGuiCol.Text,
|
||||
conflict.HasPriority ? ColorId.HandledConflictMod.Value() : ColorId.ConflictingMod.Value());
|
||||
using var disabled = ImRaii.Disabled(conflict.Mod2.Index < 0);
|
||||
var priority = _currentPriority ?? GetPriority(conflict);
|
||||
var priority = _currentPriority ?? GetPriority(conflict).Value;
|
||||
|
||||
ImGui.SetNextItemWidth(priorityWidth);
|
||||
if (ImGui.InputInt("##priority", ref priority, 0, 0, ImGuiInputTextFlags.EnterReturnsTrue))
|
||||
|
|
@ -179,8 +171,9 @@ public class ModPanelConflictsTab : ITab
|
|||
|
||||
if (ImGui.IsItemDeactivatedAfterEdit() && _currentPriority.HasValue)
|
||||
{
|
||||
if (_currentPriority != GetPriority(conflict))
|
||||
_collectionManager.Editor.SetModPriority(_collectionManager.Active.Current, (Mod)conflict.Mod2, _currentPriority.Value);
|
||||
if (_currentPriority != GetPriority(conflict).Value)
|
||||
collectionManager.Editor.SetModPriority(collectionManager.Active.Current, (Mod)conflict.Mod2,
|
||||
new ModPriority(_currentPriority.Value));
|
||||
|
||||
_currentPriority = null;
|
||||
}
|
||||
|
|
@ -195,12 +188,14 @@ public class ModPanelConflictsTab : ITab
|
|||
private void DrawPriorityButtons(Mod? conflict, int conflictPriority, int selectedPriority, Vector2 buttonSize)
|
||||
{
|
||||
if (ImGuiUtil.DrawDisabledButton(FontAwesomeIcon.SortNumericUpAlt.ToIconString(), buttonSize,
|
||||
$"Set the priority of the currently selected mod to this mods priority plus one. ({selectedPriority} -> {conflictPriority + 1})", selectedPriority > conflictPriority, true))
|
||||
_collectionManager.Editor.SetModPriority(_collectionManager.Active.Current, _selector.Selected!, conflictPriority + 1);
|
||||
$"Set the priority of the currently selected mod to this mods priority plus one. ({selectedPriority} -> {conflictPriority + 1})",
|
||||
selectedPriority > conflictPriority, true))
|
||||
collectionManager.Editor.SetModPriority(collectionManager.Active.Current, selector.Selected!,
|
||||
new ModPriority(conflictPriority + 1));
|
||||
ImGui.SameLine();
|
||||
if (ImGuiUtil.DrawDisabledButton(FontAwesomeIcon.SortNumericDownAlt.ToIconString(), buttonSize,
|
||||
$"Set the priority of this mod to the currently selected mods priority minus one. ({conflictPriority} -> {selectedPriority - 1})",
|
||||
selectedPriority > conflictPriority || conflict == null, true))
|
||||
_collectionManager.Editor.SetModPriority(_collectionManager.Active.Current, conflict!, selectedPriority - 1);
|
||||
collectionManager.Editor.SetModPriority(collectionManager.Active.Current, conflict!, new ModPriority(selectedPriority - 1));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -502,18 +502,16 @@ public class ModPanelEditTab(
|
|||
|
||||
if (group.Type == GroupType.Single)
|
||||
{
|
||||
if (ImGui.RadioButton("##default", group.DefaultSettings == optionIdx))
|
||||
panel._modManager.OptionEditor.ChangeModGroupDefaultOption(panel._mod, groupIdx, (uint)optionIdx);
|
||||
if (ImGui.RadioButton("##default", group.DefaultSettings.AsIndex == optionIdx))
|
||||
panel._modManager.OptionEditor.ChangeModGroupDefaultOption(panel._mod, groupIdx, Setting.Single(optionIdx));
|
||||
|
||||
ImGuiUtil.HoverTooltip($"Set {option.Name} as the default choice for this group.");
|
||||
}
|
||||
else
|
||||
{
|
||||
var isDefaultOption = ((group.DefaultSettings >> optionIdx) & 1) != 0;
|
||||
var isDefaultOption = group.DefaultSettings.HasFlag(optionIdx);
|
||||
if (ImGui.Checkbox("##default", ref isDefaultOption))
|
||||
panel._modManager.OptionEditor.ChangeModGroupDefaultOption(panel._mod, groupIdx, isDefaultOption
|
||||
? group.DefaultSettings | (1u << optionIdx)
|
||||
: group.DefaultSettings & ~(1u << optionIdx));
|
||||
panel._modManager.OptionEditor.ChangeModGroupDefaultOption(panel._mod, groupIdx, group.DefaultSettings.SetBit(optionIdx, isDefaultOption));
|
||||
|
||||
ImGuiUtil.HoverTooltip($"{(isDefaultOption ? "Disable" : "Enable")} {option.Name} per default in this group.");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ public class ModPanelSettingsTab : ITab
|
|||
private ModSettings _settings = null!;
|
||||
private ModCollection _collection = null!;
|
||||
private bool _empty;
|
||||
private int? _currentPriority = null;
|
||||
private int? _currentPriority;
|
||||
|
||||
public ModPanelSettingsTab(CollectionManager collectionManager, ModManager modManager, ModFileSystemSelector selector,
|
||||
TutorialService tutorial, CommunicatorService communicator, Configuration config)
|
||||
|
|
@ -136,15 +136,15 @@ public class ModPanelSettingsTab : ITab
|
|||
private void DrawPriorityInput()
|
||||
{
|
||||
using var group = ImRaii.Group();
|
||||
var priority = _currentPriority ?? _settings.Priority;
|
||||
var priority = _currentPriority ?? _settings.Priority.Value;
|
||||
ImGui.SetNextItemWidth(50 * UiHelpers.Scale);
|
||||
if (ImGui.InputInt("##Priority", ref priority, 0, 0))
|
||||
_currentPriority = priority;
|
||||
|
||||
if (ImGui.IsItemDeactivatedAfterEdit() && _currentPriority.HasValue)
|
||||
{
|
||||
if (_currentPriority != _settings.Priority)
|
||||
_collectionManager.Editor.SetModPriority(_collectionManager.Active.Current, _selector.Selected!, _currentPriority.Value);
|
||||
if (_currentPriority != _settings.Priority.Value)
|
||||
_collectionManager.Editor.SetModPriority(_collectionManager.Active.Current, _selector.Selected!, new ModPriority(_currentPriority.Value));
|
||||
|
||||
_currentPriority = null;
|
||||
}
|
||||
|
|
@ -179,7 +179,7 @@ public class ModPanelSettingsTab : ITab
|
|||
private void DrawSingleGroupCombo(IModGroup group, int groupIdx)
|
||||
{
|
||||
using var id = ImRaii.PushId(groupIdx);
|
||||
var selectedOption = _empty ? (int)group.DefaultSettings : (int)_settings.Settings[groupIdx];
|
||||
var selectedOption = _empty ? group.DefaultSettings.AsIndex : _settings.Settings[groupIdx].AsIndex;
|
||||
ImGui.SetNextItemWidth(UiHelpers.InputTextWidth.X * 3 / 4);
|
||||
using (var combo = ImRaii.Combo(string.Empty, group[selectedOption].Name))
|
||||
{
|
||||
|
|
@ -189,7 +189,8 @@ public class ModPanelSettingsTab : ITab
|
|||
id.Push(idx2);
|
||||
var option = group[idx2];
|
||||
if (ImGui.Selectable(option.Name, idx2 == selectedOption))
|
||||
_collectionManager.Editor.SetModSetting(_collectionManager.Active.Current, _selector.Selected!, groupIdx, (uint)idx2);
|
||||
_collectionManager.Editor.SetModSetting(_collectionManager.Active.Current, _selector.Selected!, groupIdx,
|
||||
Setting.Single(idx2));
|
||||
|
||||
if (option.Description.Length > 0)
|
||||
ImGuiUtil.SelectableHelpMarker(option.Description);
|
||||
|
|
@ -210,8 +211,8 @@ public class ModPanelSettingsTab : ITab
|
|||
private void DrawSingleGroupRadio(IModGroup group, int groupIdx)
|
||||
{
|
||||
using var id = ImRaii.PushId(groupIdx);
|
||||
var selectedOption = _empty ? (int)group.DefaultSettings : (int)_settings.Settings[groupIdx];
|
||||
var minWidth = Widget.BeginFramedGroup(group.Name, description:group.Description);
|
||||
var selectedOption = _empty ? group.DefaultSettings.AsIndex : _settings.Settings[groupIdx].AsIndex;
|
||||
var minWidth = Widget.BeginFramedGroup(group.Name, group.Description);
|
||||
|
||||
DrawCollapseHandling(group, minWidth, DrawOptions);
|
||||
|
||||
|
|
@ -225,7 +226,8 @@ public class ModPanelSettingsTab : ITab
|
|||
using var i = ImRaii.PushId(idx);
|
||||
var option = group[idx];
|
||||
if (ImGui.RadioButton(option.Name, selectedOption == idx))
|
||||
_collectionManager.Editor.SetModSetting(_collectionManager.Active.Current, _selector.Selected!, groupIdx, (uint)idx);
|
||||
_collectionManager.Editor.SetModSetting(_collectionManager.Active.Current, _selector.Selected!, groupIdx,
|
||||
Setting.Single(idx));
|
||||
|
||||
if (option.Description.Length <= 0)
|
||||
continue;
|
||||
|
|
@ -291,7 +293,17 @@ public class ModPanelSettingsTab : ITab
|
|||
{
|
||||
using var id = ImRaii.PushId(groupIdx);
|
||||
var flags = _empty ? group.DefaultSettings : _settings.Settings[groupIdx];
|
||||
var minWidth = Widget.BeginFramedGroup(group.Name, description: group.Description);
|
||||
var minWidth = Widget.BeginFramedGroup(group.Name, group.Description);
|
||||
|
||||
DrawCollapseHandling(group, minWidth, DrawOptions);
|
||||
|
||||
Widget.EndFramedGroup();
|
||||
var label = $"##multi{groupIdx}";
|
||||
if (ImGui.IsItemClicked(ImGuiMouseButton.Right))
|
||||
ImGui.OpenPopup($"##multi{groupIdx}");
|
||||
|
||||
DrawMultiPopup(group, groupIdx, label);
|
||||
return;
|
||||
|
||||
void DrawOptions()
|
||||
{
|
||||
|
|
@ -299,12 +311,11 @@ public class ModPanelSettingsTab : ITab
|
|||
{
|
||||
using var i = ImRaii.PushId(idx);
|
||||
var option = group[idx];
|
||||
var flag = 1u << idx;
|
||||
var setting = (flags & flag) != 0;
|
||||
var setting = flags.HasFlag(idx);
|
||||
|
||||
if (ImGui.Checkbox(option.Name, ref setting))
|
||||
{
|
||||
flags = setting ? flags | flag : flags & ~flag;
|
||||
flags = flags.SetBit(idx, setting);
|
||||
_collectionManager.Editor.SetModSetting(_collectionManager.Active.Current, _selector.Selected!, groupIdx, flags);
|
||||
}
|
||||
|
||||
|
|
@ -315,14 +326,10 @@ public class ModPanelSettingsTab : ITab
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DrawCollapseHandling(group, minWidth, DrawOptions);
|
||||
|
||||
Widget.EndFramedGroup();
|
||||
var label = $"##multi{groupIdx}";
|
||||
if (ImGui.IsItemClicked(ImGuiMouseButton.Right))
|
||||
ImGui.OpenPopup($"##multi{groupIdx}");
|
||||
|
||||
private void DrawMultiPopup(IModGroup group, int groupIdx, string label)
|
||||
{
|
||||
using var style = ImRaii.PushStyle(ImGuiStyleVar.PopupBorderSize, 1);
|
||||
using var popup = ImRaii.Popup(label);
|
||||
if (!popup)
|
||||
|
|
@ -331,12 +338,10 @@ public class ModPanelSettingsTab : ITab
|
|||
ImGui.TextUnformatted(group.Name);
|
||||
ImGui.Separator();
|
||||
if (ImGui.Selectable("Enable All"))
|
||||
{
|
||||
flags = group.Count == 32 ? uint.MaxValue : (1u << group.Count) - 1u;
|
||||
_collectionManager.Editor.SetModSetting(_collectionManager.Active.Current, _selector.Selected!, groupIdx, flags);
|
||||
}
|
||||
_collectionManager.Editor.SetModSetting(_collectionManager.Active.Current, _selector.Selected!, groupIdx,
|
||||
Setting.AllBits(group.Count));
|
||||
|
||||
if (ImGui.Selectable("Disable All"))
|
||||
_collectionManager.Editor.SetModSetting(_collectionManager.Active.Current, _selector.Selected!, groupIdx, 0);
|
||||
_collectionManager.Editor.SetModSetting(_collectionManager.Active.Current, _selector.Selected!, groupIdx, Setting.Zero);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -211,7 +211,7 @@ public class DebugTab : Window, ITab
|
|||
color.Pop();
|
||||
foreach (var (mod, paths, manips) in collection._cache!.ModData.Data.OrderBy(t => t.Item1.Name))
|
||||
{
|
||||
using var id = mod is TemporaryMod t ? PushId(t.Priority) : PushId(((Mod)mod).ModPath.Name);
|
||||
using var id = mod is TemporaryMod t ? PushId(t.Priority.Value) : PushId(((Mod)mod).ModPath.Name);
|
||||
using var node2 = TreeNode(mod.Name.Text);
|
||||
if (!node2)
|
||||
continue;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue