/** * ZMSDK:该类是外界调用SDK的唯一调用接口,包括消息的发送和接受,控制权限,分屏,断点恢复,用户管理和回放。 */ import * as SDKLogicsCore from "./SDKLogics/SDKLogicsCore"; import * as SDKRegistCommand from "./SDKConst/SDKRegistCommand"; import SDKPacket from "./SDKNetwork/SDKPacket"; import SDKApp from "./SDKBase/SDKApp"; import SDKPacketPool from "./SDKNetwork/SDKPacketPool"; let RUL: string = window.location.search; /** * 初始化SDK */ function SDKInit() { parseUrl(RUL); SDKApp.instance().init(); SDKRegistCommand.registCommands(); console.log("SDK init......",new Date().getTime()); if (isGameClass()) { sendMsg(SDKRegistCommand.GAEM_READY); } if (isSplitScreen()) { //子iframe向老师发送 console.log("子iframe初始化。。。。"); sendMsg(SDKRegistCommand.SPLIT_GAME_READY,SDKLogicsCore.parameterVo.userId); } }; /** * 解析用户URL参数 * @param url 用户游戏加载地址 */ function parseUrl(url: string): boolean { if (url == undefined || url == "") { return false; } if (SDKLogicsCore.parameterVo.isInit) { return false; } return SDKLogicsCore.parameterVo.parseUrl(url); } /** * 课件id */ export function lessonId(): number { if (!SDKLogicsCore.parameterVo.isInit) { parseUrl(RUL); } return SDKLogicsCore.parameterVo.lessonId; } /** * 游戏id */ export function gameId(): number { if (!SDKLogicsCore.parameterVo.isInit) { parseUrl(RUL); } return SDKLogicsCore.parameterVo.gameId; } /** * 是否是分屏模式 */ export function isSplitScreen(): boolean { if (!SDKLogicsCore.parameterVo.isInit) { parseUrl(RUL); } return SDKLogicsCore.parameterVo.isSplitScreen(); } /** * 是否是预览模式 */ export function isGamePreview(): boolean { if (!SDKLogicsCore.parameterVo.isInit) { parseUrl(RUL); } return SDKLogicsCore.parameterVo.isGamePreview(); } /** * 是否是教学模式 */ export function isGameClass(): boolean { if (!SDKLogicsCore.parameterVo.isInit) { parseUrl(RUL); } return SDKLogicsCore.parameterVo.isGameClass(); } /** * 是否是监课模式 */ export function isObserverClass(): boolean { if (!SDKLogicsCore.parameterVo.isInit) { parseUrl(RUL); } return SDKLogicsCore.parameterVo.isGameObserver(); } /** * 是否是回放模式 */ export function isGameReplay(): boolean { if (!SDKLogicsCore.parameterVo.isInit) { parseUrl(RUL); } return SDKLogicsCore.parameterVo.isGameReplay(); } /** * 是否是老师 */ export function isTeacher(): boolean { if (!SDKLogicsCore.parameterVo.isInit) { parseUrl(RUL); } return SDKLogicsCore.parameterVo.isTeacher(); } /** * 是否是学生 */ export function isStudent(): boolean { if (!SDKLogicsCore.parameterVo.isInit) { parseUrl(RUL); } return SDKLogicsCore.parameterVo.isStudent(); } /** * 自己是否是控制者 */ export function isOwn(): boolean { return SDKLogicsCore.controllState.isOwn(); } /** * 自己是否是完全控制着。。。只能有且只有自己一个人操作 */ export function isFullOwn(): boolean { return SDKLogicsCore.controllState.isFullOwn(); } /** * 是否是观察者 */ export function isObserver(): boolean { if (!SDKLogicsCore.parameterVo.isInit) { parseUrl(RUL); } return SDKLogicsCore.parameterVo.isObserver(); } /** * 是否是销售 */ export function isSeller(): boolean{ if (!SDKLogicsCore.parameterVo.isInit) { parseUrl(RUL); } return SDKLogicsCore.parameterVo.isSeller(); } /** * 被监课对象是不是老师 */ export function isOberverTeacher(): boolean{ if (!SDKLogicsCore.parameterVo.isInit) { parseUrl(RUL); } return SDKLogicsCore.parameterVo.isOberverTeacher(); } export function isObserverOwn(): boolean{ return SDKLogicsCore.controllState.isObserverOwn(); } export function isOberverFullOwn(): boolean{ return SDKLogicsCore.controllState.isOberverFullOwn(); } /** * 发送消息 * @param name 消息名称 * @param data 消息数据 * @param target 发送的目标 */ export function sendMsg(name: string, data: any = null, isMainIframe: boolean = true, target?: Window) { SDKApp.instance().transceiver.sendMsg(name, data, isMainIframe, target); } /** * 发送消息包 */ // export function sendPacket(packet: SDKPacket, target: Window = window.parent) { // SDKApp.instance().transceiver.sendPacket(packet, target); // } /** * 处理消息包,不向学生或者老师发送,直接处理相应的CMD * @param packet 消息包 */ export function handlePacket(packet: SDKPacket): void { SDKApp.instance().packetHandler.dispatcherCMD(packet); } /** * 处理消息,不向学生或者老师发送,直接处理相应的CMD * @param name 消息名称 * @param data 消息数据 */ export function handleMessage(name: string, data: any = null){ let packet : SDKPacket; packet = SDKPacketPool.Acquire(name); packet.data = data; SDKApp.instance().packetHandler.dispatcherCMD(packet); } /** * 注册消息处理对象 * @param name 消息名称 * @param value 消息处理对象。。。SKDCommandBase的子对象 */ export function registerHandler(name: string, value: any): void { SDKApp.instance().transceiver.packetHandler.registerHandler(name, value); } /** * 注销消息处理对象 * @param name 消息名称 */ export function unRegisterHandler(name: string): void { SDKApp.instance().transceiver.packetHandler.unRegisterHandler(name); } export function initView():void{ SDKApp.instance().initView(); } export function printstr(str):void{ console.info(str); } SDKInit();