IW4M-Admin/SharedLibraryCore/Interfaces/IManagerCommand.cs
2022-01-26 15:26:25 -06:00

64 lines
1.7 KiB
C#

using System.Threading.Tasks;
using static Data.Models.Client.EFClient;
using static SharedLibraryCore.Server;
namespace SharedLibraryCore.Interfaces
{
/// <summary>
/// Defines the basic properties of a command
/// </summary>
public interface IManagerCommand
{
/// <summary>
/// Name of the command
/// </summary>
string Name { get; }
/// <summary>
/// Description of the command
/// </summary>
string Description { get; }
/// <summary>
/// Alternative name of the command
/// </summary>
string Alias { get; }
/// <summary>
/// Minimum permission required to execute the command
/// </summary>
Permission Permission { get; }
/// <summary>
/// Games the command is supported on
/// </summary>
Game[] SupportedGames { get; }
/// <summary>
/// Syntax for using the command
/// </summary>
string Syntax { get; }
/// <summary>
/// Indicates if target is required
/// </summary>
bool RequiresTarget { get; }
/// <summary>
/// Indicates if the commands can be run as another client
/// </summary>
bool AllowImpersonation { get; }
/// <summary>
/// Indicates if the command result should be broadcasted to all clients
/// </summary>
bool IsBroadcast { get; set; }
/// <summary>
/// Executes the command
/// </summary>
/// <param name="gameEvent">event corresponding to the command</param>
/// <returns></returns>
Task ExecuteAsync(GameEvent gameEvent);
}
}