大厅功能:修订间差异

来自泡泡
第34行: 第34行:


=== 核心代码架构 ===
=== 核心代码架构 ===
XPopManager里,对各个阶段的回调有如下的顺序
==== 游戏开始 ====


<pre>
    // 简化流程开始:大厅相关逻辑 
    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 进入副本'); 
</pre>


=== client监听的回调 ===
=== client监听的回调 ===

2024年9月4日 (三) 10:10的版本

老项目升级环境配置

项目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();
}

开始匹配

匹配成功

进入战斗

战斗返回大厅

离开整个游戏