MGOBE.d.ts 68 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439
  1. declare namespace MGOBE {
  2. /********************************* 玩家信息 ************************************/
  3. /**
  4. * @name 玩家信息
  5. * @description 该对象记录了玩家的基本信息,默认全部为空。成功初始化Listener之后,id、openId 属性将生效。
  6. * @description 玩家进入房间后,该对象的属性与 roomInfo.playerList 中当前玩家信息保持一致。
  7. * @description 玩家 ID 是 MGOBE 后台生成的 ID,openId 是开发者初始化时候使用的 ID。openId 只有初始化 Listener 的时候使用,其它接口的“玩家 ID”均指后台生成的 ID。
  8. * @field {string} id 玩家ID
  9. * @field {string} openId 玩家openId
  10. * @field {string} name 玩家昵称
  11. * @field {string} teamId 队伍ID
  12. * @field {number} customPlayerStatus 自定义玩家状态
  13. * @field {string} customProfile 自定义玩家属性
  14. * @field {MGOBE.types.NetworkState} commonNetworkState 房间网络状态
  15. * @field {MGOBE.types.NetworkState} relayNetworkState 帧同步网络状态
  16. */
  17. export const Player: {
  18. readonly id: string;
  19. readonly openId: string;
  20. readonly name: string;
  21. readonly teamId: string;
  22. readonly customPlayerStatus: number;
  23. readonly customProfile: string;
  24. readonly commonNetworkState: MGOBE.types.NetworkState;
  25. readonly relayNetworkState: MGOBE.types.NetworkState;
  26. };
  27. /********************************* SDK 枚举 *********************************/
  28. /**
  29. * @name 操作类型枚举
  30. * @enum {MGOBE.types.CreateRoomType} CreateRoomType 创建房间方式
  31. * @enum {MGOBE.types.MatchType} MatchType 匹配类型
  32. * @enum {MGOBE.types.NetworkState} NetworkState 网络状态
  33. * @enum {MGOBE.types.FrameSyncState} FrameSyncState 房间帧同步状态
  34. * @enum {MGOBE.types.RecvType} RecvType 消息接收者范围
  35. */
  36. export const ENUM: {
  37. readonly CreateRoomType: typeof MGOBE.types.CreateRoomType;
  38. readonly MatchType: typeof MGOBE.types.MatchType;
  39. readonly NetworkState: typeof MGOBE.types.NetworkState;
  40. readonly FrameSyncState: typeof MGOBE.types.FrameSyncState;
  41. readonly RecvType: typeof MGOBE.types.RecvType;
  42. };
  43. /********************************* SDK 随机数工具 *********************************/
  44. export const RandomUtil: {
  45. /**
  46. * @name 初始化随机数
  47. * @description init 方法接受一个 seed 为参数,RandomUtil 在后续生成随机数的过程中将以 seed 为种子。使用相同的 seed 初始化,调用 random 方法生成的随机数序列相同。
  48. * @param {number} seed 随机数种子
  49. * @returns {void}
  50. */
  51. init(seed: number): void;
  52. /**
  53. * @name 生成随机数
  54. * @description 如果种子相同、初始化后调用次数相同,生成的随机数将相同。
  55. * @returns {number} 随机数
  56. */
  57. random(): number;
  58. };
  59. /********************************* SDK 日志打印 ************************************/
  60. export class DebuggerLog {
  61. static enable: boolean;
  62. static callback: (...logs: any[]) => any;
  63. }
  64. export const StatCallbacks: {
  65. onPingTime(time: number): any;
  66. onFitFrameTime(deltaTime: number): any;
  67. onBstFrameRate(deltaTime: number): any;
  68. onRenderFrameRate(deltaTime: number): any;
  69. };
  70. /********************************* Room 广播回调 *********************************/
  71. class RoomBroadcastHandler {
  72. /**
  73. * @name 匹配结束广播
  74. * @description onMatch 广播表示组队匹配结束。匹配成功或者匹配超时后,全部小组成员都会收到该广播。
  75. * @description 使用 event.data.errCode 判断是否匹配成功。
  76. * @description 注意该方法为 Room 类的静态方法。
  77. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.MatchBst>} event 回调参数
  78. * @returns {void}
  79. */
  80. static onMatch: (event: MGOBE.types.BroadcastEvent<MGOBE.types.MatchBst>) => any;
  81. /**
  82. * @name 组队匹配超时广播
  83. * @description onCancelMatch 广播表示取消组队匹配。全部小组成员都会收到该广播。
  84. * @description 注意该方法为 Room 类的静态方法。
  85. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.CancelMatchBst>} event 回调参数
  86. * @returns {void}
  87. */
  88. static onCancelMatch: (event: MGOBE.types.BroadcastEvent<MGOBE.types.CancelMatchBst>) => any;
  89. /**
  90. * @name 新玩家加入房间广播回调接口
  91. * @description onJoinRoom 广播表示该房间有新玩家加入。房间内全部成员都会收到该广播。
  92. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.JoinRoomBst>} event 回调参数
  93. * @returns {void}
  94. */
  95. onJoinRoom: (event: MGOBE.types.BroadcastEvent<MGOBE.types.JoinRoomBst>) => any;
  96. /**
  97. * @name 玩家退出房间广播回调接口
  98. * @description onLeaveRoom 广播表示该房间有玩家退出。房间内全部成员都会收到该广播。
  99. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.LeaveRoomBst>} event 回调参数
  100. * @returns {void}
  101. */
  102. onLeaveRoom: (event: MGOBE.types.BroadcastEvent<MGOBE.types.LeaveRoomBst>) => any;
  103. /**
  104. * @name 房间被解散广播回调接口
  105. * @description onDismissRoom 广播表示房主解散了该房间。房间内全部成员都会收到该广播。
  106. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.DismissRoomBst>} event 回调参数
  107. * @returns {void}
  108. */
  109. onDismissRoom: (event: MGOBE.types.BroadcastEvent<MGOBE.types.DismissRoomBst>) => any;
  110. /**
  111. * @name 房主修改房间信息广播回调接口
  112. * @description onChangeRoom 广播表示房主修改了该房间属性。房间内全部成员都会收到该广播。
  113. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.ChangeRoomBst>} event 回调参数
  114. * @returns {void}
  115. */
  116. onChangeRoom: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ChangeRoomBst>) => any;
  117. /**
  118. * @name 房间内玩家被移除广播回调接口
  119. * @description onRemovePlayer 广播表示有玩家被房主移除。房间内全部成员都会收到该广播。
  120. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.RemovePlayerBst>} event 回调参数
  121. * @returns {void}
  122. */
  123. onRemovePlayer: (event: MGOBE.types.BroadcastEvent<MGOBE.types.RemovePlayerBst>) => any;
  124. /**
  125. * @name 收到房间内其他玩家消息广播回调接口
  126. * @description onRecvFromClient 广播表示收到来自 ID 为 sendPlayerId 的玩家消息。
  127. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.RecvFromClientBst>} event 回调参数
  128. * @returns {void}
  129. */
  130. onRecvFromClient: (event: MGOBE.types.BroadcastEvent<MGOBE.types.RecvFromClientBst>) => any;
  131. /**
  132. * @name 收到自定义服务消息广播回调接口
  133. * @description onRecvFromGameSvr 广播表示收到来自自定义服务的消息。
  134. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.RecvFromGameSvrBst>} event 回调参数
  135. * @returns {void}
  136. */
  137. onRecvFromGameSvr: (event: MGOBE.types.BroadcastEvent<MGOBE.types.RecvFromGameSvrBst>) => any;
  138. /**
  139. * @name 房间内玩家网络状态变化广播回调接口
  140. * @description onChangePlayerNetworkState 广播表示 ID 为 changePlayerId 的玩家网络状态发生变化。
  141. * @description 玩家在房间中、帧同步中的网络变化都会触发该广播,因此 networkState 将有四中情况,分别表示房间中上下线、帧同步中上下线。
  142. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.ChangePlayerNetworkStateBst>} event 回调参数
  143. * @returns {void}
  144. */
  145. onChangePlayerNetworkState: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ChangePlayerNetworkStateBst>) => any;
  146. /**
  147. * @name 玩家自定义状态变化广播回调接口
  148. * @description onChangeCustomPlayerStatus 广播表示房间内 ID 为 changePlayerId 的玩家状态发生变化。玩家状态由开发者自定义。
  149. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.ChangeCustomPlayerStatusBst>} event 回调参数
  150. * @returns {void}
  151. */
  152. onChangeCustomPlayerStatus: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ChangeCustomPlayerStatusBst>) => any;
  153. /**
  154. * @name 开始帧同步广播回调接口
  155. * @description onStartFrameSync 广播表示房间开始帧同步。收到该广播后将持续收到 onRecvFrame 广播。
  156. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.StartFrameSyncBst>} event 回调参数
  157. * @returns {void}
  158. */
  159. onStartFrameSync: (event: MGOBE.types.BroadcastEvent<MGOBE.types.StartFrameSyncBst>) => any;
  160. /**
  161. * @name 停止帧同步广播回调接口
  162. * @description onStopFrameSync 广播表示房间停止帧同步。收到该广播后将不再收到 onRecvFrame 广播。
  163. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.StopFrameSyncBst>} event 回调参数
  164. * @returns {void}
  165. */
  166. onStopFrameSync: (event: MGOBE.types.BroadcastEvent<MGOBE.types.StopFrameSyncBst>) => any;
  167. /**
  168. * @name 房间帧消息广播回调接口
  169. * @description onRecvFrame 广播表示收到一个帧 frame,frame 的内容由多个 MGOBE.types.FrameItem 组成,即一帧时间内房间内所有玩家向服务器发送帧消息的集合。
  170. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.RecvFrameBst>} event 回调参数
  171. * @returns {void}
  172. */
  173. onRecvFrame: (event: MGOBE.types.BroadcastEvent<MGOBE.types.RecvFrameBst>) => any;
  174. /**
  175. * @name 自动补帧失败回调接口
  176. * @description onAutoRequestFrameError 表示自动补帧失败,在初始化 Listener 时开启自动补帧后才能触发。
  177. * @description 发生补帧失败后,将不能收到帧广播,开发者可以使用 retryAutoRequestFrame 方法重试自动补帧。
  178. * @param {MGOBE.types.BroadcastEvent<MGOBE.types.ResponseEvent<MGOBE.types.RequestFrameRsp>>} event 回调参数
  179. * @returns {void}
  180. */
  181. onAutoRequestFrameError: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ResponseEvent<MGOBE.types.RequestFrameRsp>>) => any;
  182. }
  183. /********************************* SDK Room对象 *********************************/
  184. export class Room extends RoomBroadcastHandler {
  185. /**
  186. * @name 构造器
  187. * @description 实例化 Room 对象时可以传入一个 MGOBE.types.RoomInfo 对象 roomInfo,后续接口调用都将基于该 roomInfo,例如修改该房间的属性、接收该房间的广播。
  188. * @description 如果不传 roomInfo 参数,开发者可以通过直接调用 initRoom、createRoom、joinRoom 等方法获取 roomInfo。
  189. * @description Room 对象会自动维护内部的 roomInfo 属性保持最新,开发者可以直接通过访问该属性获得最新的房间信息。
  190. * @param {MGOBE.types.RoomInfo} roomInfo 房间信息(可选)
  191. * @returns {void}
  192. */
  193. constructor(roomInfo?: MGOBE.types.RoomInfo);
  194. /**
  195. * @name 房间信息
  196. * @description roomInfo 为 Room 实例的属性,类型为 MGOBE.types.RoomInfo,调用 Room 相关的接口会导致该属性发生变化。
  197. */
  198. roomInfo: MGOBE.types.RoomInfo;
  199. /**
  200. * @name 获取房间列表
  201. * @description 调用结果将在 callback 中异步返回。
  202. * @description 该接口为 Room 的静态方法,只能通过 Room.getRoomList 方式调用,Room 实例无法直接访问该方法。
  203. * @param {MGOBE.types.GetRoomListPara} getRoomListPara 获取房间列表参数
  204. * @param {MGOBE.types.ReqCallback<MGOBE.types.GetRoomListRsp>} callback 响应回调函数
  205. * @returns {void}
  206. */
  207. static getRoomList(getRoomListPara: MGOBE.types.GetRoomListPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.GetRoomListRsp>): void;
  208. /**
  209. * @name 根据房间 ID 获取房间
  210. * @description 调用结果将在 callback 中异步返回。
  211. * @description 该接口为 Room 的静态方法,只能通过 Room.getRoomByRoomId 方式调用,Room 实例无法直接访问该方法。
  212. * @description 如果参数中的 roomId 为空字符串,将查询玩家所在的房间。
  213. * @param {MGOBE.types.GetRoomByRoomIdPara} getRoomByRoomIdPara 获取房间参数
  214. * @param {MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>} callback 响应回调函数
  215. * @returns {void}
  216. */
  217. static getRoomByRoomId(getRoomByRoomIdPara: MGOBE.types.GetRoomByRoomIdPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>): void;
  218. /**
  219. * @name 查询玩家所在的房间信息
  220. * @description 调用结果将在 callback 中异步返回。
  221. * @description 该接口为 Room 的静态方法,只能通过 Room.getMyRoom 方式调用,Room 实例无法直接访问该方法。
  222. * @param {MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>} callback 响应回调函数
  223. * @returns {void}
  224. */
  225. static getMyRoom(callback?: MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>): void;
  226. /**
  227. * @name 初始化 Room 实例的房间信息,即更新 roomInfo 属性
  228. * @description initRoom 会更新 Room 实例的 roomInfo,接受 MGOBE.types.RoomInfo 或 { id: string; } 类型的参数。
  229. * @description 如果参数为 MGOBE.types.RoomInfo 类型,SDK将自动更新 WebSocket 连接。如果参数为 { id: string; } 类型,需要调用 getRoomDetail 或 joinRoom 方法才能更新 WebSocket 连接,否则可能不能及时收到房间广播。
  230. * @description 如果不传参数,该方法将清空 Room 实例的 roomInfo 属性,此时调用 getRoomDetail 方法将查询玩家所在的房间。
  231. * @description 当玩家需要加入指定 id 房间时,需要使用该接口初始化 Room 实例的 roomInfo 属性,然后才能通过调用 joinRoom 方法加入该 Room 实例所代表的房间。
  232. * @param {MGOBE.types.RoomInfo 或 { id: string }} roomInfo 初始化参数,id表示房间id
  233. * @returns {void}
  234. */
  235. initRoom(roomInfo?: MGOBE.types.RoomInfo | {
  236. id: string;
  237. }): void;
  238. /**
  239. * @name 房间信息更新回调接口
  240. * @description onUpdate 表明 Room 实例的 roomInfo 信息发生变化,这种变化原因包括各种房间操作、房间广播、本地网络状态变化等。
  241. * @description 开发者可以在该接口中更新游戏画面,或者使用 networkState 属性判断网络状态。
  242. * @param {Room} room 更新的Room实例(可选)
  243. * @returns {void}
  244. */
  245. onUpdate(room?: Room): void;
  246. /**
  247. * @name 该属性为只读属性,用于获取客户端本地 SDK 网络状态
  248. * @description 该属性类型为 ```{ COMMON: boolean, RELAY: boolean }``` 。COMMON 表示房间网络状态;RELAY 表示帧同步网络状态。为 true 时表示网络已连接,为 false 时表示网络未连接。
  249. * @description 该网络状态与玩家信息中的网络状态(Player.commonNetworkState/Player.relayNetworkState)概念不同,前者表示本地 socket 状态,后者表示玩家在 MGOBE 后台中的状态。
  250. * @description 本地 socket 网络状态变化时,onUpdate 将被触发。
  251. */
  252. readonly networkState: {
  253. COMMON: boolean;
  254. RELAY: boolean;
  255. };
  256. /**
  257. * @name 创建房间
  258. * @description createRoom 调用结果将在 callback 中异步返回。操作成功后,roomInfo 属性将更新。
  259. * @description 创建房间成功后,玩家自动进入该房间,因此无法继续调用 joinRoom、matchPlayers 等方法,可以利用房间ID邀请其他玩家进入该房间。
  260. * @param {MGOBE.types.CreateRoomPara} createRoomPara 创建房间参数
  261. * @param {MGOBE.types.ReqCallback<MGOBE.types.CreateRoomRsp>} callback 响应回调函数
  262. * @returns {void}
  263. */
  264. createRoom(createRoomPara: MGOBE.types.CreateRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.CreateRoomRsp>): void;
  265. /**
  266. * @name 创建团队房间
  267. * @description createTeamRoom 调用结果将在 callback 中异步返回。操作成功后,roomInfo 属性将更新。
  268. * @description 创建房间成功后,玩家自动进入该房间,因此无法继续调用 joinRoom、matchPlayers 等方法。
  269. * @description 参数中的“房间最大玩家数量”要求能被“队伍数量”整除,创建成功后每个队伍的“队伍最小人数”为1,“队伍最大人数”为整除结果。
  270. * @param {MGOBE.types.CreateTeamRoomPara} createTeamRoomPara 创建团队房间参数
  271. * @param {MGOBE.types.ReqCallback<MGOBE.types.CreateRoomRsp>} callback 响应回调函数
  272. * @returns {void}
  273. */
  274. createTeamRoom(createTeamRoomPara: MGOBE.types.CreateTeamRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.CreateRoomRsp>): void;
  275. /**
  276. * @name 加入房间
  277. * @description joinRoom 调用结果将在 callback 中异步返回。
  278. * @description 该接口加入的房间是 Room 实例所代表的房间,如果该 Room 实例的 roomInfo 不存在 roomId,则需要使用 roomId 通过 init 方法初始化 Room 实例。
  279. * @description 加房成功后,房间内全部成员都会收到一条玩家加入房间广播 onJoinRoom,roomInfo 属性将更新。
  280. * @param {MGOBE.types.JoinRoomPara} joinRoomPara 加入房间参数
  281. * @param {MGOBE.types.ReqCallback<MGOBE.types.JoinRoomRsp>} callback 响应回调函数
  282. * @returns {void}
  283. */
  284. joinRoom(joinRoomPara: MGOBE.types.JoinRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.JoinRoomRsp>): void;
  285. /**
  286. * @name 加入团队房间
  287. * @description joinTeamRoom 调用结果将在 callback 中异步返回。
  288. * @description 与 joinRoom 类似,该接口加入的房间是 Room 实例所代表的房间。teamId 为 roomInfo.teamList 中定义的队伍 ID。
  289. * @param {MGOBE.types.JoinTeamRoomPara} joinTeamRoomPara 加入团队房间参数
  290. * @param {MGOBE.types.ReqCallback<MGOBE.types.JoinRoomRsp>} callback 响应回调函数
  291. * @returns {void}
  292. */
  293. joinTeamRoom(joinTeamRoomPara: MGOBE.types.JoinTeamRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.JoinRoomRsp>): void;
  294. /**
  295. * @name 退出房间
  296. * @description leaveRoom 调用结果将在 callback 中异步返回。退出成功后,房间内剩余成员都会收到一条玩家退出房间广播 onLeaveRoom,roomInfo 属性将更新,roomInfo.playerList 中将没有该玩家信息。
  297. * @description 退房后,如果房间内还剩下其他玩家,则该 room 实例仍然代表退房前的房间,可以继续调用 room.initRoom() 清除房间信息。
  298. * @param {object} para 预留参数,传{}即可
  299. * @param {MGOBE.types.ReqCallback<MGOBE.types.LeaveRoomRsp>} callback 响应回调函数
  300. * @returns {void}
  301. */
  302. leaveRoom(para: {}, callback?: MGOBE.types.ReqCallback<MGOBE.types.LeaveRoomRsp>): void;
  303. /**
  304. * @name 解散房间
  305. * @description dismissRoom 调用结果将在 callback 中异步返回。解散成功后,房间内全部成员都会收到一条解散房间广播 onDismissRoom,roomInfo 属性将更新。
  306. * @description 只有房主有权限解散房间
  307. * @param {object} para 预留参数,传{}即可
  308. * @param {MGOBE.types.ReqCallback<MGOBE.types.DismissRoomRsp>} callback 响应回调函数
  309. * @returns {void}
  310. */
  311. dismissRoom(para: {}, callback?: MGOBE.types.ReqCallback<MGOBE.types.DismissRoomRsp>): void;
  312. /**
  313. * @name 修改房间信息
  314. * @description changeRoom 调用结果将在 callback 中异步返回。修改成功后,房间内全部成员都会收到一条修改房间广播 onChangeRoom,roomInfo 属性将更新。
  315. * @description 只有房主有权限修改房间
  316. * @param {MGOBE.types.ChangeRoomPara} changeRoomPara 修改房间参数
  317. * @param {MGOBE.types.ReqCallback<MGOBE.types.ChangeRoomRsp>} callback 响应回调函数
  318. * @returns {void}
  319. */
  320. changeRoom(changeRoomPara: MGOBE.types.ChangeRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.ChangeRoomRsp>): void;
  321. /**
  322. * @name 修改玩家自定义状态
  323. * @description 修改玩家状态是修改 PlayerInfo 中的 customPlayerStatus 字段,玩家的状态由开发者自定义。
  324. * @description 修改成功后,房间内全部成员都会收到一条修改玩家状态广播 onChangeCustomPlayerStatus,roomInfo 属性将更新。
  325. * @description 每个玩家只能修改自己的状态,调用结果将在 callback 中异步返回。
  326. * @param {MGOBE.types.ChangeCustomPlayerStatusPara} changeCustomPlayerStatusPara 修改玩家状态参数
  327. * @param {MGOBE.types.ReqCallback<MGOBE.types.ChangeCustomPlayerStatusRsp>} callback 响应回调函数
  328. * @returns {void}
  329. */
  330. changeCustomPlayerStatus(changeCustomPlayerStatusPara: MGOBE.types.ChangeCustomPlayerStatusPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.ChangeCustomPlayerStatusRsp>): void;
  331. /**
  332. * @name 移除房间内玩家
  333. * @description 调用结果将在 callback 中异步返回。移除玩家成功后,房间内全部成员都会收到一条移除玩家广播 onRemovePlayer,roomInfo 属性将更新。
  334. * @description 只有房主有权限移除其他玩家
  335. * @param {MGOBE.types.RemovePlayerPara} removePlayerPara 移除房间内玩家参数
  336. * @param {MGOBE.types.ReqCallback<MGOBE.types.RemovePlayerRsp>} callback 响应回调函数
  337. * @returns {void}
  338. */
  339. removePlayer(removePlayerPara: MGOBE.types.RemovePlayerPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.RemovePlayerRsp>): void;
  340. /**
  341. * @name 获取Room实例的房间信息
  342. * @description 该接口获取的是 Room 实例的房间信息,调用结果将在 callback 中异步返回。
  343. * @description 如果该 Room 实例中的 roomInfo 属性没有 ID,该接口将查询玩家所在的房间。
  344. * @description 如果 roomInfo 属性含有 ID,则查询该 ID 对应的房间信息。
  345. * @description 操作成功后,roomInfo 属性将更新。
  346. * @description 如果需要获取指定 ID 的房间信息,可以使用 getRoomByRoomId 方法。
  347. * @param {MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>} callback 响应回调函数
  348. * @returns {void}
  349. */
  350. getRoomDetail(callback?: MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>): void;
  351. /**
  352. * @name 多人在线匹配
  353. * @description 调用该接口后将发起多人在线匹配,callback 将异步返回调用结果。返回码为0表示调用成功。
  354. * @description 调用成功后,Room.onMatch、Room.onCancelMatch 将回调匹配结果。
  355. * @description 该接口需要与匹配规则配合使用,因此,匹配超时时间由开发者在匹配规则中定义。开发者需要在控制台上创建匹配,得到匹配 Code 作为该方法的参数 matchCode。
  356. * @description matchPlayersPara.playerInfo 中的 matchAttributes 数组对应匹配规则中定义的 playerAttributes,playerAttributes 的每一种属性都要填入 matchAttributes 中,name 表示属性名,value 表示玩家该属性的值。
  357. * @param {MGOBE.types.MatchPlayersPara} matchPlayersPara 多人匹配参数
  358. * @param {MGOBE.types.ReqCallback<MGOBE.types.MatchPlayersRsp>} callback 响应回调函数
  359. * @returns {void}
  360. */
  361. matchPlayers(matchPlayersPara: MGOBE.types.MatchPlayersPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.MatchPlayersRsp>): void;
  362. /**
  363. * @name 组队匹配
  364. * @description 调用该接口后将以 playerInfoList 为小组一起进行匹配,callback 将异步返回调用结果。
  365. * @description 调用成功后,Room.onMatch、Room.onCancelMatch 将回调匹配结果。小组成员都可以通过 cancelPlayerMatch 取消匹配。
  366. * @description 匹配成功后,小组成员都会进入同一个房间,同一个队伍。
  367. * @description 该接口需要与匹配规则配合使用,匹配超时时间由开发者在匹配规则中定义。开发者需要在控制台上创建匹配,得到匹配 Code 作为该方法的参数 matchCode。
  368. * @description 根据匹配规则的不同,房间内的队伍可能包含多个小组。比如4V4的匹配(两个队伍),如果小组成员数为2,那么同一个队伍将由两个小组组成。
  369. * @param {MGOBE.types.MatchGroupPara} matchGroupPara 多人匹配参数
  370. * @param {MGOBE.types.ReqCallback<MGOBE.types.MatchGroupRsp>} callback 响应回调函数
  371. * @returns {void}
  372. */
  373. matchGroup(matchGroupPara: MGOBE.types.MatchGroupPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.MatchGroupRsp>): void;
  374. /**
  375. * @name 房间匹配
  376. * @description 调用该接口后将发起房间匹配,匹配结果将在 callback 中异步返回。操作成功后,Room 对象内部 roomInfo 属性将更新。
  377. * @description 房间匹配是指按照传入的参数搜索现存的房间,如果存在,则将玩家加入该房间;如果不存在,则为玩家创建并加入一个新房间。
  378. * @param {MGOBE.types.MatchRoomPara} matchRoomPara 房间匹配参数
  379. * @param {MGOBE.types.ReqCallback<MGOBE.types.MatchRoomSimpleRsp>} callback 响应回调函数
  380. * @returns {void}
  381. */
  382. matchRoom(matchRoomPara: MGOBE.types.MatchRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.MatchRoomSimpleRsp>): void;
  383. /**
  384. * @name 取消玩家匹配
  385. * @description 该接口作用是取消匹配请求,即 matchPlayers、matchGroup 请求。调用结果将在 callback 中异步返回。如果玩家已经在房间中,回调函数将返回 roomInfo。
  386. * @description cancelMatchPara.matchType 需要设置为 MGOBE.ENUM.MatchType.PLAYER_COMPLEX。
  387. * @param {MGOBE.types.CancelMatchPara} cancelMatchPara 取消匹配参数
  388. * @param {MGOBE.types.ReqCallback<MGOBE.types.CancelMatchRsp>} callback 响应回调函数
  389. * @returns {void}
  390. */
  391. cancelPlayerMatch(cancelMatchPara: MGOBE.types.CancelPlayerMatchPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.CancelPlayerMatchRsp>): void;
  392. /**
  393. * @name 开始帧同步
  394. * @description 调用结果将在 callback 中异步返回。调用成功后房间内全部成员将收到 onStartFrameSync 广播。该接口会修改房间帧同步状态为“已开始帧同步”。
  395. * @description 房间内任意一个玩家成功调用该接口将导致全部玩家开始接收帧广播。
  396. * @param {object} para 预留参数,传{}即可
  397. * @param {MGOBE.types.ReqCallback<MGOBE.types.StartFrameSyncRsp>} callback 响应回调函数
  398. * @returns {void}
  399. */
  400. startFrameSync(para: {}, callback?: MGOBE.types.ReqCallback<MGOBE.types.StartFrameSyncRsp>): void;
  401. /**
  402. * @name 停止帧同步
  403. * @description 调用结果将在 callback 中异步返回。调用成功后房间内全部成员将收到 onStopFrameSync 广播。该接口会修改房间帧同步状态为“已停止帧同步”。
  404. * @description 房间内任意一个玩家成功调用该接口将导致全部玩家停止接收帧广播。
  405. * @param {object} para 预留参数,传{}即可
  406. * @param {MGOBE.types.ReqCallback<MGOBE.types.StoptFrameSyncRsp>} callback 响应回调函数
  407. * @returns {void}
  408. */
  409. stopFrameSync(para: {}, callback?: MGOBE.types.ReqCallback<MGOBE.types.StopFrameSyncRsp>): void;
  410. /**
  411. * @name 发送帧同步数据
  412. * @description 帧数据内容 data 类型为普通 object,由开发者自定义,目前支持最大长度不超过1k。
  413. * @description 后台将集合全部玩家的帧数据,并以一定时间间隔(由房间帧率定义)通过 onRecvFrame 广播给各客户端。调用结果将在 callback 中异步返回。
  414. * @description 只有房间处于“已开始帧同步”状态才能调用该接口。
  415. * @param {MGOBE.types.SendFramePara} sendFramePara 发送帧同步数据参数
  416. * @param {MGOBE.types.ReqCallback<MGOBE.types.SendFrameRsp>} callback 响应回调函数
  417. * @returns {void}
  418. */
  419. sendFrame(sendFramePara: MGOBE.types.SendFramePara, callback?: MGOBE.types.ReqCallback<MGOBE.types.SendFrameRsp>): void;
  420. /**
  421. * @name 请求补帧
  422. * @description 调用结果将在 callback 中异步返回。
  423. * @param {MGOBE.types.RequestFramePara} requestFramePara 请求补帧参数
  424. * @param {MGOBE.types.ReqCallback<MGOBE.types.RequestFrameRsp>} callback 响应回调函数
  425. * @returns {void}
  426. */
  427. requestFrame(requestFramePara: MGOBE.types.RequestFramePara, callback?: MGOBE.types.ReqCallback<MGOBE.types.RequestFrameRsp>): void;
  428. /**
  429. * @name 重试自动补帧
  430. * @description 当收到 onAutoRequestFrameError 回调时,表示自动补帧失败,可以使用该方法重新触发自动补帧。
  431. * @returns {void}
  432. */
  433. retryAutoRequestFrame(): void;
  434. /**
  435. * @name 发送消息给房间内玩家
  436. * @description 调用结果将在 callback 中异步返回。调用成功后所指定的接收消息的玩家将收到 onRecvFromClient 广播。
  437. * @description 当 recvType 值为 1 (即 ROOM_ALL ) 时,房间内全部玩家将收到消息;
  438. * @description 当 recvType 值为 2 (即 ROOM_OTHERS ) 时,房间内除消息发送者外的其他玩家将收到消息;
  439. * @description 当 recvType 值为 3 (即 ROOM_SOME ) 时,接收消息玩家才由 recvPlayerList 决定。
  440. * @param {MGOBE.types.SendToClientPara} sendToClientPara 发送消息参数
  441. * @param {MGOBE.types.ReqCallback<MGOBE.types.SendToClientRsp>} callback 响应回调函数
  442. * @returns {void}
  443. */
  444. sendToClient(sendToClientPara: MGOBE.types.SendToClientPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.SendToClientRsp>): void;
  445. /**
  446. * @name 发送消息给实时服务器
  447. * @description 该接口只能在玩家进入房间后调用,调用结果将在 callback 中异步返回。
  448. * @param {MGOBE.types.SendToGameSvrPara} sendToGameSvrPara 发送消息参数
  449. * @param {MGOBE.types.ReqCallback<MGOBE.types.SendToGameSvrRsp>} callback 响应回调函数
  450. * @returns {void}
  451. */
  452. sendToGameSvr(sendToGameSvrPara: MGOBE.types.SendToGameSvrPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.SendToGameSvrRsp>): void;
  453. }
  454. /********************************* SDK Listener对象 *********************************/
  455. export class Listener {
  456. /**
  457. * @name 初始化监听器
  458. * @description 该方法为静态方法。初始化 Listener 时需要传入 gameInfo 和 config 两个参数。
  459. * @description 初始化结果在 callback 中异步返回,错误码为 0 表示初始化成功。
  460. * @param {MGOBE.types.GameInfoPara} gameInfo 游戏信息
  461. * @param {MGOBE.types.ConfigPara} config 游戏配置
  462. * @param {MGOBE.types.ReqCallback<null>} callback 初始化回调函数
  463. * @returns {void}
  464. */
  465. static init(gameInfo: MGOBE.types.GameInfoPara, config: MGOBE.types.ConfigPara, callback: MGOBE.types.ReqCallback<MGOBE.types.InitRsp>): void;
  466. /**
  467. * @name 为Room实例添加广播监听
  468. * @description 该方法为静态方法。实例化 Room 对象之后,需要通过该方法给 Room 注册广播事件监听。
  469. * @description Listener 完成初始化之后才能添加监听。
  470. * @param {Room} room 需要监听的房间对象
  471. * @returns {void}
  472. */
  473. static add(room: Room): void;
  474. /**
  475. * @name 为Room实例移除广播监听
  476. * @description 该方法为静态方法。如果不再需要监听某个 Room 对象的广播事件,可以通过该方法进行移除。
  477. * @param {Room} room 需要移除监听的房间对象
  478. * @returns {void}
  479. */
  480. static remove(room: Room): void;
  481. /**
  482. * @name 移除全部Room对象的广播监听
  483. * @description 该方法为静态方法。
  484. * @returns {void}
  485. */
  486. static clear(): void;
  487. }
  488. /********************************* SDK 错误码 *********************************/
  489. export enum ErrCode {
  490. EC_OK = 0,
  491. EC_REQ_BAD_PKG = 1,
  492. EC_CMD_INVALID = 2,
  493. EC_PARAMS_INVALID = 3,
  494. EC_INNER_ERROR = 4,
  495. EC_TIME_OUT = 5,
  496. EC_SERVER_BUSY = 6,
  497. EC_NO_RIGHT = 7,
  498. EC_ACCESS_CMD_INVALID_ERR = 200,
  499. EC_ACCESS_CMD_GET_TOKEN_ERR = 201,
  500. EC_ACCESS_CMD_TOKEN_PRE_EXPIRE = 202,
  501. EC_ACCESS_CMD_INVALID_TOKEN = 203,
  502. EC_ACCESS_PUSH_SERIALIZE_ERR = 204,
  503. EC_ACCESS_LOGIN_BODY_PARSE_ERR = 205,
  504. EC_ACCESS_CONN_ERR = 206,
  505. EC_ACCESS_GET_RS_IP_ERR = 207,
  506. EC_ACCESS_ADD_COMM_CONN_ERR = 208,
  507. EC_ACCESS_ADD_HEART_CONN_ERR = 209,
  508. EC_ACCESS_ADD_RELAY_CONN_ERR = 210,
  509. EC_ACCESS_HEART_BODY_PARSE_ERR = 211,
  510. EC_ACCESS_GET_COMM_CONNECT_ERR = 212,
  511. EC_ACCESS_GET_RELAY_CONNECT_ERR = 213,
  512. EC_ACCESS_ACCESS_INFO_EMPTY = 214,
  513. EC_ACCESS_PLAYER_DUPLICATE_LOGIN = 215,
  514. EC_ACCESS_NOE_RELAY_OR_STATE_SVR = 216,
  515. EC_PLAYER_GAME_NOT_EXIST = 10000,
  516. EC_PLAYER_SECRET_KEY_FAIL = 10001,
  517. EC_PLAYER_SIGN_ERR = 10002,
  518. EC_PLAYER_DUPLICATE_REQ = 10003,
  519. EC_PLAYER_TIMESTAMP_INVALID = 10004,
  520. EC_PLAYER_QUERY_PLAYER_FAIL = 10005,
  521. EC_PLAYER_ADD_PLAYER_FAIL = 10006,
  522. EC_PLAYER_QUERY_GAME_FAIL = 10007,
  523. EC_PLAYER_RECORD_NUM_ERR = 10008,
  524. EC_PLAYER_GET_TOKEN_FAIL = 10009,
  525. EC_PLAYER_TOKEN_NOT_EXIST = 10010,
  526. EC_PLAYER_TOKEN_INVALID = 10011,
  527. EC_PLAYER_CLEAR_TOKEN_FAIL = 10012,
  528. EC_PLAYER_LOCK_FAIL = 10013,
  529. EC_PLAYER_UNLOCK_FAIL = 10014,
  530. EC_PLAYER_SAVE_TOKEN_FAIL = 10015,
  531. EC_PLAYER_GAME_OUT_OF_SERVICE = 10016,
  532. EC_ROOM_CREATE_NO_PERMISSION = 20000,
  533. EC_ROOM_DESTORY_NO_PERMISSION = 20001,
  534. EC_ROOM_JOIN_NO_PERMISSION = 20002,
  535. EC_ROOM_REMOVE_PLAYER_NO_PERMISSION = 20003,
  536. EC_ROOM_MODIFY_PROPERTIES_NO_PEMISSION = 20004,
  537. EC_ROOM_DISSMISS_NO_PERMISSION = 20005,
  538. EC_ROOM_REMOVE_SELF_NO_PERMISSION = 20006,
  539. EC_ROOM_CHECK_LOGIN_SESSION_ERR = 20007,
  540. EC_ROOM_REMOVE_PLAYER_NOT_IN_ROOM = 20008,
  541. EC_ROOM_PLAYER_ALREADY_IN_ROOM = 20010,
  542. EC_ROOM_PLAYER_NOT_IN_ROOM = 20011,
  543. EC_ROOM_PLAYERS_EXCEED_LIMIT = 20012,
  544. EC_ROOM_JOIN_NOT_ALLOW = 20013,
  545. EC_ROOM_MAX_PLAYERS_INVALID = 20014,
  546. EC_ROOM_CREATE_FAIL = 20015,
  547. EC_ROOM_PLAYER_OFFLINE = 20016,
  548. EC_ROOM_PARAM_PAGE_INVALID = 20017,
  549. EC_ROOM_GET_PLAYER_INFO_ERR = 20050,
  550. EC_ROOM_GET_ROOM_INFO_ERR = 20051,
  551. EC_ROOM_MODIFY_OWNER_ERR = 20052,
  552. EC_ROOM_MAX_ROOM_NUMBER_EXCEED_LIMIT = 20053,
  553. EC_ROOM_REMOVE_REDIS_PLAYER_ROOM_MATCH_ERR = -20052,
  554. EC_ROOM_REMOVE_REDIS_ROOM_INFO_ERR = -20053,
  555. EC_ROOM_REDIS_UPDATE_ERR = -20054,
  556. EC_ROOM_REDIS_GET_LOCK_ERR = -20055,
  557. EC_ROOM_REDIS_CHECK_LOCK_ERR = -20056,
  558. EC_ROOM_REDIS_DEL_LOCK_ERR = -20057,
  559. EC_ROOM_QUERY_PLAYER_ERR = 20060,
  560. EC_ROOM_QUERY_GAME_ERR = 20061,
  561. EC_ROOM_PLAYER_INFO_NOT_EXIST = 20062,
  562. EC_ROOM_GAME_INFO_NOT_EXIST = 20063,
  563. EC_ROOM_HISTORY_INFO_INSERT_ERR = -20064,
  564. EC_ROOM_REGION_INFO_NOT_EXIST = 20065,
  565. EC_ROOM_QUERY_REGION_ERR = 20066,
  566. EC_ROOM_MODIFY_PLAYER_BUSY = 20070,
  567. EC_ROOM_INFO_UNEXIST = 20080,
  568. EC_ROOM_ALLOCATE_RELAYSVR_IP_PORT_ERR = 20090,
  569. EC_ROOM_INVALID_PARAMS_TEAM_ID = 20100,
  570. EC_ROOM_TEAM_MEMBER_LIMIT_EXCEED = 20101,
  571. EC_ROOM_ALLOCATE_SERVICE_FAIL = -20200,
  572. EC_MATCH_NO_ROOM = 30000,
  573. EC_MATCH_TIMEOUT = 30001,
  574. EC_MATCH_LOGIC_ERR = 30002,
  575. EC_MATCH_ERR = 30010,
  576. EC_MATCH_PLAYER_IS_IN_MATCH = 30011,
  577. EC_MATCH_PLAYER_NOT_IN_MATCH = 30012,
  578. EC_MATCH_GET_MATCH_INFO_ERR = 30013,
  579. EC_MATCH_UPDATE_MATCH_INFO_ERR = 30014,
  580. EC_MATCH_CANCEL_FAILED = 30015,
  581. EC_MATCH_GET_PLAYER_LIST_INFO_ERR = 30016,
  582. EC_MATCH_CREATE_ROOM_ERR = 30041,
  583. EC_MATCH_JOIN_ROOM_ERR = 30042,
  584. EC_MATCH_INVALID_PARAMS = 30043,
  585. EC_MATCH_GROUP_NUM_EXCEED_LIMIT = 30044,
  586. EC_MATCH_PLAYER_ID_IS_REPEATED = 30045,
  587. EC_MATCH_CREATE_ROOM_PLAYER_ALREADY_IN_ROOM = 30050,
  588. EC_MATCH_QUERY_PLAYER_ERR = 30100,
  589. EC_MATCH_PLAYER_INFO_NOT_EXIST = 30101,
  590. EC_MATCH_QUERY_GAME_ERR = 30102,
  591. EC_MATCH_GAME_INFO_NOT_EXIST = 30103,
  592. EC_MATCH_QUERY_REGION_ERR = 30104,
  593. EC_MATCH_REGION_INFO_NOT_EXIST = 30105,
  594. EC_MATCH_TEAM_FAIL = 30106,
  595. EC_MATCH_PLAY_RULE_NOT_RUNNING = 30107,
  596. EC_MATCH_PLAY_ATTR_NOT_FOUND = 30108,
  597. EC_MATCH_PLAY_RULE_NOT_FOUND = 30109,
  598. EC_MATCH_PLAY_RULE_ATTR_SEGMENT_NOT_FOUND = 30110,
  599. EC_MATCH_PLAY_RULE_FUNC_ERR = 30111,
  600. EC_MATCH_GET_PLAYER_ATTR_FAIL = 30112,
  601. EC_MATCH_GET_TEAM_ATTR_FAIL = 30113,
  602. EC_MATCH_NONE_TEAM_TYPE_FIT = 30114,
  603. EC_MATCH_TEAM_TYPE_INVALID = 30115,
  604. EC_MATCH_PLAYER_ATTR_NOT_FOUND = 30116,
  605. EC_MATCH_REQUEST_ID_NOT_EXIST = 30117,
  606. EC_MATCH_REQUEST_ID_IS_EXIST = 30118,
  607. EC_MATCH_TEAM_MATCH_FAIL = 30119,
  608. EC_MATCH_INNER_LOGIC_ERR = -30150,
  609. EC_MATCH_INNER_PARAMS_ERR = -30160,
  610. EC_MATCH_ROOM_INNER_ADD_NODE_ERR = -30170,
  611. EC_MATCH_ROOM_INNER_DEL_NODE_ERR = -30171,
  612. EC_RELAY_ALREADY_EXISTS = 40000,
  613. EC_RELAY_NOT_EXISTS = 40001,
  614. EC_RELAY_DATA_EXCEED_LIMITED = 40002,
  615. EC_RELAY_MEMBER_ALREADY_EXISTS = 40003,
  616. EC_RELAY_MEMBER_NOT_EXISTS = 40004,
  617. EC_RELAY_STATE_INVALID = 40005,
  618. EC_RELAY_INVALID_FRAME_RATE = 40006,
  619. EC_RELAY_SET_FRAME_RATE_FORBIDDEN = 40007,
  620. EC_RELAY_NO_MEMBERS = 40008,
  621. EC_RELAY_GAMESVR_SERVICE_NOT_OPEN = 40009,
  622. EC_RELAY_REQ_POD_FAIL = 40010,
  623. EC_RELAY_NO_AVAILABLE_POD = 40011,
  624. EC_RELAY_GET_FRAME_CACHE_FAIL = 40012,
  625. EC_RELAY_HKV_CACHE_ERROR = 40015,
  626. EC_RELAY_REDIS_CACHE_ERROR = 40016,
  627. EC_RELAY_NOTIFY_RELAYWORKER_FAIL = 40018,
  628. EC_RELAY_RESET_RELAY_ROOM_FAIL = 40019,
  629. EC_RELAY_CLEAN_RELAY_ROOM_FAIL = 40020,
  630. EC_RELAY_NO_PERMISSION = 40100,
  631. EC_RELAY_NOTIFY_GAMESVR_FAIL = 40200,
  632. EC_RELAY_FORWARD_TO_GAMESVR_FAIL = 40201,
  633. EC_RELAY_FORWARD_TO_CLIENT_FAIL = 40202,
  634. EC_INVALID_PARAMS = 60000,
  635. EC_INVALID_PARAMS_PLAY_MODE_VERSION = 60001,
  636. EC_INVALID_PARAMS_PLAY_MODE_RULETYPE = 60002,
  637. EC_INVALID_PARAMS_PLAY_MODE_EXPRESSION = 60003,
  638. EC_INVALID_PARAMS_PLAY_MODE_TEAM = 60004,
  639. EC_INVALID_PARAMS_MSGQ_ENCODE = 60020,
  640. EC_INVALID_PARAMS_MSGQ_DECODE = 60021,
  641. EC_INVALID_PARAMS_GAME_ID = 61000,
  642. EC_INVALID_PARAMS_PLAYER_INFO = 61001,
  643. EC_INVALID_PARAMS_MAX_PLAYERS = 61002,
  644. EC_INVALID_PARAMS_ROOM_TYPE = 61003,
  645. EC_INVALID_PARAMS_PLAYER_ID = 61004,
  646. EC_INVALID_PARAMS_MATCH_TYPE = 61005,
  647. EC_INVALID_PARAMS_MATCH_CODE = 61006,
  648. EC_INVALID_PARAMS_OPEN_ID = 61007,
  649. EC_INVALID_PARAMS_PLATFORM = 61008,
  650. EC_INVALID_PARAMS_TIMESTAMP = 61009,
  651. EC_INVALID_PARAMS_SIGN = 61010,
  652. EC_INVALID_PARAMS_NONCE = 61011,
  653. EC_INVALID_PARAMS_TOKEN = 61012,
  654. EC_INVALID_PARAMS_NETWORK_STATE = 61013,
  655. EC_INVALID_PARAMS_ROOM_NAME = 61014,
  656. EC_INVALID_PARAMS_CREATE_ROOM_TYPE = 61015,
  657. EC_INVALID_PARAMS_DEVICE_ID = 61016,
  658. EC_INVALID_PARAMS_PAGE_NO = 61017,
  659. EC_INVALID_PARAMS_PAGE_SIZE = 61018,
  660. EC_INVALID_PARAMS_PLAYER_LIST = 61019,
  661. EC_INVALID_PARAMS_MESSAGE = 61020,
  662. EC_INVALID_CHANGE_ROOM_OPTION = 61021,
  663. EC_INVALID_PARAMS_REGION = 61022,
  664. EC_INVALID_PARAMS_OWNER = 61023,
  665. EC_INVALID_PARAMS_OWNER_OPEN_ID = 61024,
  666. EC_INVALID_PARAMS_OPEN_ID_DUPLICATE = 61026,
  667. EC_INVALID_PARAMS_ROOM_CREATE_TYPE = 61027,
  668. EC_MYSPP_SYSTEM_ERR = -1000,
  669. EC_REDIS_KEY_NOT_EXIST = -66000,
  670. EC_REDIS_SET_OP_ERR = -66001,
  671. EC_REDIS_GET_OP_ERR = -66002,
  672. EC_REDIS_DEL_OP_ERR = -66003,
  673. EC_REDIS_EXPIRE_OP_ERR = -66004,
  674. EC_REDIS_LOCK_OP_ERR = -66005,
  675. EC_REDIS_LOCK_ALREADY_EXIST = -66006,
  676. EC_REDIS_LIST_OP_ERR = -66020,
  677. EC_REDIS_LIST_POP_EMPTY = -66021,
  678. EC_REDIS_POOL_GET_INSTANCE_FAIL = -66022,
  679. EC_REDIS_SET_IS_EMPTY = -66023,
  680. EC_REDIS_OP_INVALID_PARAMS = -66024,
  681. EC_MYSQL_NO_ROW_FOUND = -66100,
  682. EC_MYSQL_MULTI_ROW_FOUND = -66101,
  683. EC_MYSQL_INSERT_FAIL = -66102,
  684. EC_MYSQL_DELETE_FAIL = -66103,
  685. EC_MYSQL_UPDATE_FAIL = -66104,
  686. EC_MYSQL_QUERYS_FAIL = -66105,
  687. EC_PB_SERIALIZE_TO_STR_ERR = -66200,
  688. EC_PB_PARSE_FROM_STR_ERR = -66201,
  689. EC_DATA_FORMAT_ERR = -66210,
  690. EC_JSON_FORMAT_ERR = -66211,
  691. EC_JSON_PLAY_MODE_FORMAT_ERR = -66212,
  692. EC_JSON_PLAY_MODE_PARISE_ERR = -66213,
  693. EC_INVALID_PARAMS_RECORE_ID = -66601,
  694. EC_HASHID_ERR = -66700,
  695. EC_HASHID_ENCODE_ERR = -66701,
  696. EC_HASHID_DECODE_ERR = -66702,
  697. EC_CONF_ROOM_ID_BUCKET_ERR = -66801,
  698. EC_SDK_SEND_FAIL = 90001,
  699. EC_SDK_UNINIT = 90002,
  700. EC_SDK_RES_TIMEOUT = 90003,
  701. EC_SDK_NO_LOGIN = 90004,
  702. EC_SDK_NO_CHECK_LOGIN = 90005,
  703. EC_SDK_SOCKET_ERROR = 90006,
  704. EC_SDK_SOCKET_CLOSE = 90007,
  705. EC_SDK_NO_ROOM = 90008
  706. }
  707. namespace types {
  708. /**
  709. * @name 初始化回调参数
  710. * @field {number} serverTime 服务器时间戳(单位:毫秒)
  711. */
  712. interface InitRsp {
  713. serverTime: number;
  714. }
  715. /**
  716. * @name 玩家信息参数
  717. * @field {string} name 玩家昵称
  718. * @field {number} customPlayerStatus 自定义玩家状态
  719. * @field {string} customProfile 自定义玩家信息
  720. */
  721. interface PlayerInfoPara {
  722. name: string;
  723. customPlayerStatus: number;
  724. customProfile: string;
  725. }
  726. /**
  727. * @name 玩家信息参数
  728. * @field {string} name 玩家昵称
  729. * @field {number} customPlayerStatus 自定义玩家状态
  730. * @field {string} customProfile 自定义玩家信息
  731. * @field {MGOBE.types.MatchAttribute[]} matchAttributes 匹配属性
  732. */
  733. interface MatchPlayerInfoPara {
  734. name: string;
  735. customPlayerStatus: number;
  736. customProfile: string;
  737. matchAttributes: MGOBE.types.MatchAttribute[];
  738. }
  739. /**
  740. * @name 初始化参数:游戏信息
  741. * @description 游戏秘钥指控制台上的“游戏key”。在初始化SDK时,secretKey、CreateSignature两个参数传其中一个即可。如果实现了CreateSignature方法,则忽略secretKey参数。
  742. * @description CreateSignature用于计算签名signature,优点在于避免客户端泄露游戏密钥。
  743. * @field {string} gameId 游戏ID
  744. * @field {string} openId 玩家openId
  745. * @field {string} secretKey 游戏秘钥
  746. * @field {MGOBE.types.CreateSignature} createSignature 签名函数
  747. */
  748. interface GameInfoPara {
  749. gameId: string;
  750. openId: string;
  751. secretKey?: string;
  752. createSignature?: MGOBE.types.CreateSignature;
  753. }
  754. /**
  755. * @name 初始化参数:配置参数
  756. * @description 服务地址指控制台上的“域名”
  757. * @field {number} reconnectMaxTimes 重连接次数
  758. * @field {number} reconnectInterval 重连接时间间隔
  759. * @field {number} resendInterval 消息重发时间间隔
  760. * @field {number} resendTimeout 消息重发超时时间
  761. * @field {string} url 服务地址
  762. * @field {boolean} isAutoRequestFrame 是否自动补帧
  763. * @field {string} cacertNativeUrl 本地CA根证书路径(CocosNative环境需要该参数)
  764. */
  765. interface ConfigPara {
  766. reconnectMaxTimes?: number;
  767. reconnectInterval?: number;
  768. resendInterval?: number;
  769. resendTimeout?: number;
  770. url?: string;
  771. isAutoRequestFrame?: boolean;
  772. cacertNativeUrl?: string;
  773. }
  774. /**
  775. * @name 初始化签名
  776. * @description 可以使用签名的方式初始化SDK,避免客户端泄露游戏密钥。
  777. * @field {string} sign 签名
  778. * @field {number} nonce 随机正整数(uint64类型)
  779. * @field {number} timestamp 时间戳,秒(uint64类型)
  780. */
  781. interface Signature {
  782. sign: string;
  783. nonce: number;
  784. timestamp: number;
  785. }
  786. /**
  787. * @name 签名函数
  788. * @description 开发者如果使用签名方式初始化SDK,需要实现该方法,并在callback中回调Signature对象。
  789. * @field {(signature: MGOBE.types.Signature) => any} callback 回调函数,在该函数返回Signature对象
  790. */
  791. type CreateSignature = (callback: (signature: MGOBE.types.Signature) => any) => any;
  792. /**
  793. * @name 修改玩家状态参数
  794. * @field {number} customPlayerStatus 自定义玩家状态
  795. */
  796. interface ChangeCustomPlayerStatusPara {
  797. customPlayerStatus: number;
  798. }
  799. /**
  800. * @name 创建房间参数
  801. * @field {string} roomName 房间名称
  802. * @field {string} roomType 房间类型
  803. * @field {number} maxPlayers 房间最大玩家数量
  804. * @field {boolean} isPrivate 是否私有
  805. * @field {string} customProperties 自定义房间属性
  806. * @field {MGOBE.types.PlayerInfoPara} playerInfo 玩家信息
  807. */
  808. interface CreateRoomPara {
  809. roomName: string;
  810. roomType: string;
  811. maxPlayers: number;
  812. isPrivate: boolean;
  813. customProperties: string;
  814. playerInfo: MGOBE.types.PlayerInfoPara;
  815. }
  816. /**
  817. * @name 创建团队房间参数
  818. * @field {string} roomName 房间名称
  819. * @field {string} roomType 房间类型
  820. * @field {number} maxPlayers 房间最大玩家数量
  821. * @field {boolean} isPrivate 是否私有
  822. * @field {string} customProperties 自定义房间属性
  823. * @field {MGOBE.types.PlayerInfoPara} playerInfo 玩家信息
  824. * @field {number} teamNumber 队伍数量
  825. */
  826. interface CreateTeamRoomPara {
  827. roomName: string;
  828. roomType: string;
  829. maxPlayers: number;
  830. isPrivate: boolean;
  831. customProperties: string;
  832. playerInfo: MGOBE.types.PlayerInfoPara;
  833. teamNumber: number;
  834. }
  835. /**
  836. * @name 加入房间参数
  837. * @field {MGOBE.types.PlayerInfoPara} playerInfo 玩家信息
  838. */
  839. interface JoinRoomPara {
  840. playerInfo: MGOBE.types.PlayerInfoPara;
  841. }
  842. /**
  843. * @name 加入团队房间参数
  844. * @field {MGOBE.types.PlayerInfoPara} playerInfo 玩家信息
  845. * @field {string} teamId 队伍ID
  846. */
  847. interface JoinTeamRoomPara {
  848. playerInfo: MGOBE.types.PlayerInfoPara;
  849. teamId: string;
  850. }
  851. /**
  852. * @name 房间变更参数
  853. * @field {string} roomName 房间名称(可选)
  854. * @field {string} owner 房主ID(可选)
  855. * @field {boolean} isPrivate 是否私有(可选)
  856. * @field {string} customProperties 自定义房间属性(可选)
  857. * @field {boolean} isForbidJoin 是否禁止加入房间(可选)
  858. */
  859. interface ChangeRoomPara {
  860. roomName?: string;
  861. owner?: string;
  862. isPrivate?: boolean;
  863. customProperties?: string;
  864. isForbidJoin?: boolean;
  865. }
  866. /**
  867. * @name 移除房间内玩家参数
  868. * @field {string} removePlayerId 被移除玩家ID
  869. */
  870. interface RemovePlayerPara {
  871. removePlayerId: string;
  872. }
  873. /**
  874. * @name 获取房间列表参数
  875. * @field {number} pageNo 页号,从1开始
  876. * @field {number} pageSize 每页数量,最大为10
  877. * @field {string} roomType 房间类型(可选)
  878. * @field {boolean} isDesc 是否按照房间创建时间倒序
  879. */
  880. interface GetRoomListPara {
  881. pageNo: number;
  882. pageSize: number;
  883. roomType?: string;
  884. isDesc?: boolean;
  885. }
  886. /**
  887. * @name 获取房间参数
  888. * @field {string} roomId 房间ID
  889. */
  890. interface GetRoomByRoomIdPara {
  891. roomId: string;
  892. }
  893. /**
  894. * @name 多人匹配参数
  895. * @description 匹配 code 需要在控制台创建匹配获得。
  896. * @field {string} matchCode 匹配Code
  897. * @field {MGOBE.types.MatchPlayerInfoPara} playerInfo 玩家信息
  898. */
  899. interface MatchPlayersPara {
  900. matchCode: string;
  901. playerInfo: MGOBE.types.MatchPlayerInfoPara;
  902. }
  903. /**
  904. * @name 房间匹配参数
  905. * @field {MGOBE.types.PlayerInfoPara} playerInfo 玩家信息
  906. * @field {number} maxPlayers 房间最大玩家数量
  907. * @field {string} roomType 房间的类型
  908. */
  909. interface MatchRoomPara {
  910. playerInfo: MGOBE.types.PlayerInfoPara;
  911. maxPlayers: number;
  912. roomType: string;
  913. }
  914. /**
  915. * @name 组队匹配玩家信息参数
  916. * @field {string} id 玩家ID
  917. * @field {string} name 玩家昵称
  918. * @field {number} customPlayerStatus 自定义玩家状态
  919. * @field {string} customProfile 自定义玩家信息
  920. * @field {MGOBE.types.MatchAttribute[]} matchAttributes 匹配属性
  921. */
  922. interface MatchGroupPlayerInfoPara {
  923. id: string;
  924. name: string;
  925. customPlayerStatus: number;
  926. customProfile: string;
  927. matchAttributes: MGOBE.types.MatchAttribute[];
  928. }
  929. /**
  930. * @name 组队匹配参数
  931. * @description 匹配 code 需要在控制台创建匹配获得。
  932. * @field {string} matchCode 匹配Code
  933. * @field {MGOBE.types.MatchGroupPlayerInfoPara[]} playerInfoList[] 队员信息
  934. */
  935. interface MatchGroupPara {
  936. matchCode: string;
  937. playerInfoList: MGOBE.types.MatchGroupPlayerInfoPara[];
  938. }
  939. /**
  940. * @name 组队匹配结束广播回调参数
  941. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  942. * @field {number} errCode 错误码
  943. */
  944. interface MatchBst {
  945. roomInfo: MGOBE.types.RoomInfo;
  946. errCode: number;
  947. }
  948. /**
  949. * @name 组队匹配取消广播回调参数
  950. * @field {string} matchCode 匹配Code
  951. * @field {string} playerId 发起取消匹配的玩家ID
  952. */
  953. interface CancelMatchBst {
  954. matchCode: string;
  955. playerId: string;
  956. }
  957. /**
  958. * @name 取消匹配参数
  959. * @field {MGOBE.types.MatchType} matchType 匹配类型
  960. */
  961. interface CancelPlayerMatchPara {
  962. matchType: MGOBE.types.MatchType;
  963. }
  964. /**
  965. * @name 发送帧数据参数
  966. * @field {object} data 帧数据
  967. */
  968. interface SendFramePara {
  969. data: object;
  970. }
  971. /**
  972. * @name 请求补帧参数
  973. * @description 补帧范围大于等于beginFrameId,小于等于endFrameId
  974. * @field {number} beginFrameId 起始帧号
  975. * @field {number} endFrameId 结束帧号
  976. */
  977. interface RequestFramePara {
  978. beginFrameId: number;
  979. endFrameId: number;
  980. }
  981. /**
  982. * @name 消息接收者类型
  983. * @field {1} ROOM_ALL 全部玩家
  984. * @field {2} ROOM_OTHERS 除自己外的其他玩家
  985. * @field {3} ROOM_SOME 房间中部分玩家
  986. */
  987. enum RecvType {
  988. ROOM_ALL = 1,
  989. ROOM_OTHERS = 2,
  990. ROOM_SOME = 3
  991. }
  992. /**
  993. * @name 发送房间内消息参数
  994. * @field {string[]} recvPlayerList 接收消息玩家ID列表
  995. * @field {string} msg 消息内容
  996. * @field {MGOBE.types.RecvType} recvType 消息接收者类型
  997. */
  998. interface SendToClientPara {
  999. recvPlayerList: string[];
  1000. msg: string;
  1001. recvType: MGOBE.types.RecvType;
  1002. }
  1003. /**
  1004. * @name 发自定义服务消息参数
  1005. * @field {object} data 消息内容
  1006. */
  1007. interface SendToGameSvrPara {
  1008. data: object;
  1009. }
  1010. /**
  1011. * @name 自定义服务消息广播回调参数
  1012. * @field {number} roomId 房间ID
  1013. * @field {string[]} playerIdList 接收消息玩家ID列表
  1014. * @field {object} data 消息内容
  1015. */
  1016. interface RecvFromGameSvrBst {
  1017. roomId: string;
  1018. recvPlayerIdList: string[];
  1019. data: object;
  1020. }
  1021. /**
  1022. * @name 帧内容
  1023. * @field {string} playerId 玩家ID
  1024. * @field {object} data 玩家帧内容
  1025. * @field {number} timestamp 时间戳,各玩家本地发送帧的时间
  1026. */
  1027. interface FrameItem {
  1028. playerId: string;
  1029. data: object;
  1030. timestamp: number;
  1031. }
  1032. /**
  1033. * @name 帧数据
  1034. * @description 附加信息包含一个 number 类型随机种子,开发者可以使用帧 ID 与随机种子组合成一个值来初始化 RandomUtil 工具。
  1035. * @description time 为 SDK 拟合出来的时间,目的是使每一帧到达客户端的时间尽量均匀分布,并且时间间隔尽量接近帧率的倒数。
  1036. * @description isReplay 表示该帧是否为自动补帧产生的帧,自动补帧需要在初始化 Listener 时设置。
  1037. * @description items 数组表示各个客户端发送的帧消息,按照到达服务器时间先后进行排序(数组中第0个为最先到服务器)。
  1038. * @field {number} frameId 帧ID
  1039. * @field {MGOBE.types.FrameItem[]} items 帧内容
  1040. * @field {MGOBE.types.FrameExtInfo} ext 附加信息
  1041. * @field {number} roomId 房间ID
  1042. * @field {number} time 该帧到达客户端时间
  1043. * @field {boolean} isReplay 是否为补帧
  1044. */
  1045. interface Frame {
  1046. id: number;
  1047. items: MGOBE.types.FrameItem[];
  1048. ext: MGOBE.types.FrameExtInfo;
  1049. roomId: string;
  1050. time?: number;
  1051. isReplay?: boolean;
  1052. }
  1053. /**
  1054. * @name 帧广播回调参数
  1055. * @field {MGOBE.types.Frame} frame 帧数据
  1056. */
  1057. interface RecvFrameBst {
  1058. frame: MGOBE.types.Frame;
  1059. }
  1060. /**
  1061. * @name 请求补帧回调参数
  1062. * @field {MGOBE.types.Frame[]} frames 帧数据数组
  1063. */
  1064. interface RequestFrameRsp {
  1065. frames: MGOBE.types.Frame[];
  1066. }
  1067. /**
  1068. * @name 玩家加入房间广播回调参数
  1069. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1070. * @field {string} joinPlayerId 加房玩家ID
  1071. */
  1072. interface JoinRoomBst {
  1073. roomInfo: MGOBE.types.RoomInfo;
  1074. joinPlayerId: string;
  1075. }
  1076. /**
  1077. * @name 玩家退出房间广播回调参数
  1078. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1079. * @field {string} leavePlayerId 退房玩家ID
  1080. */
  1081. interface LeaveRoomBst {
  1082. roomInfo: MGOBE.types.RoomInfo;
  1083. leavePlayerId: string;
  1084. }
  1085. /**
  1086. * @name 房间被解散广播回调参数
  1087. * @field {MGOBE.types.RoomInfo} roomInfo 房间解散前的信息
  1088. */
  1089. interface DismissRoomBst {
  1090. roomInfo: MGOBE.types.RoomInfo;
  1091. }
  1092. /**
  1093. * @name 房间属性变更广播回调参数
  1094. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1095. */
  1096. interface ChangeRoomBst {
  1097. roomInfo: MGOBE.types.RoomInfo;
  1098. }
  1099. /**
  1100. * @name 房间内玩家被移除广播回调参数
  1101. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1102. * @field {string} removePlayerId 被移除玩家ID
  1103. */
  1104. interface RemovePlayerBst {
  1105. roomInfo: MGOBE.types.RoomInfo;
  1106. removePlayerId: string;
  1107. }
  1108. /**
  1109. * @name 房间消息广播回调参数
  1110. * @field {number} roomId 房间ID
  1111. * @field {string} sendPlayerId 发送者ID
  1112. * @field {string} msg 消息内容
  1113. */
  1114. interface RecvFromClientBst {
  1115. roomId: string;
  1116. sendPlayerId: string;
  1117. msg: string;
  1118. }
  1119. /**
  1120. * @name 房间内玩家网络状态变化广播回调参数
  1121. * @field {string} changePlayerId 玩家ID
  1122. * @field {MGOBE.types.NetworkState} networkState 网络状态
  1123. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1124. */
  1125. interface ChangePlayerNetworkStateBst {
  1126. changePlayerId: string;
  1127. networkState: MGOBE.types.NetworkState;
  1128. roomInfo: MGOBE.types.RoomInfo;
  1129. }
  1130. /**
  1131. * @name 玩家自定义状态变化广播回调参数
  1132. * @field {string} changePlayerId 玩家ID
  1133. * @field {number} customPlayerStatus 自定义玩家信息
  1134. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1135. */
  1136. interface ChangeCustomPlayerStatusBst {
  1137. changePlayerId: string;
  1138. customPlayerStatus: number;
  1139. roomInfo: MGOBE.types.RoomInfo;
  1140. }
  1141. /**
  1142. * @name 开始帧同步广播回调参数
  1143. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1144. */
  1145. interface StartFrameSyncBst {
  1146. roomInfo: MGOBE.types.RoomInfo;
  1147. }
  1148. /**
  1149. * @name 停止帧同步广播回调参数
  1150. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1151. */
  1152. interface StopFrameSyncBst {
  1153. roomInfo: MGOBE.types.RoomInfo;
  1154. }
  1155. /**
  1156. * @name 房间属性
  1157. * @description isPrivate 属性为 true 表示该房间为私有房间,不能被 matchRoom 接口匹配到。
  1158. * @field {string} id 房间ID
  1159. * @field {string} name 房间名称
  1160. * @field {string} type 房间类型
  1161. * @field {MGOBE.types.CreateRoomType} createType 创建房间方式
  1162. * @field {number} maxPlayers 房间最大玩家数量
  1163. * @field {string} owner 房主ID
  1164. * @field {boolean} isPrivate 是否私有
  1165. * @field {string} customProperties 房间自定义属性
  1166. * @field {MGOBE.types.PlayerInfo[]} playerList 玩家列表
  1167. * @field {MGOBE.types.TeamInfo[]} teamList 团队属性
  1168. * @field {MGOBE.types.FrameSyncState} frameSyncState 房间帧同步状态
  1169. * @field {number} frameRate 帧率
  1170. * @field {string} routeId 路由ID
  1171. * @field {number} createTime 房间创建时的时间戳(单位:秒)
  1172. * @field {number} startGameTime 开始帧同步时的时间戳(单位:秒)
  1173. * @field {boolean} isForbidJoin 是否禁止加入房间
  1174. */
  1175. interface RoomInfo {
  1176. id: string;
  1177. name: string;
  1178. type: string;
  1179. createType: MGOBE.types.CreateRoomType;
  1180. maxPlayers: number;
  1181. owner: string;
  1182. isPrivate: boolean;
  1183. customProperties: string;
  1184. playerList: MGOBE.types.PlayerInfo[];
  1185. teamList: MGOBE.types.TeamInfo[];
  1186. frameSyncState: MGOBE.types.FrameSyncState;
  1187. frameRate: number;
  1188. routeId: string;
  1189. createTime: number;
  1190. startGameTime: number;
  1191. isForbidJoin: boolean;
  1192. }
  1193. /**
  1194. * @name 修改玩家状态回调参数
  1195. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1196. */
  1197. interface ChangeCustomPlayerStatusRsp {
  1198. roomInfo: MGOBE.types.RoomInfo;
  1199. }
  1200. /**
  1201. * @name 创建房间回调参数
  1202. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1203. */
  1204. interface CreateRoomRsp {
  1205. roomInfo: MGOBE.types.RoomInfo;
  1206. }
  1207. /**
  1208. * @name 加入房间回调参数
  1209. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1210. */
  1211. interface JoinRoomRsp {
  1212. roomInfo: MGOBE.types.RoomInfo;
  1213. }
  1214. /**
  1215. * @name 退出房间回调参数
  1216. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1217. */
  1218. interface LeaveRoomRsp {
  1219. roomInfo: MGOBE.types.RoomInfo;
  1220. }
  1221. /**
  1222. * @name 解散房间回调参数
  1223. */
  1224. interface DismissRoomRsp {
  1225. }
  1226. /**
  1227. * @name 修改房间回调参数
  1228. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1229. */
  1230. interface ChangeRoomRsp {
  1231. roomInfo: MGOBE.types.RoomInfo;
  1232. }
  1233. /**
  1234. * @name 移除房间内玩家回调参数
  1235. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1236. */
  1237. interface RemovePlayerRsp {
  1238. roomInfo: MGOBE.types.RoomInfo;
  1239. }
  1240. /**
  1241. * @name 获取房间信息回调参数
  1242. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1243. */
  1244. interface GetRoomByRoomIdRsp {
  1245. roomInfo: MGOBE.types.RoomInfo;
  1246. }
  1247. /**
  1248. * @name 获取房间列表回调参数
  1249. * @field {MGOBE.types.RoomInfo[]} roomList 房间列表
  1250. * @field {number} total 房间总数
  1251. */
  1252. interface GetRoomListRsp {
  1253. gameId: string;
  1254. roomList: MGOBE.types.RoomInfo[];
  1255. total: number;
  1256. }
  1257. /**
  1258. * @name 多人匹配回调参数
  1259. * @field {MGOBE.types.MatchType} matchType 匹配类型
  1260. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1261. */
  1262. interface MatchPlayersRsp {
  1263. matchType?: MGOBE.types.MatchType;
  1264. roomInfo?: MGOBE.types.RoomInfo;
  1265. }
  1266. /**
  1267. * @name 房间匹配回调参数
  1268. * @field {MGOBE.types.RoomInfo} roomInfo 房间信息
  1269. */
  1270. interface MatchRoomSimpleRsp {
  1271. roomInfo: MGOBE.types.RoomInfo;
  1272. }
  1273. /**
  1274. * @name 组队匹配回调参数
  1275. * @field {string} matchCode 匹配Code
  1276. */
  1277. interface MatchGroupRsp {
  1278. matchCode: string;
  1279. }
  1280. /**
  1281. * @name 取消匹配回调参数
  1282. */
  1283. interface CancelPlayerMatchRsp {
  1284. }
  1285. /**
  1286. * @name 开始帧同步回调参数
  1287. */
  1288. interface StartFrameSyncRsp {
  1289. }
  1290. /**
  1291. * @name 停止帧同步回调参数
  1292. */
  1293. interface StopFrameSyncRsp {
  1294. }
  1295. /**
  1296. * @name 发送帧同步数据回调参数
  1297. */
  1298. interface SendFrameRsp {
  1299. }
  1300. /**
  1301. * @name 房间内发送消息回调参数
  1302. */
  1303. interface SendToClientRsp {
  1304. }
  1305. /**
  1306. * @name 发送自定义服务消息回调参数
  1307. */
  1308. interface SendToGameSvrRsp {
  1309. }
  1310. /**
  1311. * @name 匹配属性
  1312. * @field {string} name 属性名称
  1313. * @field {number} value 属性值
  1314. */
  1315. interface MatchAttribute {
  1316. name: string;
  1317. value: number;
  1318. }
  1319. /**
  1320. * @name 匹配类型
  1321. * @field {1} ROOM_SIMPLE 房间匹配
  1322. * @field {2} PLAYER_COMPLEX 玩家匹配
  1323. */
  1324. enum MatchType {
  1325. ROOM_SIMPLE = 1,
  1326. PLAYER_COMPLEX = 2
  1327. }
  1328. /**
  1329. * @name 帧数据附加信息
  1330. * @field {number} seed 随机数种子
  1331. */
  1332. interface FrameExtInfo {
  1333. seed: number;
  1334. }
  1335. /**
  1336. * @name 创建房间方式
  1337. * @field {0} COMMON_CREATE 普通创建
  1338. * @field {1} MATCH_CREATE 匹配创建
  1339. */
  1340. enum CreateRoomType {
  1341. COMMON_CREATE = 0,
  1342. MATCH_CREATE = 1,
  1343. THIRD_PARTY_CREATE = 2
  1344. }
  1345. /**
  1346. * @name 网络状态
  1347. * @field {0} COMMON_OFFLINE 房间中玩家掉线
  1348. * @field {1} COMMON_ONLINE 房间中玩家在线
  1349. * @field {2} RELAY_OFFLINE 帧同步中玩家掉线
  1350. * @field {3} RELAY_ONLINE 帧同步中玩家在线
  1351. */
  1352. enum NetworkState {
  1353. COMMON_OFFLINE = 0,
  1354. COMMON_ONLINE = 1,
  1355. RELAY_OFFLINE = 2,
  1356. RELAY_ONLINE = 3
  1357. }
  1358. /**
  1359. * @name 房间帧同步状态
  1360. * @field {0} STOP 未开始帧同步
  1361. * @field {1} START 已开始帧同步
  1362. */
  1363. enum FrameSyncState {
  1364. STOP = 0,
  1365. START = 1
  1366. }
  1367. /**
  1368. * @name 玩家信息
  1369. * @field {string} id 玩家ID
  1370. * @field {string} name 玩家昵称
  1371. * @field {string} teamId 队伍ID
  1372. * @field {number} customPlayerStatus 自定义玩家状态
  1373. * @field {string} customProfile 自定义玩家信息
  1374. * @field {MGOBE.types.NetworkState} commonNetworkState 玩家在房间的网络状态
  1375. * @field {MGOBE.types.NetworkState} relayNetworkState 玩家在游戏中的网络状态
  1376. * @field {boolean} isRobot 玩家是否为机器人
  1377. * @field {MGOBE.types.MatchAttribute[]} matchAttributes 玩家匹配属性列表(isRobot为true时生效)
  1378. */
  1379. interface PlayerInfo {
  1380. id: string;
  1381. name: string;
  1382. teamId: string;
  1383. customPlayerStatus: number;
  1384. customProfile: string;
  1385. commonNetworkState: MGOBE.types.NetworkState;
  1386. relayNetworkState: MGOBE.types.NetworkState;
  1387. isRobot: boolean;
  1388. matchAttributes: MGOBE.types.MatchAttribute[];
  1389. }
  1390. /**
  1391. * @name 队伍信息
  1392. * @field {string} id 队伍ID
  1393. * @field {string} name 队伍名称
  1394. * @field {number} minPlayers 队伍最小人数
  1395. * @field {number} maxPlayers 队伍最大人数
  1396. */
  1397. interface TeamInfo {
  1398. id: string;
  1399. name: string;
  1400. minPlayers: number;
  1401. maxPlayers: number;
  1402. }
  1403. /**
  1404. * 响应回调参数
  1405. * @field {number} code 错误码
  1406. * @field {string} msg 错误信息
  1407. * @field {string} seq 响应序列号
  1408. * @field {any} data 响应数据
  1409. */
  1410. interface ResponseEvent<T> {
  1411. code: number;
  1412. msg: string;
  1413. seq: string;
  1414. data?: T;
  1415. }
  1416. /**
  1417. * 广播回调参数
  1418. * @field {any} data 广播数据
  1419. * @field {string} seq 广播序列号
  1420. */
  1421. interface BroadcastEvent<T> {
  1422. data: T;
  1423. seq: string;
  1424. }
  1425. /**
  1426. * 响应回调函数
  1427. */
  1428. type ReqCallback<T> = (event: MGOBE.types.ResponseEvent<T>) => any;
  1429. }
  1430. }