/************************************************************************************ * FileName : UISetRoom.ts * Description : 设置房间 * Version : v1.0.0 * CreateTime : 2024-11-07 10:34:29 * Author : * Copyright (c) 2024 * ============================================================== * Method Description: * * ============================================================== ************************************************************************************/ import { GameUILayers } from "db://assets/scripts/GameUILayers"; import { tgx_class } from "db://assets/core_tgx/base/ModuleContext"; import { ModuleDef } from "db://assets/scripts/ModuleDef"; import { tgxAudioMgr, tgxUIAlert, tgxUIController, tgxUIWaiting } from "db://assets/core_tgx/tgx"; import { Layout_UISetRoom } from "db://assets/module_arean/ui_set_room/Layout_UISetRoom"; import { UserMgr } from "db://assets/module_basic/scripts/UserMgr"; import { SubGameMgr } from "db://assets/module_basic/scripts/SubGameMgr"; import { EMusicDefine } from "../../module_basic/scripts/MusicDefine"; import { UserLocalCache } from "db://assets/module_basic/scripts/UserLocalCache"; import { EFightModel } from "db://assets/module_basic/shared/protocols/public/arean/AreanTypeDef"; import { Animation } from "cc"; @tgx_class(ModuleDef.Arean) export class UISetRoom extends tgxUIController { constructor() { super("ui_set_room/ui_set_room", GameUILayers.POPUP, Layout_UISetRoom) } protected onCreated(params: any) { let layout: Layout_UISetRoom = this.layout as Layout_UISetRoom; // 关闭界面 this.onButtonEvent(layout.btnClose, () => { tgxAudioMgr.inst.playCommonBtn(EMusicDefine.EFFECT_CLOSE); this.close(); }) // 加入房间 this.onButtonEvent(layout.btnJoin, () => { tgxAudioMgr.inst.playCommonBtn(EMusicDefine.EFFECT_CLICK); UserLocalCache.inst.setFightModel(EFightModel.Room); this._joinRoom(false); }) // 创建房间 this.onButtonEvent(layout.btnCreate, () => { // tgxAudioMgr.inst.playCommonBtn(); // tgxUIMgr.inst.showUI(UICreateRoom); tgxAudioMgr.inst.playCommonBtn(EMusicDefine.EFFECT_CLICK); UserLocalCache.inst.setFightModel(EFightModel.Room); this._createRoom().then(); }) // 创建房间 this.onButtonEvent(layout.btnClose2, () => { UserLocalCache.inst.setFightModel(EFightModel.Room); this._joinRoom(true); }) // 加入房间 this.onButtonEvent(layout.btnJoinSure, () => { UserLocalCache.inst.setFightModel(EFightModel.Room); this._joinSureRoom().then(); }) } private _joinRoom(showBg: boolean): void { this.node.getComponent(Animation).play("joinRoom"); } private async _joinSureRoom() { let layout: Layout_UISetRoom = this.layout as Layout_UISetRoom; let roomID = layout.inputBox.string; if (roomID.length > 0) { tgxUIWaiting.show(); let password = "123456"; let ret = await UserMgr.inst.doTryEnterRoom(roomID, password); tgxUIWaiting.hide(); if (!ret.isSucc) { tgxUIAlert.show("进入失败"); } } } private async _createRoom() { let layout: Layout_UISetRoom = this.layout as Layout_UISetRoom; let roomID = "123456"; let roomName = UserMgr.inst.name + '的好友局'; if (roomID.length > 0) { if (roomID.length > 16) { tgxUIAlert.show('密码最多16个字符'); return; } this.close(); tgxUIWaiting.show(); let ret = await UserMgr.inst.rpc_CreateRoom(SubGameMgr.current.id, roomName, roomID); tgxUIWaiting.hide(); if (ret.isSucc) { let password = roomID; if (ret.isSucc) { let params = ret.res.enterRoomParams; return await SubGameMgr.inst.enterSubGame(params, UserMgr.inst.uid); } else { tgxUIAlert.show('创建失败'); } this.close(); } else { tgxUIAlert.show(ret.err.message); } } } }