RDPlatformManager.ts 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. import { RDLeaderboardEntity } from "./RDLeaderboardEntity";
  2. import { RDPlatformType } from "./RDPlatformType";
  3. import { RDPlatform } from "./RDPlatform";
  4. import { RDWeiXinMiniPlatform } from "./platform/RDWeiXinMiniPlatform";
  5. import { RDPCPlatform } from "./platform/RDPCPlatform";
  6. import { RDTTMiniPlatform } from "./platform/RDTTMiniPlatform";
  7. import { RDVIVOMiniPlatform } from "./platform/RDVIVOMiniPlatform";
  8. import { RDOPPOMiniPlatform } from "./platform/RDOppoMiniPlatform";
  9. export class RDPlatformManager {
  10. private _type: RDPlatformType = RDPlatformType.None;
  11. private rdPlatform: RDPlatform = null;
  12. private static _instance: RDPlatformManager = new RDPlatformManager();
  13. public static getInstance(): RDPlatformManager {
  14. return this._instance;
  15. }
  16. /**
  17. * 游戏启动时,需要初始化平台类型
  18. * @param type
  19. */
  20. public init(type: RDPlatformType = RDPlatformType.None): void {
  21. //当前运行平台为
  22. this._type = type;
  23. console.log("当前运行平台为", this._type);
  24. switch (this._type) {
  25. case RDPlatformType.None:
  26. this.rdPlatform = new RDPCPlatform();
  27. break;
  28. case RDPlatformType.WeixinMinGame:
  29. this.rdPlatform = new RDWeiXinMiniPlatform();
  30. break;
  31. case RDPlatformType.TTMinGame:
  32. this.rdPlatform = new RDTTMiniPlatform();
  33. break;
  34. case RDPlatformType.VIVOGame:
  35. this.rdPlatform = new RDVIVOMiniPlatform();
  36. break;
  37. case RDPlatformType.OPPOGame:
  38. this.rdPlatform = new RDOPPOMiniPlatform();
  39. break;
  40. case RDPlatformType.Facebook:
  41. break;
  42. case RDPlatformType.Weixin:
  43. break;
  44. case RDPlatformType.MobileNative:
  45. break;
  46. case RDPlatformType.Web:
  47. break;
  48. case RDPlatformType.Ios:
  49. break;
  50. }
  51. if (this.sdk) this.sdk.init()
  52. }
  53. /**
  54. * 调用底层平台SDK方法
  55. * @param type
  56. * @param content
  57. */
  58. public sendData(type: number, content: any): void {
  59. this.sdk.sendData(type, content);
  60. }
  61. /**
  62. * 供底层平台SDK调用
  63. * @param type
  64. * @param content
  65. */
  66. public receiveData(type: number, content: string): void {
  67. this.sdk.receiveData(type, content);
  68. }
  69. /**
  70. * 加载数据
  71. * @param keys
  72. * @param completeCallback
  73. * @param errorCallback
  74. */
  75. public loadStorageData(keys: string[], completeCallback: (resource: any) => void, errorCallback: (error: Error) => void): void {
  76. if(this.sdk)
  77. {
  78. this.sdk.loadStorageData(keys, completeCallback, errorCallback);
  79. }
  80. }
  81. /**
  82. * 数据持久化
  83. * @param data
  84. * @param completeCallback
  85. */
  86. public flushStorageData(data: any, completeCallback: (error: Error) => void): void {
  87. this.sdk.flushStorageData(data, completeCallback);
  88. }
  89. /**
  90. * 提交分数
  91. * @param content
  92. * @param completeCallback
  93. */
  94. public submitScore(content: any, completeCallback: (error: Error) => void): void {
  95. this.sdk.submitScore(content, completeCallback);
  96. }
  97. /**
  98. * 邀请好友
  99. * @param completeCallback
  100. */
  101. public invite(completeCallback: (error: Error) => void): void {
  102. this.sdk.invite(completeCallback);
  103. }
  104. /**
  105. * 挑战好友
  106. * @param completeCallback
  107. */
  108. public challenge(completeCallback: (error: Error) => void): void {
  109. this.sdk.challenge(completeCallback);
  110. }
  111. /**
  112. * 获取排行榜数据
  113. * @param completeCallback
  114. * @param errorCallback
  115. */
  116. public getLeaderboard(completeCallback: (resource: RDLeaderboardEntity[]) => void, errorCallback: (error: Error) => void): void {
  117. this.sdk.getLeaderboard(completeCallback, errorCallback);
  118. }
  119. /**
  120. * 是否显示录制视频
  121. */
  122. public isShowVideo():boolean{
  123. return this.sdk.canShowVideo();
  124. }
  125. get sdk() {
  126. return this.rdPlatform;
  127. }
  128. }