| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- using Content.Shared.Damage;
- using Content.Shared.Movement.Systems;
- using Content.Shared.Standing;
- using Robust.Shared.Containers;
- using Robust.Shared.Prototypes;
- using Robust.Shared.Timing;
- namespace Content.Shared.Body.Systems;
- public abstract partial class SharedBodySystem : EntitySystem
- {
- /*
- * See the body partial for how this works.
- */
- /// <summary>
- /// Container ID prefix for any body parts.
- /// </summary>
- public const string PartSlotContainerIdPrefix = "body_part_slot_";
- /// <summary>
- /// Container ID for the ContainerSlot on the body entity itself.
- /// </summary>
- public const string BodyRootContainerId = "body_root_part";
- /// <summary>
- /// Container ID prefix for any body organs.
- /// </summary>
- public const string OrganSlotContainerIdPrefix = "body_organ_slot_";
- [Dependency] private readonly IGameTiming _timing = default!;
- [Dependency] protected readonly IPrototypeManager Prototypes = default!;
- [Dependency] protected readonly DamageableSystem Damageable = default!;
- [Dependency] protected readonly MovementSpeedModifierSystem Movement = default!;
- [Dependency] protected readonly SharedContainerSystem Containers = default!;
- [Dependency] protected readonly SharedTransformSystem SharedTransform = default!;
- [Dependency] protected readonly StandingStateSystem Standing = default!;
- public override void Initialize()
- {
- base.Initialize();
- InitializeBody();
- InitializeParts();
- }
- /// <summary>
- /// Inverse of <see cref="GetPartSlotContainerId"/>
- /// </summary>
- protected static string? GetPartSlotContainerIdFromContainer(string containerSlotId)
- {
- // This is blursed
- var slotIndex = containerSlotId.IndexOf(PartSlotContainerIdPrefix, StringComparison.Ordinal);
- if (slotIndex < 0)
- return null;
- var slotId = containerSlotId.Remove(slotIndex, PartSlotContainerIdPrefix.Length);
- return slotId;
- }
- /// <summary>
- /// Gets the container Id for the specified slotId.
- /// </summary>
- public static string GetPartSlotContainerId(string slotId)
- {
- return PartSlotContainerIdPrefix + slotId;
- }
- /// <summary>
- /// Gets the container Id for the specified slotId.
- /// </summary>
- public static string GetOrganContainerId(string slotId)
- {
- return OrganSlotContainerIdPrefix + slotId;
- }
- }
|