recrownedgtk/RecrownedGTK.Tools/CommandProcessor/Commands/HelpCommand.cs

55 lines
2.0 KiB
C#
Raw Normal View History

2020-02-17 02:44:21 +00:00
using System;
namespace RecrownedGTK.Tools.CommandProcessor.Commands
{
public class HelpCommand : EngineCommand
2020-02-17 02:44:21 +00:00
{
CommandEngine commandEngine;
public HelpCommand(CommandEngine commandEngine) : base("help")
{
this.commandEngine = commandEngine;
help = "help [command] [arg]";
}
public override void Run(IUserInput userInput, IUserOutput userOutput, string[] arguments)
2020-02-17 02:44:21 +00:00
{
if (arguments != null)
{
if (commandEngine.ContainsCommand(arguments[0]))
{
if (arguments.Length < 2) userOutput.WrappedOutput(commandEngine.GetCommand(arguments[0]).Help(null));
2020-02-17 02:44:21 +00:00
for (int i = 1; i < arguments.Length; i++)
{
userOutput.WrappedOutput(commandEngine.GetCommand(arguments[0]).Help(arguments[i]));
2020-02-17 02:44:21 +00:00
}
}
else
{
throw new ArgumentException(arguments[0] + " not a command. Type \"help\" for a list of commands.");
}
}
else
{
userOutput.WrappedOutput("Tools for RecrownedGTK library. Possible commands are as follows:\n");
2020-02-17 02:44:21 +00:00
foreach (EngineCommand engineCommand in commandEngine.commands)
{
for (int i = 0; i < engineCommand.InvokeStrings.Length; i++)
{
userOutput.WrappedOutput(engineCommand.InvokeStrings[i]);
2020-02-17 02:44:21 +00:00
if (i + 1 < engineCommand.InvokeStrings.Length)
{
userOutput.WrappedOutput(", ");
2020-02-17 02:44:21 +00:00
}
}
userOutput.WrappedOutput(" : ");
userOutput.WrappedOutput(engineCommand.Help().Replace("\n", "\n\t"));
userOutput.WrappedOutput("\n");
userOutput.Output("--------");
2020-02-17 02:44:21 +00:00
}
}
}
}
}