Пример #1
0
        public override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
        {
            DictMapper <DMEnv> mapper = new DictMapper <DMEnv>();

            mapper.Rest(new DiceParser());

            dispatcher.Register("法术")
            .Then(
                Literal <DMEnv>("创造").Then(
                    String <DMEnv>("法术名")
                    .MapDict(mapper)
                    .Executes((env, args, dict) => CreateSpell(env, args.GetStr("法术名"), dict))
                    )
                ).Then(
                Literal <DMEnv>("销毁").Then(
                    String <DMEnv>("法术名")
                    .Executes((env, args, dict) => DestorySpell(env, args.GetStr("法术名")))
                    )
                ).Then(
                Literal <DMEnv>("学习")
                .Then(
                    String <DMEnv>("法术名")
                    .Executes((env, args, dict) => LearnSpell(env, env.Inv, args.GetStr("法术名")))
                    )
                ).Then(
                Literal <DMEnv>("忘记")
                .Then(
                    String <DMEnv>("法术名")
                    .Executes((env, args, dict) => ForgetSpell(env, env.Inv, args.GetStr("法术名")))
                    )
                ).Then(
                Literal <DMEnv>("使用")
                .Then(
                    String <DMEnv>("法术名")
                    .Executes((env, args, dict) => UseSpell(env, env.Inv, args.GetStr("法术名")))
                    )
                );

            dispatcher.SetAlias("学习", "法术 学习");
            dispatcher.SetAlias("忘记", "法术 忘记");
            dispatcher.SetAlias("施法", "法术 使用");
        }
Пример #2
0
        public override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
        {
            DictMapper <DMEnv> mapper = new DictMapper <DMEnv>();

            mapper.Rest(new ValueParser());

            dispatcher.Register("人物卡")
            .Then(
                PresetNodes.Literal <DMEnv>("新建").Then(
                    PresetNodes.String <DMEnv>("名称")
                    .MapDict(mapper)
                    .Executes((env, args, dict) => CreateInv(env, args.GetStr("名称"), "", dict))
                    .Then(
                        PresetNodes.String <DMEnv>("描述")
                        .MapDict(mapper)
                        .Executes((env, args, dict) => CreateInv(env, args.GetStr("名称"), args.GetStr("描述"), dict))
                        )
                    )
                ).Then(
                PresetNodes.Literal <DMEnv>("重命名").Then(
                    PresetNodes.String <DMEnv>("新名称")
                    .Executes((env, args, dict) => Rename(env, args.GetStr("新名称")))
                    )
                ).Then(
                PresetNodes.Literal <DMEnv>("销毁").Then(
                    PresetNodes.String <DMEnv>("名称")
                    .Executes((env, args, dict) => "销毁人物卡需要操作者是管理员,并且需要加上“强制”参数!")
                    .Then(
                        PresetNodes.Literal <DMEnv>("强制")
                        .Executes((env, args, dict) => DestoryInv(env, args.GetStr("名称")))
                        )
                    )
                ).Then(
                PresetNodes.Literal <DMEnv>("重算")
                .Executes((env, args, dict) => ReCalc(env, env.Inv))
                .Then(
                    PresetNodes.String <DMEnv>("名称")
                    .Handles(Extensions.ExistInv)
                    .Executes((env, args, dict) => ReCalc(env, args.GetInv("名称")))
                    )
                ).Then(
                PresetNodes.Literal <DMEnv>("检查")
                .Executes((env, args, dict) => Check(env, env.Inv))
                ).Then(
                PresetNodes.Literal <DMEnv>("伤害加值")
                .Then(
                    Extensions.Dice("数值")
                    .Executes((env, args, dict) => SetDB(env, args.GetDice("数值")))
                    )
                ).Then(
                PresetNodes.Literal <DMEnv>("标记")
                .Then(
                    PresetNodes.Literal <DMEnv>("添加")
                    .Rest(
                        PresetNodes.String <DMEnv>("标签")
                        .Handles(PreProcesses.ConvertObjectArrayToStringArray)
                        .Executes((env, args, dict) => AddTags(env, env.Inv, args.Get <string[]>("标签")))
                        )
                    ).Then(
                    PresetNodes.Literal <DMEnv>("移除")
                    .Rest(
                        PresetNodes.String <DMEnv>("标签")
                        .Handles(PreProcesses.ConvertObjectArrayToStringArray)
                        .Executes((env, args, dict) => RemoveTags(env, env.Inv, args.Get <string[]>("标签")))
                        )
                    )
                );

            dispatcher.SetAlias("车卡", "人物卡 新建");
            dispatcher.SetAlias("撕卡", "人物卡 销毁");
            dispatcher.SetAlias("重算", "人物卡 重算");
            dispatcher.SetAlias("标记", "人物卡 标记 添加");
            dispatcher.SetAlias("反标", "人物卡 标记 移除");
        }