我正在与C#和XNA的RPG引擎团队合作.我们计划针对Windows和Windows Phone 7进行定位,但遇到人工智能交互问题并在过场动画期间控制玩家行为.在大多数情况下,使用MVC设计模式提取所有内容,但将所有逻辑和移动抽象到控制器中可能会导致问题.因此,我们的想法是拥有一个接口(IScriptEngine),它接受一个IScriptObject并相应地更新地图模型中的数据.我在考虑将脚本放在XML语法中:
<Script Name="MoveNPC_1">
<Action Command="MoveToTile" Target="NPC_1" Value="10,2"/>
</Script>
Run Code Online (Sandbox Code Playgroud)
并让IScriptEngine相应地解析它.我非常怀疑在一个巨大的switch语句中解析会是一个好主意,但这是我一直在使用的.
switch(Action.Command)
{
case "MoveToTile":
{
doMovement(Action.Value, Action.Target);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
即使我的高中编程经验告诉我这是一个坏主意,但我想不出任何其他方式.
编辑:我想以某种方式将这一切嵌入到地图文件中.在地图XML文件中,我们指定了包含多个标记的区域.然后会有一个部分,指定NPC在地图上的位置,以及它将使用哪些资源和脚本.然后会有一个部分,其中将定义所有战斗(再次,定义资源和不是什么),然后可能是一个部分,其中将定义这些脚本.我只是希望有一种方法可以使用WP7动态编译C#.如果我能得到双方的支持,这不会是一个问题.我想知道是否会有任何可以移植到WP7的Mono库来共享CodeDom和所有Compiler类的功能?