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