using Content.Shared.Actions; using Content.Shared.Actions.ActionTypes; using Robust.Shared.GameStates; 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 class SelectableBorgModuleComponent : Component { /// /// The sidebar action for swapping to this module. /// [DataField("moduleSwapAction")] public InstantAction ModuleSwapAction = new() { DisplayName = "action-name-swap-module", Description = "action-desc-swap-module", ItemIconStyle = ItemActionIconStyle.BigItem, Event = new BorgModuleActionSelectedEvent(), UseDelay = TimeSpan.FromSeconds(0.5f) }; } public sealed 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);