import SDKCommandBase from "./SDKCommandBase"; import * as SDKLogicsCore from "../SDKLogics/SDKLogicsCore"; import SDKPacket from "../SDKNetwork/SDKPacket"; import SDKPacketPool from "../SDKNetwork/SDKPacketPool"; import SDKApp from "../SDKBase/SDKApp"; import SDKUserInfo from "../SDKLogics/SDKUserInfo"; import * as ZMSDK from "../ZMSDK"; import SDKWebDashBoradController from "../SDKController/SDKWebDashBoradController"; import SDKContrllerManager from "../SDKController/SDKContrllerManager"; import * as SDKControllerConst from "../SDKConst/SDKControllerConst"; /** * 控制权限的改变 */ export default class SDKControllerChangeCMD extends SDKCommandBase { public execute(data: any): void { super.execute(data); console.log("SDKControllerChangeCMD..........", data); SDKLogicsCore.controllState.controllerId = data; if (ZMSDK.isObserverClass() && SDKLogicsCore.parameterVo.isOberverTeacher()) { //监课老师的教学模式 let controller: SDKWebDashBoradController; controller = SDKContrllerManager.instance().getController(SDKControllerConst.WEB_DASHBORAD) as SDKWebDashBoradController; if (controller) { controller.setController(data); } } let packet: SDKPacket; packet = SDKPacketPool.Acquire(this._packet.name); this._packet.clone(packet); packet.name = "gameControllerChange"; SDKApp.instance().transceiver.packetHandler.dispatcherCMD(packet); //老师收回控制权限,控制者的界面同步到其他人那里 if (SDKLogicsCore.parameterVo.isTeacher() && SDKLogicsCore.controllState.controllerId != '-1' && SDKLogicsCore.controllState.controllerId != '' && SDKLogicsCore.controllState.controllerId == SDKLogicsCore.parameterVo.userId) { this.syncToOther(SDKLogicsCore.controllState.controllerId); } this.recylePacket(); } private syncToOther(controllerId: string): void { let userInfo: SDKUserInfo; let packet: SDKPacket; userInfo = SDKLogicsCore.userInfos.getUserInfoById(controllerId); if (!userInfo) { return; } packet = userInfo.getLastMainPacket(); if (!packet) { return; } if (packet.name != 'gameChangeScene') { this.checkChangeScene(packet); SDKApp.instance().transceiver.sendPacket(packet); } else { let sceneName : string = packet.data; SDKApp.instance().transceiver.sendPacket(packet); this.initScene(sceneName); } } private checkChangeScene(packet: SDKPacket): void { let tempPacket: SDKPacket; console.log("控制权限切换,同步场景。。。。。"); tempPacket = SDKPacketPool.Acquire(packet.name); packet.clone(tempPacket); tempPacket.name = 'gameChangeScene'; tempPacket.sendId = SDKLogicsCore.parameterVo.userId; tempPacket.data = packet.secene; SDKApp.instance().transceiver.sendPacket(tempPacket); } private initScene(sceneName : string): void { let tempPacket: SDKPacket; console.log("控制权限切换,初始化场景。。。。。"); tempPacket = SDKPacketPool.Acquire('gameSceneReset'); tempPacket.sendId = SDKLogicsCore.parameterVo.userId; tempPacket.isMainFrame = false; tempPacket.data = sceneName; SDKApp.instance().transceiver.sendPacket(tempPacket); } }