import { RDLeaderboardEntity } from "./RDLeaderboardEntity"; import { RDPlatformType } from "./RDPlatformType"; import { RDPlatform } from "./RDPlatform"; import { RDWeiXinMiniPlatform } from "./platform/RDWeiXinMiniPlatform"; import { RDPCPlatform } from "./platform/RDPCPlatform"; import { RDTTMiniPlatform } from "./platform/RDTTMiniPlatform"; import { RDVIVOMiniPlatform } from "./platform/RDVIVOMiniPlatform"; import { RDOPPOMiniPlatform } from "./platform/RDOppoMiniPlatform"; export class RDPlatformManager { private _type: RDPlatformType = RDPlatformType.None; private rdPlatform: RDPlatform = null; private static _instance: RDPlatformManager = new RDPlatformManager(); public static getInstance(): RDPlatformManager { return this._instance; } /** * 游戏启动时,需要初始化平台类型 * @param type */ public init(type: RDPlatformType = RDPlatformType.None): void { //当前运行平台为 this._type = type; console.log("当前运行平台为", this._type); switch (this._type) { case RDPlatformType.None: this.rdPlatform = new RDPCPlatform(); break; case RDPlatformType.WeixinMinGame: this.rdPlatform = new RDWeiXinMiniPlatform(); break; case RDPlatformType.TTMinGame: this.rdPlatform = new RDTTMiniPlatform(); break; case RDPlatformType.VIVOGame: this.rdPlatform = new RDVIVOMiniPlatform(); break; case RDPlatformType.OPPOGame: this.rdPlatform = new RDOPPOMiniPlatform(); break; case RDPlatformType.Facebook: break; case RDPlatformType.Weixin: break; case RDPlatformType.MobileNative: break; case RDPlatformType.Web: break; case RDPlatformType.Ios: break; } if (this.sdk) this.sdk.init() } /** * 调用底层平台SDK方法 * @param type * @param content */ public sendData(type: number, content: any): void { this.sdk.sendData(type, content); } /** * 供底层平台SDK调用 * @param type * @param content */ public receiveData(type: number, content: string): void { this.sdk.receiveData(type, content); } /** * 加载数据 * @param keys * @param completeCallback * @param errorCallback */ public loadStorageData(keys: string[], completeCallback: (resource: any) => void, errorCallback: (error: Error) => void): void { if(this.sdk) { this.sdk.loadStorageData(keys, completeCallback, errorCallback); } } /** * 数据持久化 * @param data * @param completeCallback */ public flushStorageData(data: any, completeCallback: (error: Error) => void): void { this.sdk.flushStorageData(data, completeCallback); } /** * 提交分数 * @param content * @param completeCallback */ public submitScore(content: any, completeCallback: (error: Error) => void): void { this.sdk.submitScore(content, completeCallback); } /** * 邀请好友 * @param completeCallback */ public invite(completeCallback: (error: Error) => void): void { this.sdk.invite(completeCallback); } /** * 挑战好友 * @param completeCallback */ public challenge(completeCallback: (error: Error) => void): void { this.sdk.challenge(completeCallback); } /** * 获取排行榜数据 * @param completeCallback * @param errorCallback */ public getLeaderboard(completeCallback: (resource: RDLeaderboardEntity[]) => void, errorCallback: (error: Error) => void): void { this.sdk.getLeaderboard(completeCallback, errorCallback); } /** * 是否显示录制视频 */ public isShowVideo():boolean{ return this.sdk.canShowVideo(); } get sdk() { return this.rdPlatform; } }