Add shared tag system for tagging individual mods

Adds a new system of shared tags that are saved in the Penumbra config, and can
then be 1-click added or removed to/from mods via a popup menu. The use case for
this new system is to allow users to more easily re-use tags and to allow them
to quickly tag individual mods.

Shared tags can be added/removed/modified via a new Tags section of the main
Penumbra Settings tab. Once any shared tags have been saved, they can be added
via a new tags button that shows up in the Description and Edit Mod tabs, to the
right of the existing + button that already existed for typing in new tags.

Shared tags have the same restrictions as regular mod tags, and the application
of shared tags should respect the same limits as application of normal tags.

Signed-off-by: AeAstralis <causal_inverse@fastmail.com>
This commit is contained in:
AeAstralis 2024-03-01 17:10:33 -05:00
parent 0220257efa
commit 7128326ab9
No known key found for this signature in database
7 changed files with 248 additions and 6 deletions

View file

@ -28,6 +28,8 @@ public enum ColorId
ResTreePlayer,
ResTreeNetworked,
ResTreeNonNetworked,
SharedTagAdd,
SharedTagRemove
}
public static class Colors
@ -73,6 +75,8 @@ public static class Colors
ColorId.ResTreePlayer => ( 0xFFC0FFC0, "On-Screen: Other Players", "Other players and what they own, in the On-Screen tab." ),
ColorId.ResTreeNetworked => ( 0xFFFFFFFF, "On-Screen: Non-Players (Networked)", "Non-player entities handled by the game server, in the On-Screen tab." ),
ColorId.ResTreeNonNetworked => ( 0xFFC0C0FF, "On-Screen: Non-Players (Local)", "Non-player entities handled locally, in the On-Screen tab." ),
ColorId.SharedTagAdd => ( 0xFF44AA44, "Shared Tags: Add Tag", "A shared tag that is not present on the current mod and can be added." ),
ColorId.SharedTagRemove => ( 0xFF2222AA, "Shared Tags: Remove Tag", "A shared tag that is already present on the current mod and can be removed." ),
_ => throw new ArgumentOutOfRangeException( nameof( color ), color, null ),
// @formatter:on
};