using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using uREPL; using RobocraftX.CommandLine.Custom; namespace GamecraftModdingAPI.Commands { /// <summary> /// Convenient methods for registering commands to Gamecraft. /// All methods register to the command line and console block by default. /// </summary> public static class CommandRegistrationHelper { public static void Register(string name, Action action, string desc, bool noConsole = false) { RuntimeCommands.Register(name, action, desc); if (noConsole) { return; } ConsoleCommands.Register(name, action, desc); } public static void Register(string name, Action<object> action, string desc, bool noConsole = false) { Register<object>(name, action, desc, noConsole); } public static void Register(string name, Action<object, object> action, string desc, bool noConsole = false) { Register<object, object>(name, action, desc, noConsole); } public static void Register(string name, Action<object, object, object> action, string desc, bool noConsole = false) { Register<object, object, object>(name, action, desc, noConsole); } public static void Register<Param0>(string name, Action<Param0> action, string desc, bool noConsole = false) { RuntimeCommands.Register<Param0>(name, action, desc); if (noConsole) { return; } ConsoleCommands.Register<Param0>(name, action, desc); } public static void Register<Param0, Param1>(string name, Action<Param0, Param1> action, string desc, bool noConsole = false) { RuntimeCommands.Register<Param0, Param1>(name, action, desc); if (noConsole) { return; } ConsoleCommands.Register<Param0, Param1>(name, action, desc); } public static void Register<Param0, Param1, Param2>(string name, Action<Param0, Param1, Param2> action, string desc, bool noConsole = false) { RuntimeCommands.Register<Param0, Param1, Param2>(name, action, desc); if (noConsole) { return; } ConsoleCommands.Register<Param0, Param1, Param2>(name, action, desc); } public static void Unregister(string name, bool noConsole = false) { RuntimeCommands.Unregister(name); if (noConsole) { return; } ConsoleCommands.Unregister(name); } public static void Call(string name) { RuntimeCommands.Call(name); } public static void Call<Param0>(string name, Param0 param0) { RuntimeCommands.Call<Param0>(name, param0); } public static void Call<Param0, Param1>(string name, Param0 param0, Param1 param1) { RuntimeCommands.Call<Param0, Param1>(name, param0, param1); } public static void Call<Param0, Param1, Param2>(string name, Param0 param0, Param1 param1, Param2 param2) { RuntimeCommands.Call<Param0, Param1, Param2>(name, param0, param1, param2); } } }