squidGame/tgx-games-client/assets/module_arean/ui_set_room/UISetRoom.ts

118 lines
4.4 KiB
TypeScript
Raw Normal View History

2025-02-17 21:36:37 +08:00
/************************************************************************************
* 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);
}
}
}
2025-02-07 10:49:34 +08:00
}