大厅功能
老项目升级环境配置
项目demo地址
[git地址](https://git.jumpw.com/popx_demo/demox.git)
分支:hall_test
添加src/hall/index.ts的大厅服务器入口文件
修改打包配置rollup
- rollup.config.js新增打包大厅index.js的配置
- rollup.config.js加一下服务类的白名单
修改html启动文件
- 拷贝覆盖index.html到你的项目中,拷贝hall.html本地大厅文件到同一文件夹下
审核后台勾选大厅
只有勾选了大厅后,登录流程才会走大厅的逻辑,否则是走的老的流程,直接进战斗房间
大厅游戏工作流说明
核心代码架构
XPopManager里,对各个阶段的回调有如下的顺序
游戏开始
// 简化流程开始:大厅相关逻辑 if (XPopManager.onHallWait) { const result = await XPopManager.onHallWait; console.log(result); } XPopManager.onHallStart && XPopManager.onHallStart(); console.log('>bridge 进入大厅'); // 等待匹配后进入游戏房间 // 简化流程开始:游戏相关逻辑 if (XPopManager.onGameWait) { const result = await XPopManager.onGameWait; console.log(result); } XPopManager.onGameStart && XPopManager.onGameStart(json.startparam); console.log('>bridge 进入副本');
client监听的回调
为了方便说明,请打开demo中/src/client/index.ts,里面比较清晰的监听了核心事件
其中有一部分GameManager的代码涉及到状态机的管理,我们先不看状态机的逻辑,后面再说
预加载资源
在进入大厅前,会有一个promise的异步接口供开发者使用去预加载资源,比如表格,比如读取文件配置等等。
必须在加载完成的回调中resolve
//预加载资源 XPopManager.onHallWait = new Promise((resolve)=>{ GameManager.instance.onPreLoadRes(()=>{ resolve("Resource loaded successfully hall"); }); });
进入大厅
在游戏启动后,会直接进入大厅,可以监听onHallStart
//进入大厅 XPopManager.onHallStart = () => { GameManager.instance.onEnterHall(); }