关于Task
============

Task允许在不启动新Room的前提下在服务端执行一些Lua函数，这样Lua的拓展能力进一步增强。

一些使用场景：

- 制作自定义签到页面时，在服务端提供后端支持，玩家在大厅中可以完成签到
- 在某些触发事件中，允许执行一些Lua（例如玩家登录成功时，额外发送一个包之类的）
- 以及更多……

本文档主要从Task的底层实现角度分析。用户文档应该在隔壁未分类文档中躺着

与完整的游戏房间相比，task更轻量、执行周期更短，并且存储在C++后端中的内容更少。

C++层的任务
--------------

C++需要做的事情：触发能启动某task的事件，新增task、启动task、恢复task、结束task、删除task。
因此在Server下新增TaskManager类处理所有task事务。
Lua虚拟机上，和Room们共用RoomThread。

能启动task的事件暂定为：

- 玩家身处大厅时发送LobbyTask包，触发指定task
- 在C++代码中，通过手动触发相关事件，进而触发相关task（类似触发技）：

  - ``L->call("InitScheduler")`` 后，触发Lua环境初始化事件
  - 待补充……


C++还需要向Lua开放一批新的接口，来完成相关任务才行。
