using System;
using JetBrains.Annotations;
using Robust.Shared.GameObjects;
namespace Robust.Shared.Analyzers;
// These annotations direct the operation of `Robust.Shared.EntitySystemSubscriptionsGenerator`'s
// `EntitySystemSubscriptionGenerator` and `EntitySystemSubscriptionGeneratorErrorAnalyser`.
/// This attribute indicates that the annotated method is a handler for an event subscription. Methods annotated with
/// this attribute will have a EntitySystem.SubscribeLocalEvent call generated, using the method as the handler,
/// with the event type (and component, as relevant) inferred from the method signature.
///
/// For this to work, the annotated method must be compatible with one of the following delegate types:
///
///
/// Note that this is not any different from the normal requirements to use EntitySystem.SubscribeLocalEvent.
[AttributeUsage(AttributeTargets.Method)]
[MeansImplicitUse]
public sealed class SubscribeLocalEventAttribute : Attribute;
/// This attribute indicates that the annotated method is a handler for an event subscription. Methods annotated with
/// this attribute will have a EntitySystem.SubscribeNetworkEvent call generated, using the method as the handler,
/// with the event type inferred from the method signature.
///
/// For this to work, the annotated method must be compatible with one of the following delegate types:
///
///
/// Note that this is not any different from the normal requirements to use EntitySystem.SubscribeNetworkEvent.
[AttributeUsage(AttributeTargets.Method)]
[MeansImplicitUse]
public sealed class SubscribeNetworkEventAttribute : Attribute;
/// This attribute indicates that the annotated method is a handler for an event subscription. Methods annotated with
/// this attribute will have a EntitySystem.SubscribeAllEvent call generated, using the method as the handler,
/// with the event type inferred from the method signature.
///
/// For this to work, the annotated method must be compatible with one of the following delegate types:
///
///
/// Note that this is not any different from the normal requirements to use EntitySystem.SubscribeAllEvent.
[AttributeUsage(AttributeTargets.Method)]
[MeansImplicitUse]
public sealed class EventSubscriptionAttribute : Attribute;