public static void StartCommandHandler()
{
while (true)
{
Thread.Sleep(1);
var line = System.Console.ReadLine()?.Split(new[] { " " }, StringSplitOptions.None);
if (line?.Length > 0)
{
var cmd = line[0].ToLower();
var args = line.Skip(1).ToArray();
HandleCommand command;
if (commands.TryGetValue(cmd, out command))
{
var argCount = command.GetMethodInfo().GetCustomAttribute<ConsoleCommandAttribute>().Arguments;
if (args.Length == argCount)
command.Invoke(new CommandArgs(args));
else
Log.Message(LogTypes.Error, $"Wrong argument count for '{cmd}' command.");
}
}
}
}
}