93 lines
2.6 KiB
TypeScript
93 lines
2.6 KiB
TypeScript
|
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;
|
|||
|
}
|
|||
|
}
|