コード例 #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 override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
        {
            dispatcher.Register("存档").Then(
                PresetNodes.Literal <DMEnv>("保存")

                .Executes((env, args, dict) => SaveScenario(env, env.Sce))
                .Then(
                    PresetNodes.String <DMEnv>("团名")
                    .Executes((env, args, dict) => SaveScenario(env, args.GetStr("团名")))
                    )
                ).Then(
                PresetNodes.Literal <DMEnv>("读取")
                .Executes((env, args, dict) => LoadScenario(env, env.GroupId))
                .Then(
                    PresetNodes.String <DMEnv>("团名")
                    .Executes((env, args, dict) => LoadScenario(env, env.GroupId, args.GetStr("团名")))
                    )
                ).Then(
                PresetNodes.Literal <DMEnv>("开始")
                .Then(
                    PresetNodes.String <DMEnv>("团名")
                    .Executes((env, args, dict) => StartScenario(env, env.GroupId, env.SelfId, args.GetStr("团名")))
                    //.Then(
                    //    PresetNodes.Literal<DMEnv>("强制")
                    //    .Executes((env, args, dict) => StartScenario(env.GroupId, args.GetStr("团名")))
                    //)
                    )
                );

            dispatcher.SetAlias("读团", "存档 读取");
            dispatcher.SetAlias("存团", "存档 保存");
            dispatcher.SetAlias("开团", "存档 开始");
        }
コード例 #3
0
        /// <summary>
        /// 注册以字面量打头的指令
        /// </summary>
        /// <param name="head">指令头</param>
        /// <returns>注册的第一个节点</returns>
        public CommandNode <TEnv> Register(string head)
        {
            CommandNode <TEnv> n = PresetNodes.Literal <TEnv>(head);

            Root.AddChild(n);
            return(n);
        }
コード例 #4
0
 public override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
 {
     dispatcher.Register("重复").Then(
         PresetNodes.Int <DMEnv>("次数").Then(
             PresetNodes.Cmd <DMEnv>("命令").Executes((env, args, dict) => Repeat(env, args.GetCmd("命令"), args.GetInt("次数")))
             )
         );
 }
コード例 #5
0
        public override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
        {
            IDictionary <object, object> hardnessMap = new Dictionary <object, object> {
                ["普通"] = CheckResult.NormalSuccess,
                ["困难"] = CheckResult.HardSuccess,
                ["极难"] = CheckResult.ExtremeSuccess,
            };
            IDictionary <object, object> twiceMap = new Dictionary <object, object> {
                ["奖励"] = true,
                ["惩罚"] = false,
            };

            dispatcher.Register("检定").Then(
                MainAction = PresetNodes.String <DMEnv>("数值名")
                             .Handles(Extensions.ExistSelfValue)
                             .Executes((DMEnv env, Args args, Args dict) => SimpleCheck(env, env.Inv, args.GetStr("数值名"), CheckResult.NormalSuccess))
                             .Then(
                    PresetNodes.Or <DMEnv>("难度", "普通", "困难", "极难")
                    .Handles(PreProcesses.MapArg <DMEnv>(hardnessMap))
                    .Executes((DMEnv env, Args args, Args dict) => SimpleCheck(env, env.Inv, args.GetStr("数值名"), args.GetInt("难度")))
                    .Then(
                        PresetNodes.Or <DMEnv>("奖惩", "奖励", "惩罚")
                        .Handles(PreProcesses.MapArg <DMEnv>(twiceMap))
                        .Executes((DMEnv env, Args args, Args dict) => TwiceCheck(env, env.Inv, args.GetStr("数值名"), args.GetBool("奖惩"), args.GetInt("难度")))
                        )
                    ).Then(
                    PresetNodes.Or <DMEnv>("奖惩", "奖励", "惩罚")
                    .Handles(PreProcesses.MapArg <DMEnv>(twiceMap))
                    .Executes((DMEnv env, Args args, Args dict) => TwiceCheck(env, env.Inv, args.GetStr("数值名"), args.GetBool("奖惩"), CheckResult.NormalSuccess))
                    ).Then(
                    PresetNodes.Literal <DMEnv>("对抗").Then(
                        PresetNodes.String <DMEnv>("对手名")
                        .Handles(Extensions.ExistInv)
                        .Executes((DMEnv env, Args args, Args dict) => CheckAgainst(env, env.Inv, args.GetStr("数值名"), args.GetInv("对手名"), args.GetStr("数值名"), false))
                        .Then(
                            PresetNodes.String <DMEnv>("对抗数值名")
                            .Executes((DMEnv env, Args args, Args dict) => CheckAgainst(env, env.Inv, args.GetStr("数值名"), args.GetInv("对手名"), args.GetStr("对抗数值名"), false))
                            )
                        )
                    ).Then(
                    PresetNodes.Literal <DMEnv>("等级对抗").Then(
                        PresetNodes.String <DMEnv>("对手名")
                        .Handles(Extensions.ExistInv)
                        .Executes((DMEnv env, Args args, Args dict) => CheckAgainst(env, env.Inv, args.GetStr("数值名"), args.GetInv("对手名"), args.GetStr("数值名"), true))
                        .Then(
                            PresetNodes.String <DMEnv>("对抗数值名")
                            .Executes((DMEnv env, Args args, Args dict) => CheckAgainst(env, env.Inv, args.GetStr("数值名"), args.GetInv("对手名"), args.GetStr("对抗数值名"), true))
                            )
                        )
                    ).Then(
                    PresetNodes.String <DMEnv>("目标")
                    .Executes((DMEnv env, Args args, Args dict) => SimpleCheckTo(env, env.Inv, args.GetStr("数值名"), args.GetStr("目标")))
                    )
                );

            dispatcher.SetAlias("ch", "检定");
        }
コード例 #6
0
        public override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
        {
            dispatcher.Register("排序")
            .Then(
                PresetNodes.String <DMEnv>("数值名").Rest(
                    PresetNodes.String <DMEnv>("调查员名")
                    .Handles(PreProcesses.ConvertObjectArrayToStringArray)
                    .Executes((env, args, dict) => OrderByValue(env, env.Sce, args.Get <string[]>("调查员名"), args.GetStr("数值名")))
                    )
                );

            dispatcher.SetAlias("战列", "排序 敏捷");
        }
コード例 #7
0
 public override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
 {
     dispatcher.RegisterCustom(Command_Roll.MainAction);
     dispatcher.RegisterCustom(Command_Check.MainAction);
     dispatcher.RegisterCustom(
         PresetNodes.String <DMEnv>("卡名")
         .Handles(Extensions.ExistInv)
         .Then(
             PresetNodes.Cmd <DMEnv>("行动")
             .Executes((env, args, dict) => Command_Control.ControlAndAct(env, args.GetInv("卡名"), args.GetCmd("行动")))
             )
         );
 }
コード例 #8
0
 public override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
 {
     dispatcher.Register("成长").Then(
         Extensions.Dice("增量").Rest(
             PresetNodes.String <DMEnv>("技能名")
             .Handles(PreProcesses.ConvertObjectArrayToStringArray)
             .Executes((env, args, dict) => Grow(env, env.Inv, args.Get <string[]>("技能名"), args.GetDice("增量")))
             )
         ).Rest(
         PresetNodes.String <DMEnv>("技能名")
         .Handles(PreProcesses.ConvertObjectArrayToStringArray)
         .Executes((env, args, dict) => Grow(env, env.Inv, args.Get <string[]>("技能名"), Dice.Of("1d10")))
         );
 }
コード例 #9
0
        public override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
        {
            dispatcher.Register("投掷")
            .Executes((env, args, dict) => Roll(env, Dice.Of("1d100")))
            .Then(
                MainAction = Extensions.Dice("骰子").Executes((env, args, dict) => Roll(env, args.GetDice("骰子")))
                ).Rest(
                PresetNodes.String <DMEnv>("选项组")
                .Handles(PreProcesses.ConvertObjectArrayToStringArray)
                .Executes((env, args, dict) => Choose(env, args.Get <string[]>("选项组")))
                );

            dispatcher.SetAlias("r", "投掷");
        }
コード例 #10
0
        public override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
        {
            dispatcher.Register("如果")
            .Then(
                PresetNodes.Cmd <DMEnv>("条件")
                .Then(
                    PresetNodes.Cmd <DMEnv>("真值指令")
                    .Executes((env, args, dict) => If(args.GetCmd("条件"), args.GetCmd("真值指令"), null))
                    .Then(
                        PresetNodes.Cmd <DMEnv>("假值指令")
                        .Executes((env, args, dict) => If(args.GetCmd("条件"), args.GetCmd("真值指令"), args.GetCmd("假值指令")))
                        )
                    )
                );

            dispatcher.SetAlias("若", "如果");
            dispatcher.SetAlias("if", "如果");
        }
コード例 #11
0
        public override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
        {
            dispatcher.Register("帮助")
            .Executes((env, args, dict) => PrintAllHelp(env))
            .Then(
                PresetNodes.Literal <DMEnv>("模板")
                .Executes((env, args, dict) => "可用的模板:\n" + string.Join("、", Temepletes.Keys))
                .Then(
                    PresetNodes.String <DMEnv>("模板名")
                    .Executes((env, args, dict) => Temepletes.TryGetValue(args.GetStr("模板名"), out string t) ? t : $"未找到{args.GetStr("模板名")}的模板")
                    )
                ).Then(
                PresetNodes.String <DMEnv>("指令名")
                .Executes((env, args, dict) => PrintHelp(env, args.GetStr("指令名")))
                );

            dispatcher.SetAlias("模板", "帮助 模板");
        }
コード例 #12
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("销毁", "物品 销毁");
        }
コード例 #13
0
        public override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
        {
            dispatcher.Register("控制")
            .Then(
                PresetNodes.Literal <DMEnv>("关联")
                .Executes((env, args, dict) => Relate(env))
                )
            .Then(
                PresetNodes.String <DMEnv>("卡名")
                .Handles(Extensions.ExistInv)
                .Executes((env, args, dict) => Control(env, env.SelfId, env.Sce, args.GetInv("卡名")))
                .Then(
                    PresetNodes.Cmd <DMEnv>("行动").Executes((env, args, dict) => ControlAndAct(env, args.GetInv("卡名"), args.GetCmd("行动")))
                    )
                );

            dispatcher.SetAlias("ct", "控制");
            dispatcher.SetAlias("关联到此", "控制 关联");
        }
コード例 #14
0
        public override void OnRegister(CmdDispatcher <DMEnv> dispatcher)
        {
            dispatcher.Register("全局").Then(
                PresetNodes.Literal <DMEnv>("配置").Then(
                    PresetNodes.Literal <DMEnv>("载入")
                    .Executes((env, args, dict) => ("载入" + (SaveUtil.LoadGlobal() ? "成功" : "失败")))
                    ).Then(
                    PresetNodes.Literal <DMEnv>("保存")
                    .Executes((env, args, dict) => ("保存" + (SaveUtil.SaveGlobal() ? "成功" : "失败")))
                    )
                ).Then(
                PresetNodes.Literal <DMEnv>("调试").Then(
                    PresetNodes.Bool <DMEnv>("开关", "开", "关")
                    .Executes((env, args, dict) => {
                Global.Debug = args.GetBool("开关");
                env.Next     = "调试模式:" + (Global.Debug ? "开" : "关");
            })
                    )
                ).Then(
                PresetNodes.Literal <DMEnv>("回复").Then(
                    PresetNodes.Bool <DMEnv>("开关", "开", "关")
                    .Executes((env, args, dict) => {
                Global.DoAt = args.GetBool("开关");
                SaveUtil.SaveGlobal();
                env.Next = "回复:" + (Global.DoAt ? "开" : "关");
            })
                    )
                ).Then(
                PresetNodes.Literal <DMEnv>("自动载入").Then(
                    PresetNodes.Bool <DMEnv>("开关", "开", "关")
                    .Executes((env, args, dict) => {
                Global.AutoLoad = args.GetBool("开关");
                SaveUtil.SaveGlobal();
                env.Next = "自动载入:" + (Global.AutoLoad ? "开" : "关");
            })
                    )
                ).Then(
                PresetNodes.Literal <DMEnv>("翻译腔").Then(
                    PresetNodes.Bool <DMEnv>("开关", "开", "关")
                    .Executes((env, args, dict) => {
                Global.TranslatorTone = args.GetBool("开关");
                //SaveUtil.SaveGlobal();
                env.Next = "翻译腔:" + (Global.TranslatorTone ? "开" : "关");
            })
                    )
                ).Then(
                PresetNodes.Literal <DMEnv>("睡眠").Then(
                    PresetNodes.Bool <DMEnv>("开关", "开", "关")
                    .Executes((env, args, dict) => {
                Global.Sleep = args.GetBool("开关");
                SaveUtil.SaveGlobal();
                env.Next = (Global.Sleep ? "那我去睡觉觉咯~w" : "爷来啦!");
            })
                    )
                ).Then(
                PresetNodes.Literal <DMEnv>("灌铅")
                .Then(
                    PresetNodes.Int <DMEnv>("数值")
                    .Executes((env, args, dict) => {
                env.Next = !Global.AllowedLead ? "禁止给老娘灌铅!喵~o( =▼ω▼= )m!" : "当前铅量:" + (Global.SetLead(args.GetInt("数值")));
                SaveUtil.SaveGlobal();
            })
                    ).Then(
                    PresetNodes.Literal <DMEnv>("重置")
                    .Executes((env, args, dict) => {
                Global.SetLead(50);
                env.Next = "铅量已重置为" + Global.Lead;
                SaveUtil.SaveGlobal();
            })
                    )
                );

            dispatcher.SetAlias("配置", "全局 配置");
            dispatcher.SetAlias("调试", "全局 调试");
            dispatcher.SetAlias("回复", "全局 回复");
            dispatcher.SetAlias("自动载入", "全局 自动载入");
            dispatcher.SetAlias("闭嘴", "全局 睡眠 开");
            dispatcher.SetAlias("说话", "全局 睡眠 关");
            dispatcher.SetAlias("翻译腔", "全局 翻译腔");
            dispatcher.SetAlias("灌铅", "全局 灌铅");
        }
コード例 #15
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("反标", "人物卡 标记 移除");
        }