using System; using Content.Server.Body; using Content.Server.Body.Network; using Content.Shared.GameObjects.Components.Body; namespace Content.Server.GameObjects.Components.Body { // TODO: Merge with ISharedBodyManagerComponent public interface IBodyManagerComponent : ISharedBodyManagerComponent, IBodyPartManager { /// /// The that this /// is adhering to. /// public BodyTemplate Template { get; } /// /// Installs the given into the given slot. /// /// True if successful, false otherwise. bool TryAddPart(string slot, IBodyPart part, bool force = false); bool HasPart(string slot); /// /// Ensures that this body has the specified network. /// /// The type of the network to ensure. /// /// True if the network already existed, false if it had to be created. /// bool EnsureNetwork() where T : BodyNetwork; /// /// Ensures that this body has the specified network. /// /// The type of the network to ensure. /// /// True if the network already existed, false if it had to be created. /// bool EnsureNetwork(Type networkType); /// /// Removes the of the given type in this body, /// if one exists. /// /// The type of the network to remove. void RemoveNetwork() where T : BodyNetwork; /// /// Removes the of the given type in this body, /// if there is one. /// /// The type of the network to remove. void RemoveNetwork(Type networkType); void PreMetabolism(float frameTime); void PostMetabolism(float frameTime); } }