对于我正在开发的 Elm (0.13) 游戏,我希望有可重新配置的输入。我为此得到的模型的简化版本是
type Controls = {
up: KeyCode,
down: KeyCode,
left: KeyCode,
right: KeyCode
}
type Player = {
...
controls: Controls,
...
}
type Game = {
state: State,
players: [Player]
}
对于游戏循环,我使用的是标准foldp
结构,我希望输入依赖于游戏的当前状态。到目前为止,我尝试了以下方法:
gameState =
let
initialGame = (newGame initialActive)
in
foldp update initialGame (input initialGame)
但当然,输入信号生成函数 ( input : Game -> Signal Input
) 继续使用初始游戏,而不是改变的游戏状态。
我已经在整个互联网上搜索以找到解决方案,但我在这个方向上找不到任何东西。有没有办法按照我尝试的方式进行(通过在模型中包含控件),或者我是否必须通过使控件本身发出信号来从模型中释放控件?