public static void PrintHelp(DMEnv env, string head) { CommandNode <DMEnv> node = null; if ((node = Global.Dispatcher[head]) != null) { env.Next = string.Join("\n", node.GetHelp()); } env.Next = $"未找到指令:{head}"; }
public void OnRegister(CmdDispatcher <TestEnv> dispatcher) { CommandNode <TestEnv> root = PresetNodes.Literal <TestEnv>("物品"); DictMapper mapper = new DictMapper() .Then("前缀", new StringParser()) .Then("后缀", new StringParser()) ; Console.WriteLine(string.Join("\n", root.GetHelp())); dispatcher.Register("物品", PresetNodes.Literal <TestEnv>("创造") .Then(PresetNodes.String <TestEnv>("物品名") .MapDict(mapper) .Executes((env, args, dict) => CreateItem( env.Items, args.Get <string>("物品名"), dict.Get <string>("前缀"), dict.Get <string>("后缀") ))), PresetNodes.Literal <TestEnv>("销毁") .Then(PresetNodes.String <TestEnv>("物品名") .Executes((env, args, dict) => DestoryItem( env.Items, args.Get <string>("物品名") ))), PresetNodes.Literal <TestEnv>("编辑") .Then(PresetNodes.String <TestEnv>("物品名") .Then(PresetNodes.String <TestEnv>("新名字") .MapDict(mapper) .Executes((env, args, dict) => EditItem( env.Items, args.Get <string>("物品名"), args.Get <string>("新名字"), dict.Get <string>("前缀"), dict.Get <string>("后缀") )))), PresetNodes.Literal <TestEnv>("显示") .Executes((env, args, dict) => ListItems(env.Items)) ); dispatcher.SetAlias("创造", "物品 创造"); dispatcher.SetAlias("销毁", "物品 销毁"); }