| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import { _decorator, Component, director, Director, Node } from 'cc';
- import { AppKernel } from '../../app/AppKernel';
- import { UILayer } from '../../framework/ui/UILayer';
- const { ccclass, property } = _decorator;
- @ccclass('LobbyController')
- export class LobbyController extends Component {
- @property(Node) pageLayer: Node | null = null;
- @property(Node) windowLayer: Node | null = null;
- @property(Node) popupLayer: Node | null = null;
- @property(Node) toastLayer: Node | null = null;
- @property(Node) loadingLayer: Node | null = null;
- @property(Node) systemLayer: Node | null = null;
- protected async start(): Promise<void> {
- this.bindLayers();
- await AppKernel.ui.registerSceneViews();
- const lobbyService = AppKernel.services.lobbyService;
- await lobbyService.launchLobby();
- await this.waitForNextDraw();
- AppKernel.events.emit('launch:completed');
- }
- private waitForNextDraw(): Promise<void> {
- return new Promise((resolve) => {
- director.once(Director.EVENT_AFTER_DRAW, resolve);
- });
- }
- protected onDestroy(): void {
- AppKernel.events.offTarget(this);
- AppKernel.ui.clearSceneLayers();
- }
- private bindLayers(): void {
- const bindings: Array<[UILayer, Node | null]> = [
- [UILayer.Page, this.pageLayer],
- [UILayer.Window, this.windowLayer],
- [UILayer.Popup, this.popupLayer],
- [UILayer.Toast, this.toastLayer],
- [UILayer.Loading, this.loadingLayer],
- [UILayer.System, this.systemLayer],
- ];
- for (const [layer, node] of bindings) {
- if (node) AppKernel.ui.bindLayer(layer, node);
- }
- }
- }
|