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("施法", "法术 使用"); }
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("反标", "人物卡 标记 移除"); }