using BetterAmongUs.Helpers; using BetterAmongUs.Items.Attributes; namespace BetterAmongUs.Commands; internal enum CommandType { Normal, Sponsor, Debug, } internal abstract class BaseCommand { internal static readonly BaseCommand?[] allCommands = [.. RegisterCommandAttribute.Instances]; internal virtual CommandType Type => CommandType.Normal; internal string[] Names => ShortNames.Concat(new[] { Name }).ToArray(); internal abstract string Name { get; } internal virtual string[] ShortNames => []; internal abstract string Description { get; } internal BaseArgument[] Arguments { get; set; } = []; internal virtual bool SetChatTimer { get; set; } = false; internal virtual bool ShowCommand() => true; internal virtual bool ShowSuggestion() => ShowCommand(); internal abstract void Run(); internal static string CommandResultText(string text, bool onlyGetStr = false) { if (!onlyGetStr) Utils.AddChatPrivate(text); return text; } internal static string CommandErrorText(string error, bool onlyGetStr = false) { string er = "Error:"; if (!onlyGetStr) Utils.AddChatPrivate($"{er}\n{error}"); return $"{er}\n{error}"; } }