using System; namespace Robust.Shared.Serialization { /// /// Attribute for marking an enum type as being the bitflag representation for a field. /// /// Some int values in the engine are bitflags, but the actual bitflag definitions /// are reserved for the content layer. This means that serialization/deserialization /// of those flags into readable YAML is impossible, unless the engine is notified /// that a certain representation should be used. That's the role of this attribute. /// /// NB: AllowMultiple is true - don't assume the same representation cannot /// be reused between multiple fields. /// [AttributeUsage(AttributeTargets.Enum, AllowMultiple = true, Inherited = false)] public sealed class FlagsForAttribute : Attribute { private readonly Type _tag; public Type Tag => _tag; // NB: This is not generic because C# does not allow generic attributes /// /// An attribute with tag type /// /// /// An arbitrary tag type used for coordinating between the data field and the /// representation. Not actually used for serialization/deserialization. /// public FlagsForAttribute(Type tag) { _tag = tag; } } }