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);
}
}