using Content.Shared.Actions; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.Silicons.Borgs.Components; /// /// This is used for s that can be "swapped" to, as opposed to having passive effects. /// [RegisterComponent, NetworkedComponent, Access(typeof(SharedBorgSystem))] public sealed partial class SelectableBorgModuleComponent : Component { [DataField("moduleSwapAction", customTypeSerializer: typeof(PrototypeIdSerializer))] public string? ModuleSwapActionId = "ActionBorgSwapModule"; /// /// The sidebar action for swapping to this module. /// [DataField("moduleSwapActionEntity")] public EntityUid? ModuleSwapActionEntity; } public sealed partial class BorgModuleActionSelectedEvent : InstantActionEvent { } /// /// Event raised by-ref on a module when it is selected /// [ByRefEvent] public readonly record struct BorgModuleSelectedEvent(EntityUid Chassis); /// /// Event raised by-ref on a module when it is deselected. /// [ByRefEvent] public readonly record struct BorgModuleUnselectedEvent(EntityUid Chassis);