mirror of
https://github.com/xivdev/Penumbra.git
synced 2026-02-19 06:17:45 +01:00
Extract ModCollectionIdentity.
This commit is contained in:
parent
fbbfe5e00d
commit
67305d507a
43 changed files with 270 additions and 252 deletions
|
|
@ -25,7 +25,7 @@ public class CollectionSelectHeader : IUiService
|
|||
_selection = selection;
|
||||
_resolver = resolver;
|
||||
_activeCollections = collectionManager.Active;
|
||||
_collectionCombo = new CollectionCombo(collectionManager, () => collectionManager.Storage.OrderBy(c => c.Name).ToList());
|
||||
_collectionCombo = new CollectionCombo(collectionManager, () => collectionManager.Storage.OrderBy(c => c.Identity.Name).ToList());
|
||||
}
|
||||
|
||||
/// <summary> Draw the header line that can quick switch between collections. </summary>
|
||||
|
|
@ -77,10 +77,10 @@ public class CollectionSelectHeader : IUiService
|
|||
return CheckCollection(collection) switch
|
||||
{
|
||||
CollectionState.Empty => (collection, "None", "The base collection is configured to use no mods.", true),
|
||||
CollectionState.Selected => (collection, collection.Name,
|
||||
CollectionState.Selected => (collection, collection.Identity.Name,
|
||||
"The configured base collection is already selected as the current collection.", true),
|
||||
CollectionState.Available => (collection, collection.Name,
|
||||
$"Select the configured base collection {collection.Name} as the current collection.", false),
|
||||
CollectionState.Available => (collection, collection.Identity.Name,
|
||||
$"Select the configured base collection {collection.Identity.Name} as the current collection.", false),
|
||||
_ => throw new Exception("Can not happen."),
|
||||
};
|
||||
}
|
||||
|
|
@ -91,10 +91,11 @@ public class CollectionSelectHeader : IUiService
|
|||
return CheckCollection(collection) switch
|
||||
{
|
||||
CollectionState.Empty => (collection, "None", "The loaded player character is configured to use no mods.", true),
|
||||
CollectionState.Selected => (collection, collection.Name,
|
||||
CollectionState.Selected => (collection, collection.Identity.Name,
|
||||
"The collection configured to apply to the loaded player character is already selected as the current collection.", true),
|
||||
CollectionState.Available => (collection, collection.Name,
|
||||
$"Select the collection {collection.Name} that applies to the loaded player character as the current collection.", false),
|
||||
CollectionState.Available => (collection, collection.Identity.Name,
|
||||
$"Select the collection {collection.Identity.Name} that applies to the loaded player character as the current collection.",
|
||||
false),
|
||||
_ => throw new Exception("Can not happen."),
|
||||
};
|
||||
}
|
||||
|
|
@ -105,10 +106,10 @@ public class CollectionSelectHeader : IUiService
|
|||
return CheckCollection(collection) switch
|
||||
{
|
||||
CollectionState.Empty => (collection, "None", "The interface collection is configured to use no mods.", true),
|
||||
CollectionState.Selected => (collection, collection.Name,
|
||||
CollectionState.Selected => (collection, collection.Identity.Name,
|
||||
"The configured interface collection is already selected as the current collection.", true),
|
||||
CollectionState.Available => (collection, collection.Name,
|
||||
$"Select the configured interface collection {collection.Name} as the current collection.", false),
|
||||
CollectionState.Available => (collection, collection.Identity.Name,
|
||||
$"Select the configured interface collection {collection.Identity.Name} as the current collection.", false),
|
||||
_ => throw new Exception("Can not happen."),
|
||||
};
|
||||
}
|
||||
|
|
@ -120,8 +121,8 @@ public class CollectionSelectHeader : IUiService
|
|||
{
|
||||
CollectionState.Unavailable => (null, "Not Inherited",
|
||||
"The settings of the selected mod are not inherited from another collection.", true),
|
||||
CollectionState.Available => (collection, collection!.Name,
|
||||
$"Select the collection {collection!.Name} from which the selected mod inherits its settings as the current collection.",
|
||||
CollectionState.Available => (collection, collection!.Identity.Name,
|
||||
$"Select the collection {collection!.Identity.Name} from which the selected mod inherits its settings as the current collection.",
|
||||
false),
|
||||
_ => throw new Exception("Can not happen."),
|
||||
};
|
||||
|
|
|
|||
|
|
@ -29,13 +29,13 @@ public sealed class CollectionCombo(CollectionManager manager, Func<IReadOnlyLis
|
|||
}
|
||||
|
||||
_color.Push(ImGuiCol.FrameBg, color).Push(ImGuiCol.FrameBgHovered, color);
|
||||
if (Draw(label, current.Name, string.Empty, width, ImGui.GetTextLineHeightWithSpacing()) && CurrentSelection != null)
|
||||
if (Draw(label, current.Identity.Name, string.Empty, width, ImGui.GetTextLineHeightWithSpacing()) && CurrentSelection != null)
|
||||
manager.Active.SetCollection(CurrentSelection, CollectionType.Current);
|
||||
_color.Dispose();
|
||||
}
|
||||
|
||||
protected override string ToString(ModCollection obj)
|
||||
=> obj.Name;
|
||||
=> obj.Identity.Name;
|
||||
|
||||
protected override void DrawCombo(string label, string preview, string tooltip, int currentSelected, float previewWidth, float itemHeight,
|
||||
ImGuiComboFlags flags)
|
||||
|
|
|
|||
|
|
@ -221,16 +221,16 @@ public sealed class CollectionPanel(
|
|||
ImGui.SameLine();
|
||||
ImGui.BeginGroup();
|
||||
using var style = ImRaii.PushStyle(ImGuiStyleVar.ButtonTextAlign, new Vector2(0, 0.5f));
|
||||
var name = _newName ?? collection.Name;
|
||||
var identifier = collection.Identifier;
|
||||
var name = _newName ?? collection.Identity.Name;
|
||||
var identifier = collection.Identity.Identifier;
|
||||
var width = ImGui.GetContentRegionAvail().X;
|
||||
var fileName = saveService.FileNames.CollectionFile(collection);
|
||||
ImGui.SetNextItemWidth(width);
|
||||
if (ImGui.InputText("##name", ref name, 128))
|
||||
_newName = name;
|
||||
if (ImGui.IsItemDeactivatedAfterEdit() && _newName != null && _newName != collection.Name)
|
||||
if (ImGui.IsItemDeactivatedAfterEdit() && _newName != null && _newName != collection.Identity.Name)
|
||||
{
|
||||
collection.Name = _newName;
|
||||
collection.Identity.Name = _newName;
|
||||
saveService.QueueSave(new ModCollectionSave(mods, collection));
|
||||
selector.RestoreCollections();
|
||||
_newName = null;
|
||||
|
|
@ -242,7 +242,7 @@ public sealed class CollectionPanel(
|
|||
|
||||
using (ImRaii.PushFont(UiBuilder.MonoFont))
|
||||
{
|
||||
if (ImGui.Button(collection.Identifier, new Vector2(width, 0)))
|
||||
if (ImGui.Button(collection.Identity.Identifier, new Vector2(width, 0)))
|
||||
try
|
||||
{
|
||||
Process.Start(new ProcessStartInfo(fileName) { UseShellExecute = true });
|
||||
|
|
@ -289,9 +289,9 @@ public sealed class CollectionPanel(
|
|||
_active.SetCollection(null, type, _active.Individuals.GetGroup(identifier));
|
||||
}
|
||||
|
||||
foreach (var coll in _collections.OrderBy(c => c.Name))
|
||||
foreach (var coll in _collections.OrderBy(c => c.Identity.Name))
|
||||
{
|
||||
if (coll != collection && ImGui.MenuItem($"Use {coll.Name}."))
|
||||
if (coll != collection && ImGui.MenuItem($"Use {coll.Identity.Name}."))
|
||||
_active.SetCollection(coll, type, _active.Individuals.GetGroup(identifier));
|
||||
}
|
||||
}
|
||||
|
|
@ -418,7 +418,7 @@ public sealed class CollectionPanel(
|
|||
private string Name(ModCollection? collection)
|
||||
=> collection == null ? "Unassigned" :
|
||||
collection == ModCollection.Empty ? "Use No Mods" :
|
||||
incognito.IncognitoMode ? collection.AnonymizedName : collection.Name;
|
||||
incognito.IncognitoMode ? collection.Identity.AnonymizedName : collection.Identity.Name;
|
||||
|
||||
private void DrawIndividualButton(string intro, Vector2 width, string tooltip, char suffix, params ActorIdentifier[] identifiers)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ public sealed class CollectionSelector : ItemSelector<ModCollection>, IDisposabl
|
|||
}
|
||||
|
||||
protected override bool Filtered(int idx)
|
||||
=> !Items[idx].Name.Contains(Filter, StringComparison.OrdinalIgnoreCase);
|
||||
=> !Items[idx].Identity.Name.Contains(Filter, StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
private const string PayloadString = "Collection";
|
||||
|
||||
|
|
@ -111,12 +111,12 @@ public sealed class CollectionSelector : ItemSelector<ModCollection>, IDisposabl
|
|||
}
|
||||
|
||||
private string Name(ModCollection collection)
|
||||
=> _incognito.IncognitoMode || collection.Name.Length == 0 ? collection.AnonymizedName : collection.Name;
|
||||
=> _incognito.IncognitoMode || collection.Identity.Name.Length == 0 ? collection.Identity.AnonymizedName : collection.Identity.Name;
|
||||
|
||||
public void RestoreCollections()
|
||||
{
|
||||
Items.Clear();
|
||||
foreach (var c in _storage.OrderBy(c => c.Name))
|
||||
foreach (var c in _storage.OrderBy(c => c.Identity.Name))
|
||||
Items.Add(c);
|
||||
SetFilterDirty();
|
||||
SetCurrent(_active.Current);
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ public class InheritanceUi(CollectionManager collectionManager, IncognitoService
|
|||
/// </summary>
|
||||
private void DrawInheritedChildren(ModCollection collection)
|
||||
{
|
||||
using var id = ImRaii.PushId(collection.Index);
|
||||
using var id = ImRaii.PushId(collection.Identity.Index);
|
||||
using var indent = ImRaii.PushIndent();
|
||||
|
||||
// Get start point for the lines (top of the selector).
|
||||
|
|
@ -114,7 +114,7 @@ public class InheritanceUi(CollectionManager collectionManager, IncognitoService
|
|||
_seenInheritedCollections.Contains(inheritance));
|
||||
_seenInheritedCollections.Add(inheritance);
|
||||
|
||||
ImRaii.TreeNode($"{Name(inheritance)}###{inheritance.Id}",
|
||||
ImRaii.TreeNode($"{Name(inheritance)}###{inheritance.Identity.Id}",
|
||||
ImGuiTreeNodeFlags.NoTreePushOnOpen | ImGuiTreeNodeFlags.Leaf | ImGuiTreeNodeFlags.Bullet);
|
||||
var (minRect, maxRect) = (ImGui.GetItemRectMin(), ImGui.GetItemRectMax());
|
||||
DrawInheritanceTreeClicks(inheritance, false);
|
||||
|
|
@ -140,7 +140,7 @@ public class InheritanceUi(CollectionManager collectionManager, IncognitoService
|
|||
using var color = ImRaii.PushColor(ImGuiCol.Text, ColorId.HandledConflictMod.Value(),
|
||||
_seenInheritedCollections.Contains(collection));
|
||||
_seenInheritedCollections.Add(collection);
|
||||
using var tree = ImRaii.TreeNode($"{Name(collection)}###{collection.Name}", ImGuiTreeNodeFlags.NoTreePushOnOpen);
|
||||
using var tree = ImRaii.TreeNode($"{Name(collection)}###{collection.Identity.Name}", ImGuiTreeNodeFlags.NoTreePushOnOpen);
|
||||
color.Pop();
|
||||
DrawInheritanceTreeClicks(collection, true);
|
||||
DrawInheritanceDropSource(collection);
|
||||
|
|
@ -252,7 +252,7 @@ public class InheritanceUi(CollectionManager collectionManager, IncognitoService
|
|||
|
||||
foreach (var collection in _collections
|
||||
.Where(c => InheritanceManager.CheckValidInheritance(_active.Current, c) == InheritanceManager.ValidInheritance.Valid)
|
||||
.OrderBy(c => c.Name))
|
||||
.OrderBy(c => c.Identity.Name))
|
||||
{
|
||||
if (ImGui.Selectable(Name(collection), _newInheritance == collection))
|
||||
_newInheritance = collection;
|
||||
|
|
@ -312,5 +312,5 @@ public class InheritanceUi(CollectionManager collectionManager, IncognitoService
|
|||
}
|
||||
|
||||
private string Name(ModCollection collection)
|
||||
=> incognito.IncognitoMode ? collection.AnonymizedName : collection.Name;
|
||||
=> incognito.IncognitoMode ? collection.Identity.AnonymizedName : collection.Identity.Name;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public class ModPanelCollectionsTab(CollectionManager manager, ModFileSystemSele
|
|||
foreach (var ((collection, parent, color, state), idx) in _cache.WithIndex())
|
||||
{
|
||||
using var id = ImUtf8.PushId(idx);
|
||||
ImUtf8.DrawTableColumn(collection.Name);
|
||||
ImUtf8.DrawTableColumn(collection.Identity.Name);
|
||||
|
||||
ImGui.TableNextColumn();
|
||||
ImUtf8.Text(ToText(state), color);
|
||||
|
|
@ -65,7 +65,7 @@ public class ModPanelCollectionsTab(CollectionManager manager, ModFileSystemSele
|
|||
{
|
||||
if (context)
|
||||
{
|
||||
ImUtf8.Text(collection.Name);
|
||||
ImUtf8.Text(collection.Identity.Name);
|
||||
ImGui.Separator();
|
||||
using (ImRaii.Disabled(state is ModState.Enabled && parent == collection))
|
||||
{
|
||||
|
|
@ -95,7 +95,7 @@ public class ModPanelCollectionsTab(CollectionManager manager, ModFileSystemSele
|
|||
}
|
||||
}
|
||||
|
||||
ImUtf8.DrawTableColumn(parent == collection ? string.Empty : parent.Name);
|
||||
ImUtf8.DrawTableColumn(parent == collection ? string.Empty : parent.Identity.Name);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ public class ModPanelSettingsTab(
|
|||
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Button, Colors.PressEnterWarningBg);
|
||||
var width = new Vector2(ImGui.GetContentRegionAvail().X, 0);
|
||||
if (ImGui.Button($"These settings are inherited from {selection.Collection.Name}.", width))
|
||||
if (ImGui.Button($"These settings are inherited from {selection.Collection.Identity.Name}.", width))
|
||||
collectionManager.Editor.SetModInheritance(collectionManager.Active.Current, selection.Mod!, false);
|
||||
|
||||
ImGuiUtil.HoverTooltip("You can click this button to copy the current settings to the current selection.\n"
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@ public sealed class ResourceWatcher : IDisposable, ITab, IUiService
|
|||
{
|
||||
var pathString = manipulatedPath != null ? $"custom file {name2} instead of {name}" : name;
|
||||
Penumbra.Log.Information(
|
||||
$"[ResourceLoader] [LOAD] [{handle->FileType}] Loaded {pathString} to 0x{(ulong)handle:X} using collection {data.ModCollection.AnonymizedName} for {Name(data, "no associated object.")} (Refcount {handle->RefCount}) ");
|
||||
$"[ResourceLoader] [LOAD] [{handle->FileType}] Loaded {pathString} to 0x{(ulong)handle:X} using collection {data.ModCollection.Identity.AnonymizedName} for {Name(data, "no associated object.")} (Refcount {handle->RefCount}) ");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ internal sealed class ResourceWatcherTable : Table<Record>
|
|||
=> 80 * UiHelpers.Scale;
|
||||
|
||||
public override string ToName(Record item)
|
||||
=> item.Collection?.Name ?? string.Empty;
|
||||
=> (item.Collection != null ? item.Collection.Identity.Name : null) ?? string.Empty;
|
||||
}
|
||||
|
||||
private sealed class ObjectColumn : ColumnString<Record>
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
if (collection.HasCache)
|
||||
{
|
||||
using var color = PushColor(ImGuiCol.Text, ColorId.FolderExpanded.Value());
|
||||
using var node = TreeNode($"{collection.Name} (Change Counter {collection.Counters.Change})###{collection.Name}");
|
||||
using var node = TreeNode($"{collection.Identity.Name} (Change Counter {collection.Counters.Change})###{collection.Identity.Name}");
|
||||
if (!node)
|
||||
continue;
|
||||
|
||||
|
|
@ -239,7 +239,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
else
|
||||
{
|
||||
using var color = PushColor(ImGuiCol.Text, ColorId.UndefinedMod.Value());
|
||||
TreeNode($"{collection.AnonymizedName} (Change Counter {collection.Counters.Change})",
|
||||
TreeNode($"{collection.Identity.AnonymizedName} (Change Counter {collection.Counters.Change})",
|
||||
ImGuiTreeNodeFlags.Bullet | ImGuiTreeNodeFlags.Leaf).Dispose();
|
||||
}
|
||||
}
|
||||
|
|
@ -265,9 +265,9 @@ public class DebugTab : Window, ITab, IUiService
|
|||
{
|
||||
PrintValue("Penumbra Version", $"{_validityChecker.Version} {DebugVersionString}");
|
||||
PrintValue("Git Commit Hash", _validityChecker.CommitHash);
|
||||
PrintValue(TutorialService.SelectedCollection, _collectionManager.Active.Current.Name);
|
||||
PrintValue(TutorialService.SelectedCollection, _collectionManager.Active.Current.Identity.Name);
|
||||
PrintValue(" has Cache", _collectionManager.Active.Current.HasCache.ToString());
|
||||
PrintValue(TutorialService.DefaultCollection, _collectionManager.Active.Default.Name);
|
||||
PrintValue(TutorialService.DefaultCollection, _collectionManager.Active.Default.Identity.Name);
|
||||
PrintValue(" has Cache", _collectionManager.Active.Default.HasCache.ToString());
|
||||
PrintValue("Mod Manager BasePath", _modManager.BasePath.Name);
|
||||
PrintValue("Mod Manager BasePath-Full", _modManager.BasePath.FullName);
|
||||
|
|
@ -518,7 +518,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
return;
|
||||
|
||||
ImGui.TextUnformatted(
|
||||
$"Last Game Object: 0x{_collectionResolver.IdentifyLastGameObjectCollection(true).AssociatedGameObject:X} ({_collectionResolver.IdentifyLastGameObjectCollection(true).ModCollection.Name})");
|
||||
$"Last Game Object: 0x{_collectionResolver.IdentifyLastGameObjectCollection(true).AssociatedGameObject:X} ({_collectionResolver.IdentifyLastGameObjectCollection(true).ModCollection.Identity.Name})");
|
||||
using (var drawTree = TreeNode("Draw Object to Object"))
|
||||
{
|
||||
if (drawTree)
|
||||
|
|
@ -545,7 +545,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
ImGui.TextUnformatted(name);
|
||||
ImGui.TableNextColumn();
|
||||
var collection = _collectionResolver.IdentifyCollection(gameObject, true);
|
||||
ImGui.TextUnformatted(collection.ModCollection.Name);
|
||||
ImGui.TextUnformatted(collection.ModCollection.Identity.Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -561,7 +561,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
ImGui.TableNextColumn();
|
||||
ImGui.TextUnformatted($"{data.AssociatedGameObject:X}");
|
||||
ImGui.TableNextColumn();
|
||||
ImGui.TextUnformatted(data.ModCollection.Name);
|
||||
ImGui.TextUnformatted(data.ModCollection.Identity.Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -574,12 +574,12 @@ public class DebugTab : Window, ITab, IUiService
|
|||
if (table)
|
||||
{
|
||||
ImGuiUtil.DrawTableColumn("Current Mtrl Data");
|
||||
ImGuiUtil.DrawTableColumn(_subfileHelper.MtrlData.ModCollection.Name);
|
||||
ImGuiUtil.DrawTableColumn(_subfileHelper.MtrlData.ModCollection.Identity.Name);
|
||||
ImGuiUtil.DrawTableColumn($"0x{_subfileHelper.MtrlData.AssociatedGameObject:X}");
|
||||
ImGui.TableNextColumn();
|
||||
|
||||
ImGuiUtil.DrawTableColumn("Current Avfx Data");
|
||||
ImGuiUtil.DrawTableColumn(_subfileHelper.AvfxData.ModCollection.Name);
|
||||
ImGuiUtil.DrawTableColumn(_subfileHelper.AvfxData.ModCollection.Identity.Name);
|
||||
ImGuiUtil.DrawTableColumn($"0x{_subfileHelper.AvfxData.AssociatedGameObject:X}");
|
||||
ImGui.TableNextColumn();
|
||||
|
||||
|
|
@ -591,7 +591,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
foreach (var (resource, resolve) in _subfileHelper)
|
||||
{
|
||||
ImGuiUtil.DrawTableColumn($"0x{resource:X}");
|
||||
ImGuiUtil.DrawTableColumn(resolve.ModCollection.Name);
|
||||
ImGuiUtil.DrawTableColumn(resolve.ModCollection.Identity.Name);
|
||||
ImGuiUtil.DrawTableColumn($"0x{resolve.AssociatedGameObject:X}");
|
||||
ImGuiUtil.DrawTableColumn($"{((ResourceHandle*)resource)->FileName()}");
|
||||
}
|
||||
|
|
@ -611,7 +611,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
ImGuiUtil.DrawTableColumn($"{((GameObject*)address)->ObjectIndex}");
|
||||
ImGuiUtil.DrawTableColumn($"0x{address:X}");
|
||||
ImGuiUtil.DrawTableColumn(identifier.ToString());
|
||||
ImGuiUtil.DrawTableColumn(collection.Name);
|
||||
ImGuiUtil.DrawTableColumn(collection.Identity.Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,12 +77,12 @@ public class ModsTab(
|
|||
{
|
||||
Penumbra.Log.Error($"Exception thrown during ModPanel Render:\n{e}");
|
||||
Penumbra.Log.Error($"{modManager.Count} Mods\n"
|
||||
+ $"{_activeCollections.Current.AnonymizedName} Current Collection\n"
|
||||
+ $"{_activeCollections.Current.Identity.AnonymizedName} Current Collection\n"
|
||||
+ $"{_activeCollections.Current.Settings.Count} Settings\n"
|
||||
+ $"{selector.SortMode.Name} Sort Mode\n"
|
||||
+ $"{selector.SelectedLeaf?.Name ?? "NULL"} Selected Leaf\n"
|
||||
+ $"{selector.Selected?.Name ?? "NULL"} Selected Mod\n"
|
||||
+ $"{string.Join(", ", _activeCollections.Current.DirectlyInheritsFrom.Select(c => c.AnonymizedName))} Inheritances\n");
|
||||
+ $"{string.Join(", ", _activeCollections.Current.DirectlyInheritsFrom.Select(c => c.Identity.AnonymizedName))} Inheritances\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -83,14 +83,14 @@ public class TutorialService : IUiService
|
|||
+ "Go here after setting up your root folder to continue the tutorial!")
|
||||
.Register("Initial Setup, Step 4: Managing Collections",
|
||||
"On the left, we have the collection selector. Here, we can create new collections - either empty ones or by duplicating existing ones - and delete any collections not needed anymore.\n"
|
||||
+ $"There will always be one collection called {ModCollection.DefaultCollectionName} that can not be deleted.")
|
||||
+ $"There will always be one collection called {ModCollectionIdentity.DefaultCollectionName} that can not be deleted.")
|
||||
.Register($"Initial Setup, Step 5: {SelectedCollection}",
|
||||
$"The {SelectedCollection} is the one we highlighted in the selector. It is the collection we are currently looking at and editing.\nAny changes we make in our mod settings later in the next tab will edit this collection.\n"
|
||||
+ $"We should already have the collection named {ModCollection.DefaultCollectionName} selected, and for our simple setup, we do not need to do anything here.\n\n")
|
||||
+ $"We should already have the collection named {ModCollectionIdentity.DefaultCollectionName} selected, and for our simple setup, we do not need to do anything here.\n\n")
|
||||
.Register("Initial Setup, Step 6: Simple Assignments",
|
||||
"Aside from being a collection of settings, we can also assign collections to different functions. This is used to make different mods apply to different characters.\n"
|
||||
+ "The Simple Assignments panel shows you the possible assignments that are enough for most people along with descriptions.\n"
|
||||
+ $"If you are just starting, you can see that the {ModCollection.DefaultCollectionName} is currently assigned to {CollectionType.Default.ToName()} and {CollectionType.Interface.ToName()}.\n"
|
||||
+ $"If you are just starting, you can see that the {ModCollectionIdentity.DefaultCollectionName} is currently assigned to {CollectionType.Default.ToName()} and {CollectionType.Interface.ToName()}.\n"
|
||||
+ "You can also assign 'Use No Mods' instead of a collection by clicking on the function buttons.")
|
||||
.Register("Individual Assignments",
|
||||
"In the Individual Assignments panel, you can manually create assignments for very specific characters or monsters, not just yourself or ones you can currently target.")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue