118 lines
4.4 KiB
TypeScript
118 lines
4.4 KiB
TypeScript
/************************************************************************************
|
|
|
|
* 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);
|
|
}
|
|
}
|
|
}
|
|
} |