目前来说,代码进行了一定程度的更新,这个更新主要是针对“分步计算”,或者说我上一个Post所提到的问题。这个问题经过我的反复思考,已经有了一个基本的思路了。大概意思就是,所有的动作运算——就是那种需要主语、谓语、宾语的,而不是只需要知道自己的存在的运算,还是和原来设想的一样,统统放在Action里面进行计算。那么Action怎么获得双方的数据呢?怎么给双方返回计算结果呢?大概的意思就是,在动作的执行过程里面会有一个填充数据->传输数据->解开数据(更新本机相应对象)以及另外一个填充结果->传输结果->解开结果(更新到本机相应对象)的过程。由于有两个对象,因此在Action里面就不得不添加了八个abtract函数(这有一点点不雅观)。此外填充和解开过程都是往一个TransferData读写数据的过程,实际上里面真正装载数据的是一个MemoryStream(这也有一点点不雅观)。选用MemoryStream的原因在于它是十分的方便,比如说和数组互相转换,或者传送到一个NetworkStream里面去。当然,稍微有点“不面向对象”,相当于我们必须自己书写序列化和反序列化的过程,但是这样至少比什么都没有要好。
我这么说大家也许不明白,等我有空把序列图给画出来,也许大家就会清楚一些了。(代码在DotGameFramework模块)
我这么说大家也许不明白,等我有空把序列图给画出来,也许大家就会清楚一些了。(代码在DotGameFramework模块)