squidGame/tgx-games-client/assets/module_arean/ui_searching_rival/UI_SearchingRival.ts

81 lines
2.5 KiB
TypeScript

import { director, game } from "cc";
import { tgxUIAlert, tgxUIController, tgx_class } from "../../core_tgx/tgx";
import { GameUILayers } from "../../scripts/GameUILayers";
import { ModuleDef } from "../../scripts/ModuleDef";
import { SubGameMgr } from "../../module_basic/scripts/SubGameMgr";
import { UserMgr } from "../../module_basic/scripts/UserMgr";
import { Layout_SearchingRival } from "./Layout_SearchingRival";
@tgx_class(ModuleDef.Arean)
export class UI_SearchingRival extends tgxUIController {
public params: any
constructor() {
super('ui_searching_rival/ui_searching_rival', GameUILayers.POPUP, Layout_SearchingRival);
}
private _startTime = Date.now();
private _state = '';
protected onCreated(): void {
let layout = this.layout as Layout_SearchingRival;
this.onButtonEvent(layout.btnCancel, async () => {
if (this._state == 'matching') {
let ret = await UserMgr.inst.rpc_QuickPlayCancel();
if (ret.isSucc) {
this._state = 'cancelled';
this.close();
}
}
else {
this._state = 'cancelled';
this.close();
}
});
}
protected onUpdate(dt: number): void {
let layout = this.layout as Layout_SearchingRival;
let elapsedTime = Math.floor((Date.now() - this._startTime) / 1000);
//3秒后关闭ui
if (elapsedTime >= 4) {
this.close();
}
if (elapsedTime < 60) {
layout.lblTime.string = elapsedTime + 's';
}
else {
let s = elapsedTime % 60;
let m = Math.floor(elapsedTime / 60);
layout.lblTime.string = m + 'm' + s + 's';
}
}
async startMatch(type: string, fun: Function) {
if (this._state) {
return;
}
this._state = 'matching';
let ret = await UserMgr.inst.rpc_QuickPlay(type);
console.log('startMatch', ret);
if (!ret.isSucc) {
tgxUIAlert.show('No contestants matched');
}
else {
let params = ret.res;
this.params = params;
if (!ret.res.isWaiting) {
this.close();
return await SubGameMgr.inst.enterSubGame(params, UserMgr.inst.uid);
} else {
if (fun) {
fun(params);
}
}
}
}
}