using System.Collections.Generic;
using Content.Shared.GameObjects.Components.Body.Mechanism;
using Content.Shared.GameObjects.Components.Body.Part;
using Robust.Shared.Interfaces.GameObjects;
namespace Content.Shared.GameObjects.Components.Body.Surgery
{
///
/// Interface representing an entity capable of performing surgery (performing operations on an
/// class).
/// For an example see , which inherits from this class.
///
public interface ISurgeon
{
public delegate void MechanismRequestCallback(
IMechanism target,
IBodyPartContainer container,
ISurgeon surgeon,
IEntity performer);
///
/// How long it takes to perform a single surgery step (in seconds).
///
public float BaseOperationTime { get; set; }
///
/// When performing a surgery, the may sometimes require selecting from a set of Mechanisms
/// to operate on.
/// This function is called in that scenario, and it is expected that you call the callback with one mechanism from the
/// provided list.
///
public void RequestMechanism(IEnumerable options, MechanismRequestCallback callback);
}
}