Cleans up tag system (#28272)

* Updated tag system

* Added params methods

* Fixed tag integration tests

* Fixed params methods recursion

* Revert has All/Any tag one argument realisation

* Updated tag integration tests

* Shit happens

* Added individual List/HashSet methods, docs, tests
This commit is contained in:
Tornado Tech
2024-06-02 11:11:19 +10:00
committed by GitHub
parent da6a1bbdd4
commit 21bc3bfa22
18 changed files with 834 additions and 780 deletions

View File

@@ -1,13 +1,11 @@
using Robust.Shared.GameStates;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Set;
using Robust.Shared.Prototypes;
namespace Content.Shared.Tag
namespace Content.Shared.Tag;
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(TagSystem))]
public sealed partial class TagComponent : Component
{
[RegisterComponent, NetworkedComponent, Access(typeof(TagSystem))]
public sealed partial class TagComponent : Component
{
[DataField("tags", customTypeSerializer: typeof(PrototypeIdHashSetSerializer<TagPrototype>))]
[Access(typeof(TagSystem), Other = AccessPermissions.ReadExecute)] // FIXME Friends
public HashSet<string> Tags = new();
}
[DataField, ViewVariables, AutoNetworkedField]
public HashSet<ProtoId<TagPrototype>> Tags = new();
}

View File

@@ -1,15 +0,0 @@
using Robust.Shared.Serialization;
namespace Content.Shared.Tag
{
[Serializable, NetSerializable]
public sealed class TagComponentState : ComponentState
{
public TagComponentState(string[] tags)
{
Tags = tags;
}
public string[] Tags { get; }
}
}

View File

@@ -1,17 +1,15 @@
using Robust.Shared.Prototypes;
namespace Content.Shared.Tag
namespace Content.Shared.Tag;
/// <summary>
/// Prototype representing a tag in YAML.
/// Meant to only have an ID property, as that is the only thing that
/// gets saved in TagComponent.
/// </summary>
[Prototype("Tag")]
public sealed partial class TagPrototype : IPrototype
{
/// <summary>
/// Prototype representing a tag in YAML.
/// Meant to only have an ID property, as that is the only thing that
/// gets saved in TagComponent.
/// </summary>
[Prototype("Tag")]
public sealed partial class TagPrototype : IPrototype
{
[ViewVariables]
[IdDataField]
public string ID { get; private set; } = default!;
}
[IdDataField, ViewVariables]
public string ID { get; } = string.Empty;
}

File diff suppressed because it is too large Load Diff