using Robust.Shared.GameStates;
namespace Content.Shared.Silicons.Borgs.Components;
///
/// This is used for modules that can be inserted into borgs
/// to give them unique abilities and attributes.
///
[RegisterComponent, NetworkedComponent, Access(typeof(SharedBorgSystem))]
[AutoGenerateComponentState]
public sealed partial class BorgModuleComponent : Component
{
///
/// The entity this module is installed into
///
[DataField("installedEntity")]
public EntityUid? InstalledEntity;
public bool Installed => InstalledEntity != null;
///
/// If true, this is a "default" module that cannot be removed from a borg.
///
[DataField]
[AutoNetworkedField]
public bool DefaultModule;
}
///
/// Raised on a module when it is installed in order to add specific behavior to an entity.
///
///
[ByRefEvent]
public readonly record struct BorgModuleInstalledEvent(EntityUid ChassisEnt);
///
/// Raised on a module when it's uninstalled in order to
///
///
[ByRefEvent]
public readonly record struct BorgModuleUninstalledEvent(EntityUid ChassisEnt);