public void Execute(string command)
        {
            ui.Echo(command);

            var separators = new char[] { ' ' };

            command = command.TrimStart(separators);
            var cmdArray = command.Split(separators);

            DiagnosticCommand cmd;

            if (commands.TryGetValue(cmdArray[0], out cmd))
            {
                try
                {
                    cmd.Action(this, cmdArray.Skip(1));
                }
                catch (Exception ex)
                {
                    ui.Echo("Unhandled exception occured!");

                    foreach (var line in ex.Message.Split('\n'))
                    {
                        ui.Echo(line);
                    }
                }
            }
            else
            {
                ui.Echo("Unknown command!");
            }
        }
        private void InitBasicCommands()
        {
            host.RegisterCommand("clist", "Show commands list", (chost, args) =>
            {
                var maxLen = host.Commands.Max(m => m.Name.Length);
                var fmt    = string.Format("{{0,-{0}}}     {{1}}", maxLen);

                foreach (var cmd in host.Commands)
                {
                    ui.Echo(string.Format(fmt, cmd.Name, cmd.Description));
                }

                return(0);
            });

            host.RegisterCommand("cls", "Clear screen", (chost, args) =>
            {
                ui.Clear();

                return(0);
            });

            host.RegisterCommand("echo", "Display messages", (chost, args) =>
            {
                ui.Echo(args.Aggregate((acc, next) => acc + " " + next));

                return(0);
            });

            host.RegisterCommand("efail", "Environmental hard failing", (chost, args) =>
            {
                Environment.FailFast("Test fail from in-game command line!");

                return(0);
            });
        }