- core
- Director
- 用于解释执行脚本逻辑
- Environment
- 用于存放游戏状态。所有和存档有关的代码都要放到这
- Parser
- 用于解析脚本,Parser应该被设计成无状态的(因为游戏的状态都应该由Environment管理)
- GameConfig
- GameConfig归Environment管,Environment会先读取gameconfig.txt里面的值并parse存在成员里,再读取save/config.sav里面的值,如果能读到就用新读到的值覆写原来的成员变量的值。
- Director
- platform
- 绘图指令队列模型:platform主动、单向地调用Director的nextCommand()方法获得下一步的绘图指令,然后自行决定这些绘图指令执行的时机
- 比如说platform可以一口气把选择支指令之前的绘图指令都存在队列里,等跑到选择支用户做出了一个特定选择之后再向Director继续要绘图指令。
- 这个例子的问题是提前读取后面的脚本可能会导致变量的变动,给存档系统带来麻烦。这个问题可以通过在每个绘图指令执行后都建立一个Environment的快照来解决。
- 比如说platform可以一口气把选择支指令之前的绘图指令都存在队列里,等跑到选择支用户做出了一个特定选择之后再向Director继续要绘图指令。
- 绘图指令队列模型:platform主动、单向地调用Director的nextCommand()方法获得下一步的绘图指令,然后自行决定这些绘图指令执行的时机