7. 双端:请求与答复#

上篇说到游戏流程的运行,穿插在游戏流程中的自然少不了玩家们频繁的决策步骤。 是否发动技能,出牌,选择武将等等…… 本文讨论这些决策是如何发起、如何被玩家的设备接收与处理,以及玩家进行操作后的诸多问题。

总的来说,我们关心的是以下两个组件:

  • Request 类,用于服务端。它负责与Client沟通,以及作为各种askFor函数的底层。

  • RequestHandler 类,用于客户端。顾名思义就是为了处理某个Request。它负责与Server沟通,以及与GUI沟通。

7.1. 服务端:Request#

7.2. 客户端:RequestHandler#

向Server发送reply不用多说,重点在于它需要模拟出客户端的UI界面(如果确实存在UI界面,那么还需要将数据发送到真实的UI界面中),这个“模拟”包括控制各种模拟UI组件的enabled、selected属性等等。真实的UI只负责实际显示,如此就将UI的显示逻辑转移到了Lua中。

RequestHandler的工作流程大约如下:

待处理

对下面的这一套,画个流程图

  • 客户端收到需要创建RequestHandler的消息

  • 客户端创建RequestHandler

  • RequestHandler创建完之后调用notifyUI,将变化反映到实际的界面

  • 每当ui产生操作(点击等等)都会触发一次和RequestHandler有关的调用,调用的最后UI状态会变化,并再次通过notifyUI反映到客户端