接入登录、游戏逻辑

This commit is contained in:
janing
2025-12-14 23:35:24 +08:00
parent 3612ee74ea
commit d530b48e34
3 changed files with 53 additions and 46 deletions

View File

@@ -1,5 +1,7 @@
import { find } from "cc";
import { BaseState } from "../../Framework/FSM/BaseState"; import { BaseState } from "../../Framework/FSM/BaseState";
import { NetManager } from "../../Framework/Net/NetManager"; import { NetManager } from "../../Framework/Net/NetManager";
import { UIMgr } from "../../Framework/UI/UIMgr";
/** /**
* 应用启动状态 * 应用启动状态
@@ -23,6 +25,10 @@ export class AppStatusBoot extends BaseState {
console.log("[AppStatusBoot] 开始初始化应用..."); console.log("[AppStatusBoot] 开始初始化应用...");
try { try {
// 初始化UI
console.log("[AppStatusBoot] 初始化UI管理器...");
UIMgr.getInstance().setUIRoot(find("Canvas")!);
// 1. 初始化并连接网络 // 1. 初始化并连接网络
await this.initAndConnectNet(); await this.initAndConnectNet();

View File

@@ -1,4 +1,8 @@
import { BaseState } from "../../Framework/FSM/BaseState"; import { BaseState } from "../../Framework/FSM/BaseState";
import { UIMgr } from "../../Framework/UI/UIMgr";
import { UIGame } from "../Game/UIGame";
import { World } from "../Game/World";
import { PlayerInfo } from "../../Shared/protocols/PtlLogin";
/** /**
* 应用游戏状态 * 应用游戏状态
@@ -9,8 +13,9 @@ import { BaseState } from "../../Framework/FSM/BaseState";
* - 游戏主循环 * - 游戏主循环
*/ */
export class AppStatusGame extends BaseState { export class AppStatusGame extends BaseState {
private _player: any = null; private _player: PlayerInfo = null;
private _isNewPlayer: boolean = false; private _isNewPlayer: boolean = false;
private _uiGame: UIGame = null;
constructor(fsm: any) { constructor(fsm: any) {
super(fsm, "Game"); super(fsm, "Game");
@@ -58,13 +63,10 @@ export class AppStatusGame extends BaseState {
private async loadGameScene(): Promise<void> { private async loadGameScene(): Promise<void> {
console.log("[AppStatusGame] 加载游戏场景..."); console.log("[AppStatusGame] 加载游戏场景...");
// TODO: 使用Cocos场景管理器加载游戏场景 // 加载游戏UI
// await director.loadScene("GameScene"); this._uiGame = await UIMgr.getInstance().load(UIGame);
// 模拟加载延迟 console.log("[AppStatusGame] 游戏场景加载完成");
await this.delay(500);
console.log("[AppStatusGame] 游戏场景加载完成(待实现)");
} }
/** /**
@@ -73,13 +75,20 @@ export class AppStatusGame extends BaseState {
private async initGame(): Promise<void> { private async initGame(): Promise<void> {
console.log("[AppStatusGame] 初始化游戏..."); console.log("[AppStatusGame] 初始化游戏...");
// TODO: 初始化游戏逻辑 if (!this._uiGame) {
// - 创建玩家角色(根据this._player信息) throw new Error("UIGame 未加载");
// - 设置玩家位置(this._player.position) }
// - 创建敌人
// - 初始化游戏规则 // 获取世界根节点
const worldRoot = this._uiGame.getWorldRoot();
if (!worldRoot) {
throw new Error("世界根节点未找到");
}
// 初始化世界,传入本地玩家信息
await World.getInstance().init(worldRoot, this._player);
console.log("[AppStatusGame] 游戏初始化完成(待实现)"); console.log("[AppStatusGame] 游戏初始化完成");
} }
/** /**
@@ -88,28 +97,10 @@ export class AppStatusGame extends BaseState {
private listenServerMessages(): void { private listenServerMessages(): void {
console.log("[AppStatusGame] 开始监听服务器广播..."); console.log("[AppStatusGame] 开始监听服务器广播...");
// TODO: 监听服务器广播消息 // 网络消息监听已在 World 中注册
// const netManager = NetManager.getInstance(); // World 会自动处理 MsgPlayerJoin 和 MsgPlayerMove
// 监听玩家加入 (MsgPlayerJoin) console.log("[AppStatusGame] 服务器广播监听已设置");
// netManager.listenMsg("PlayerJoin", (msg) => {
// console.log("玩家加入:", msg.playerName);
// // 在场景中创建其他玩家
// });
// 监听玩家移动 (MsgPlayerMove)
// netManager.listenMsg("PlayerMove", (msg) => {
// console.log("玩家移动:", msg.playerName, msg.position);
// // 更新其他玩家位置
// });
// 监听聊天消息 (MsgChat)
// netManager.listenMsg("Chat", (msg) => {
// console.log("聊天消息:", msg);
// // 显示聊天内容
// });
console.log("[AppStatusGame] 服务器广播监听已设置(待实现)");
} }
/** /**
@@ -118,10 +109,7 @@ export class AppStatusGame extends BaseState {
private startGame(): void { private startGame(): void {
console.log("[AppStatusGame] 游戏开始!"); console.log("[AppStatusGame] 游戏开始!");
// TODO: 启动游戏逻辑 // 游戏已启动,玩家可以通过 WASD 控制角色移动
// - 显示游戏UI
// - 开始接收输入
// - 开始游戏主循环(在onUpdate中)
} }
/** /**
@@ -199,13 +187,15 @@ export class AppStatusGame extends BaseState {
super.onExit(); super.onExit();
console.log("[AppStatusGame] 离开游戏状态"); console.log("[AppStatusGame] 离开游戏状态");
// TODO: 清理游戏资源 // 清理世界
// - 卸载游戏场景 World.clear();
// - 清理角色对象
// - 取消服务器消息监听 // 卸载游戏UI
// const netManager = NetManager.getInstance(); if (this._uiGame) {
// netManager.unlistenMsg("PlayerJoin"); UIMgr.getInstance().unload(UIGame);
// netManager.unlistenMsg("PlayerMove"); this._uiGame = null;
// netManager.unlistenMsg("Chat"); }
this._player = null;
} }
} }

View File

@@ -0,0 +1,11 @@
{
"ver": "1.0.1",
"importer": "text",
"imported": true,
"uuid": "87d8c6a8-6b03-44b9-98a2-5eb7b8457271",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}