GameSceneUtil.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { RoomMgr } from "./RoomMgr";
  2. import { GameServerAuthParams } from "../shared/types/GameServerAuthParams";
  3. import { GameMgr } from "./GameMgr";
  4. import { NetLobbyServer, gameNet, lobbyNet } from "./NetGameServer";
  5. import { ModuleDef } from "../../scripts/ModuleDef";
  6. import { SceneDef } from "../../scripts/SceneDef";
  7. import { SceneUtil } from "../../core_tgx/base/SceneUtils";
  8. import { UIGameResult } from "../../module_ball/ui_lobby/UIGameResult";
  9. export class GameSceneUtil {
  10. private static _inst: GameSceneUtil;
  11. public static get inst(): GameSceneUtil {
  12. if (!this._inst) {
  13. this._inst = new GameSceneUtil();
  14. }
  15. return this._inst;
  16. }
  17. private _stage: string = "lobby";
  18. public get stage(): string {
  19. return this._stage;
  20. }
  21. public async enterGame(
  22. params: GameServerAuthParams,
  23. silence: boolean = false
  24. ) {
  25. this._stage = "normal";
  26. if (!silence) {
  27. tgx.UIWaiting.show("正在加载");
  28. }
  29. await tgx.SceneUtil.loadBundleSync(ModuleDef.GAME);
  30. RoomMgr.inst.reset();
  31. GameMgr.inst.reset();
  32. await gameNet.connectToRoomServer(params);
  33. let ret = await RoomMgr.inst.enterRoom(params);
  34. if (ret.isSucc) {
  35. let loadRet = await tgx.SceneUtil.loadScene(SceneDef.GAME);
  36. if (loadRet && lobbyNet.type != "http") {
  37. (lobbyNet as NetLobbyServer).disconnect(3000, "normal");
  38. }
  39. } else {
  40. if (ret.err.message == "INVALID_CALL" || ret.err.message == "not_login") {
  41. RoomMgr.inst.backToLobby();
  42. }
  43. }
  44. return ret;
  45. }
  46. public exitGame() {
  47. this._stage = "lobby";
  48. RoomMgr.inst.reset();
  49. GameMgr.inst.reset();
  50. tgx.SceneUtil.unloadBundle(ModuleDef.GAME);
  51. }
  52. }