/// <summary> /// Used internally by the alias command to execute aliases. /// </summary> /// <param name="console">The console.</param> /// <param name="cmd">The command.</param> private static void AliasExecution(ConsoleManager console, ExecutableCommand cmd) { CommandList commands = ScriptUtilities.ParseString(console.GetCommand(cmd.Name).Help); console.Execute(commands); }
public static void Repeat(ConsoleManager console, ExecutableCommand cmd) { if (cmd.Arguments.Count != 2) { throw new ArgumentException(string.Format("Wrong number of arguments for repeat (expected 2, got {0})", cmd.Arguments.Count)); } int n = int.Parse(cmd.Arguments[0].Value); string cmds = cmd.Arguments[1].Value; CommandList commands = ScriptUtilities.ParseString(cmds); for (int i = 0; i < n; i++) { console.Execute(commands); } }
public static void Timer(ConsoleManager console, ExecutableCommand cmd) { if (cmd.Arguments.Count != 2) { throw new ArgumentException(string.Format("Wrong number of arguments for timer (expected 2, got {0})", cmd.Arguments.Count)); } string secondsString = cmd.Arguments[0].Value; float seconds = 0; if (!float.TryParse(secondsString, out seconds)) { throw new ArgumentException(string.Format("Unable to parse \"{0}\" to a float", secondsString)); } string command = cmd.Arguments[1].Value; TaskInfo task = new TaskInfo() { ExecuteAfter = seconds, Task = () => { try { console.Execute(ScriptUtilities.ParseString(command)); } catch (Exception e) { ConsoleManager.ConsoleLog.Warn("Unable to execute delayed commands", e); } } }; GameEngine.Instance.Scheduler.ScheduleTask(task); }
public static void IfLess(ConsoleManager console, ExecutableCommand cmd) { if (cmd.Arguments.Count != 3 && cmd.Arguments.Count != 4) { throw new ArgumentException(string.Format("Wrong number of arguments for if_less (expected 3 or 4, got {0})", cmd.Arguments.Count)); } double a = double.Parse(cmd.Arguments[0].Value); double b = double.Parse(cmd.Arguments[1].Value); string ifTrue = cmd.Arguments[2].Value; string ifFalse = cmd.Arguments.Count == 4 ? cmd.Arguments[3].Value : null; if (ifTrue != null && !string.Empty.Equals(ifTrue) && a < b) { CommandList commands = ScriptUtilities.ParseString(ifTrue); console.Execute(commands); } else if (ifFalse != null && !string.Empty.Equals(ifFalse)) { CommandList commands = ScriptUtilities.ParseString(ifFalse); console.Execute(commands); } }
public static void Include(ConsoleManager console, ExecutableCommand cmd) { if (cmd.Arguments.Count != 1) { throw new ArgumentException(string.Format("Wrong number of arguments for include (expected 1, got {0})", cmd.Arguments.Count)); } string filename = cmd.Arguments[0].Value; CommandList commands = GameEngine.Instance.AssetManager.Load<CommandList>(filename); console.Execute(commands); }