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}";
        }
Example #2
0
        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("销毁", "物品 销毁");
        }