Пример #1
0
        public override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
        {
            DictMapper <DMEnv> mapper = new DictMapper <DMEnv>()
                                        .Then("年龄", new IntParser <DMEnv>())
                                        .Then("含幸运", new BoolParser <DMEnv>("是", "否"));

            dispatcher.Register("coc7")
            .MapDict(mapper)
            .Executes((env, args, dict) => DrawProperties(env, 5, dict.Get("年龄", -1)))
            .Then(
                PresetNodes.Int <DMEnv>("数量")
                .MapDict(mapper)
                .Executes((env, args, dict) => DrawProperties(env, args.GetInt("数量"), dict.Get("年龄", -1)))
                ).Then(
                PresetNodes.Literal <DMEnv>("购点")
                .Then(
                    PresetNodes.Int <DMEnv>("总点数")
                    .MapDict(mapper)
                    .Executes((env, args, dict) => env.Append("该功能还未实行"))
                    )
                );

            dispatcher.SetAlias("COC7", "coc7");
            dispatcher.SetAlias("COC", "coc7");
            dispatcher.SetAlias("coc", "coc7");
        }
Пример #2
0
        public async Task <IActionResult> List([FromQuery] DictListSearchRequest request)
        {
            var result = await _dictService.GetPagedList(DictMapper.ToDictSearchDto(request));

            var viewModels = _mapper.Map <List <DictViewModel> >(result.Data);

            return(Ok(viewModels));
        }
Пример #3
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("销毁", "物品 销毁");
        }
Пример #4
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("施法", "法术 使用");
        }
Пример #5
0
        public async Task <PagedModel <DictDto> > GetPagedList(DictSearchDto criteria)
        {
            // 列表只显示id为0的dict,其他的是以"子节点"来显示的
            Expression <Func <SysDict, bool> > condition = it => it.Pid == 0;

            if (!string.IsNullOrWhiteSpace(criteria.Name))
            {
                condition = condition.And(it => it.Name.Contains(criteria.Name));
            }

            var all = await GetAll();

            var topDict = all
                          .Where(condition.Compile())
                          .Skip((criteria.Page - 1) * criteria.Limit)
                          .Take(criteria.Limit)
                          .ToList();

            var dto = DictMapper.ToDictProfileDto(all, topDict, criteria);

            if (dto.Count <= 0)
            {
                return(dto);
            }

            foreach (var item in dto.Data)
            {
                var sub = all.Where(it => it.Pid == item.Id).OrderBy(it => it.Num).ToList();

                if (sub.Count <= 0)
                {
                    continue;
                }

                item.Detail = string.Join(',', sub.Select(it => string.Join(':', it.Num, it.Name)).ToList());
            }

            return(dto);
        }
Пример #6
0
        public override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
        {
            DictMapper <DMEnv> mapper = new DictMapper <DMEnv>()
                                        .Then("技能名", new StringParser <DMEnv>())
                                        .Then("类型", new OrParser <DMEnv>(new string[] { "肉搏", "投掷", "射击" }))
                                        .Then("伤害", new DiceParser())
                                        .Then("贯穿", new BoolParser <DMEnv>("是", "否"))
                                        .Then("连发数", new IntParser <DMEnv>())
                                        .Then("弹匣", new IntParser <DMEnv>())
                                        .Then("故障值", new IntParser <DMEnv>())
                                        .Then("弹药", new IntParser <DMEnv>())
                                        .Then("消耗", new IntParser <DMEnv>());

            dispatcher.Register("物品").Then(
                Literal <DMEnv>("创造")
                .Then(
                    String <DMEnv>("物品名")
                    .MapDict(mapper)
                    .Executes((env, args, dict) => CreateItem(env, args.GetStr("物品名"), dict))
                    )
                ).Then(
                Literal <DMEnv>("销毁")
                .Then(
                    String <DMEnv>("物品名")
                    .MapDict(mapper)
                    .Executes((env, args, dict) => DestoryItem(env, args.GetStr("物品名")))
                    )
                ).Then(
                Literal <DMEnv>("丢弃")
                .Then(
                    String <DMEnv>("物品名")
                    .MapDict(mapper)
                    .Executes((env, args, dict) => ThrowItem(env, args.GetStr("物品名"), null))
                    .Then(
                        String <DMEnv>("新名")
                        .MapDict(mapper)
                        .Executes((env, args, dict) => ThrowItem(env, args.GetStr("物品名"), args.GetStr("新名")))
                        )
                    )
                ).Then(
                Literal <DMEnv>("拾取")
                .Then(
                    String <DMEnv>("物品名")
                    .MapDict(mapper)
                    .Executes((env, args, dict) => PickItem(env, args.GetStr("物品名"), null))
                    .Then(
                        String <DMEnv>("新名")
                        .MapDict(mapper)
                        .Executes((env, args, dict) => PickItem(env, args.GetStr("物品名"), args.GetStr("新名")))
                        )
                    )
                ).Then(
                Literal <DMEnv>("传递")
                .Then(
                    String <DMEnv>("物品名")
                    .Then(
                        String <DMEnv>("目标名")
                        .Handles(ExistInv)
                        .Executes((env, args, dict) => PassItem(env, args.GetStr("物品名"), args.GetInv("目标名"), null))
                        .Then(
                            String <DMEnv>("新名")
                            .Executes((env, args, dict) => PassItem(env, args.GetStr("物品名"), args.GetInv("目标名"), args.GetStr("新名")))
                            )
                        )
                    )
                ).Then(
                Literal <DMEnv>("编辑")
                .Then(
                    String <DMEnv>("物品名")
                    .MapDict(mapper)
                    .Executes((env, args, dict) => EditItem(env, args.GetStr("物品名"), null, dict))
                    .Then(
                        String <DMEnv>("新名")
                        .MapDict(mapper)
                        .Executes((env, args, dict) => EditItem(env, args.GetStr("物品名"), args.GetStr("新名"), dict))
                        )
                    )
                ).Then(
                Literal <DMEnv>("装弹")
                .Then(
                    String <DMEnv>("武器名").Then(
                        Dice("装弹量")
                        .Executes((env, args, dict) => LoadBullets(env, args.GetStr("武器名"), args.GetDice("装弹量")))
                        )
                    )
                );

            dispatcher.SetAlias("造物", "物品 创造");
            dispatcher.SetAlias("销毁", "物品 销毁");
            dispatcher.SetAlias("丢弃", "物品 丢弃");
            dispatcher.SetAlias("拾取", "物品 拾取");
            dispatcher.SetAlias("传递", "物品 传递");
            dispatcher.SetAlias("装弹", "物品 装弹");


            dispatcher.SetAlias("it", "物品");
            dispatcher.SetAlias("cr", "物品 创造");
            dispatcher.SetAlias("ds", "物品 销毁");
            dispatcher.SetAlias("th", "物品 丢弃");
            dispatcher.SetAlias("pu", "物品 拾取");
            dispatcher.SetAlias("ld", "物品 装弹");
            dispatcher.SetAlias("ps", "物品 传递");
        }
Пример #7
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("反标", "人物卡 标记 移除");
        }