using SlatedGameToolkit.Tools.System.Interaction;
namespace SlatedGameToolkit.Tools.System
{
public interface IInvocable
{
///
/// Invokers are the strings that should invoke this command.
/// This should not conflict with any other commands invokers.
///
/// A list of the strings that will invoke this invokable.
string[] GetInvokers();
///
/// The help should be a description of how to properly use this invokable.
/// If an argument is specified, the help should cater to that specific argument.
/// Information in the description does not need to be repeated.
///
/// An argument this invokable should describe. May be null, to which should return a string that describes this invokable in general.
///
string getUsage(string arg);
///
/// Executes this invokable.
///
/// The interactable object.
/// The arguments that followed the invokable.
/// True if the invokable was successful, false otherwise to display a generic help message.
bool Execute(IInteractable interactable, string[] args);
///
/// Gets a simple description of the command.
///
/// Return a string with a short description of the command.
string getDescription();
}
}