| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import { _decorator, Component, EventKeyboard, input, Input, KeyCode, Node, WebView } from 'cc';
- import { AppKernel } from '../../app/AppKernel';
- import AppConfig from '@scripts/app/AppConfig';
- import { ANDROID, IOS } from 'cc/env';
- import { getUrlParams } from '@scripts/utils/Helper';
- import { WebViewHandler } from './WebViewHandler';
- const { ccclass, property } = _decorator;
- interface IFrameEvent {
- cmd?: string;
- [key: string]: string | undefined;
- }
- const GAME_FRAME = "http://192.168.1.3:3001";
- @ccclass('GameController')
- export class GameController extends Component {
- @property(WebView)
- webView: WebView | null = null;
- @property(Node)
- loadingNode: Node | null = null;
- private _gameWeb: WebViewHandler | null = null;
- protected start(): void {
- if (!this.webView) {
- console.error('[GameController] WebView is not assigned.');
- return;
- }
- this._gameWeb = new WebViewHandler(
- this.webView,
- GAME_FRAME,
- this as any,
- AppConfig.GameScheme
- )
- AppKernel.services.gameService.onEntered();
- }
- protected onDestroy(): void {
- this._gameWeb?.clear();
- this._gameWeb = null;
- AppKernel.services.gameService.onExited();
- }
- onHandleMsg(data: IFrameEvent) {
- console.log(">>>>>>>>>>>> handleWebEvent: ", data);
- switch (data.cmd) {
- case "game_ready":
- const game_url = AppKernel.stores.mainStore.gameLink;
- if (!this._gameWeb) {
- console.warn('[GameController] Ignored game_ready after WebView disposal.');
- return;
- }
- this._gameWeb.sendMessage({ cmd: "update_gamelink", url: game_url })
- break;
- case "game_exit":
- this.exitGame();
- break;
- }
- }
- async exitGame(): Promise<void> {
- await AppKernel.services.gameService.exitGame();
- }
- }
|