squidGame/tgx-games-client/assets/module_basic/scripts/NetGameServer.ts

93 lines
2.6 KiB
TypeScript
Raw Normal View History

2025-02-07 10:49:34 +08:00
import { TextAsset, assetManager } from "cc";
import { GameServerAuthParams } from "../shared/types/GameServerAuthParams";
import { UserInfo } from "../shared/types/UserInfo";
import { GameServerListFileURL, GameServerURLs } from "./FrontConfig";
import { WebsocketClient } from "./WebsocketClient";
export class NetGameServer extends WebsocketClient {
private _playerNum: number = 0;
private _roomId: string;
private _roomDisplayName: string;
private _currentUser: UserInfo;
private static _inst: NetGameServer = null;
public static get inst(): NetGameServer {
if (!this._inst) {
this._inst = new NetGameServer();
}
return this._inst;
}
public async getGameServerList(): Promise<Readonly<string[]>> {
/**
* @en if defined, load server list from remote file.
* @zh
*/
if(GameServerListFileURL){
return new Promise((resolve, reject) => {
assetManager.loadRemote(GameServerListFileURL,TextAsset, (err,textAsset:TextAsset)=>{
let serverUrls = GameServerURLs;
try {
serverUrls = JSON.parse(textAsset.text);
} catch (error) {
}
resolve(serverUrls);
});
});
}
return GameServerURLs;
}
public authParams: GameServerAuthParams;
public async connectToRoomServer(params: GameServerAuthParams) {
this.authParams = params;
console.log('connect to room server', params);
if (this._serverUrl != params.serverUrl) {
this.createConnection([params.serverUrl]);
}
return true;
}
public async joinRoomServer(uid:string) {
let retJoin = await this.conn.callApi('EnterRoom', {
token: this.authParams.token,
uid: uid,
time: this.authParams.time,
roomId: this.authParams.roomId,
});
return retJoin;
}
public get currentUser(): UserInfo {
return this._currentUser;
}
public set playerNum(v: number) {
this._playerNum = v;
}
public get playerNum() {
return this._playerNum;
}
public get gameServerUrl() {
return this.authParams.serverUrl;
}
public set roomId(v: string) {
this._roomId = v;
}
public get roomId(): string {
return this._roomId;
}
public set subRoomDisplayName(v: string) {
this._roomDisplayName = v;
}
}