1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
declare namespace MGOBE {
/********************************* 玩家信息 ************************************/
/**
* @name 玩家信息
* @description 该对象记录了玩家的基本信息,默认全部为空。成功初始化Listener之后,id、openId 属性将生效。
* @description 玩家进入房间后,该对象的属性与 roomInfo.playerList 中当前玩家信息保持一致。
* @description 玩家 ID 是 MGOBE 后台生成的 ID,openId 是开发者初始化时候使用的 ID。openId 只有初始化 Listener 的时候使用,其它接口的“玩家 ID”均指后台生成的 ID。
* @field {string} id 玩家ID
* @field {string} openId 玩家openId
* @field {string} name 玩家昵称
* @field {string} teamId 队伍ID
* @field {number} customPlayerStatus 自定义玩家状态
* @field {string} customProfile 自定义玩家属性
* @field {MGOBE.types.NetworkState} commonNetworkState 房间网络状态
* @field {MGOBE.types.NetworkState} relayNetworkState 帧同步网络状态
*/
export const Player: {
readonly id: string;
readonly openId: string;
readonly name: string;
readonly teamId: string;
readonly customPlayerStatus: number;
readonly customProfile: string;
readonly commonNetworkState: MGOBE.types.NetworkState;
readonly relayNetworkState: MGOBE.types.NetworkState;
};
/********************************* SDK 枚举 *********************************/
/**
* @name 操作类型枚举
* @enum {MGOBE.types.CreateRoomType} CreateRoomType 创建房间方式
* @enum {MGOBE.types.MatchType} MatchType 匹配类型
* @enum {MGOBE.types.NetworkState} NetworkState 网络状态
* @enum {MGOBE.types.FrameSyncState} FrameSyncState 房间帧同步状态
* @enum {MGOBE.types.RecvType} RecvType 房间内消息接收者范围
* @enum {MGOBE.types.GroupRecvType} GroupRecvType 队组内消息接收者范围
* @enum {MGOBE.types.GroupType} GroupType 队组类型
*/
export const ENUM: {
readonly CreateRoomType: typeof MGOBE.types.CreateRoomType;
readonly MatchType: typeof MGOBE.types.MatchType;
readonly NetworkState: typeof MGOBE.types.NetworkState;
readonly FrameSyncState: typeof MGOBE.types.FrameSyncState;
readonly RecvType: typeof MGOBE.types.RecvType;
readonly GroupRecvType: typeof MGOBE.types.GroupRecvType;
readonly GroupType: typeof MGOBE.types.GroupType;
};
/********************************* SDK 随机数工具 *********************************/
export const RandomUtil: {
/**
* @name 初始化随机数
* @description init 方法接受一个 seed 为参数,RandomUtil 在后续生成随机数的过程中将以 seed 为种子。使用相同的 seed 初始化,调用 random 方法生成的随机数序列相同。
* @param {number} seed 随机数种子
* @returns {void}
*/
init(seed: number): void;
/**
* @name 生成随机数
* @description 如果种子相同、初始化后调用次数相同,生成的随机数将相同。
* @returns {number} 随机数,范围为[0,1)
*/
random(): number;
};
/********************************* SDK 日志打印 ************************************/
export class DebuggerLog {
static enable: boolean;
static callback: (...logs: any[]) => any;
}
export const StatCallbacks: {
onPingTime(time: number): any;
onFitFrameTime(deltaTime: number): any;
onBstFrameRate(deltaTime: number): any;
onRenderFrameRate(deltaTime: number): any;
};
/********************************* Group 广播回调 *********************************/
class GroupBroadcastHandler {
/**
* @name 新玩家加入队组广播回调接口
* @description onJoinGroup 广播表示该队组有新玩家加入。队组内全部成员都会收到该广播。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.JoinGroupBst>} event 回调参数
* @returns {void}
*/
onJoinGroup: (event: MGOBE.types.BroadcastEvent<MGOBE.types.JoinGroupBst>) => any;
/**
* @name 玩家退出队组广播回调接口
* @description onLeaveGroup 广播表示该队组有玩家退出。队组内全部成员都会收到该广播。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.LeaveGroupBst>} event 回调参数
* @returns {void}
*/
onLeaveGroup: (event: MGOBE.types.BroadcastEvent<MGOBE.types.LeaveGroupBst>) => any;
/**
* @name 队组被解散广播回调接口
* @description onDismissGroup 广播表示队长解散了该队组。队组内全部成员都会收到该广播。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.DismissGroupBst>} event 回调参数
* @returns {void}
*/
onDismissGroup: (event: MGOBE.types.BroadcastEvent<MGOBE.types.DismissGroupBst>) => any;
/**
* @name 更新队组广播回调接口
* @description onChangeGroup 广播表示修改了该队组属性。队组内全部成员都会收到该广播。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.ChangeGroupBst>} event 回调参数
* @returns {void}
*/
onChangeGroup: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ChangeGroupBst>) => any;
/**
* @name 队组内玩家被移除广播回调接口
* @description onRemoveGroupPlayer 广播表示有玩家被队长移除。队组内全部成员都会收到该广播。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.RemoveGroupPlayerBst>} event 回调参数
* @returns {void}
*/
onRemoveGroupPlayer: (event: MGOBE.types.BroadcastEvent<MGOBE.types.RemoveGroupPlayerBst>) => any;
/**
* @name 队组内玩家网络状态变化广播回调接口
* @description onChangeGroupPlayerNetworkState 广播表示 ID 为 changePlayerId 的玩家网络状态发生变化。
* @description 玩家在队组中的网络变化都会触发该广播,因此 networkState 将有两种情况,分别表示队组中上下线。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.ChangeGroupPlayerNetworkStateBst>} event 回调参数
* @returns {void}
*/
onChangeGroupPlayerNetworkState: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ChangeGroupPlayerNetworkStateBst>) => any;
/**
* @name 玩家自定义状态变化广播回调接口
* @description onChangeCustomGroupPlayerStatus 广播表示队组内 ID 为 changePlayerId 的玩家状态发生变化。玩家状态由开发者自定义。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.ChangeCustomGroupPlayerStatusBst>} event 回调参数
* @returns {void}
*/
onChangeCustomGroupPlayerStatus: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ChangeCustomGroupPlayerStatusBst>) => any;
/**
* @name 收到队组内其他玩家消息广播回调接口
* @description onRecvFromGroupClient 广播表示在队组内收到来自 ID 为 sendPlayerId 的玩家消息。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.RecvFromGroupClientBst>} event 回调参数
* @returns {void}
*/
onRecvFromGroupClient: (event: MGOBE.types.BroadcastEvent<MGOBE.types.RecvFromGroupClientBst>) => any;
}
/********************************* SDK Group对象 *********************************/
export class Group extends GroupBroadcastHandler {
/**
* @name 构造器
* @description 实例化 Group 对象时可以传入一个 MGOBE.types.GroupInfo 对象 groupInfo,后续接口调用都将基于该 groupInfo,例如修改该队组的属性、接收该队组的广播。
* @description 如果不传 groupInfo 参数,开发者可以通过直接调用 initGroup、createGroup、joinGroup 等方法获取 groupInfo。
* @description Group 对象会自动维护内部的 groupInfo 属性保持最新,开发者可以直接通过访问该属性获得最新的队组信息。
* @param {MGOBE.types.GroupInfo} groupInfo 队组信息(可选)
* @returns {void}
*/
constructor(groupInfo?: MGOBE.types.GroupInfo);
/**
* @name 队组信息
* @description groupInfo 为 Group 实例的属性,类型为 MGOBE.types.GroupInfo,调用 Group 相关的接口会导致该属性发生变化。
*/
groupInfo: MGOBE.types.GroupInfo;
/**
* @name 初始化 Group 实例的队组信息,即更新 groupInfo 属性
* @description initGroup 会更新 Group 实例的 groupInfo,接受 MGOBE.types.GroupInfo 或 { id: string; } 类型的参数。
* @description 如果不传参数,该方法将清空 Group 实例的 groupInfo 属性。
* @description 当玩家需要加入指定 id 队组时,需要使用该接口初始化 Group 实例的 groupInfo 属性,然后才能通过调用 joinGroup 方法加入该 Group 实例所代表的队组。
* @param {MGOBE.types.GroupInfo 或 { id: string }} groupInfo 初始化参数,id表示队组ID(可选)
* @returns {void}
*/
initGroup(groupInfo?: MGOBE.types.GroupInfo | {
id: string;
}): void;
/**
* @name 队组信息更新回调接口
* @description onUpdate 表明 Group 实例的 groupInfo 信息发生变化,这种变化原因包括各种队组操作、广播、本地网络状态变化等。
* @param {Group} group 更新的Group实例(可选)
* @returns {void}
*/
onUpdate(group?: Group): void;
/**
* @name 通过队组 ID 获取队组信息
* @description 调用结果将在 callback 中异步返回。
* @description 该接口为 Group 的静态方法,只能通过 Group.getGroupByGroupId 方式调用,Group 实例无法直接访问该方法。
* @param {MGOBE.types.GetGroupByGroupIdPara} getGroupByGroupIdPara 获取队组参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.GetGroupByGroupIdRsp>} callback 响应回调函数
* @returns {void}
*/
static getGroupByGroupId(getGroupByGroupIdPara: MGOBE.types.GetGroupByGroupIdPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.GetGroupByGroupIdRsp>): void;
/**
* @name 获取当前玩家队组信息
* @description 调用结果将在 callback 中异步返回。
* @description 该接口为 Group 的静态方法,只能通过 Group.getMyGroups 方式调用,Group 实例无法直接访问该方法。
* @param {MGOBE.types.ReqCallback<MGOBE.types.GetMyGroupsRsp>} callback 响应回调函数
* @returns {void}
*/
static getMyGroups(callback?: MGOBE.types.ReqCallback<MGOBE.types.GetMyGroupsRsp>): void;
/**
* @name 创建队组
* @description 调用结果将在 callback 中异步返回。操作成功后,groupInfo 属性将更新。
* @param {MGOBE.types.CreateGroupPara} createGroupPara 创建队组参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.CreateGroupRsp>} callback 响应回调函数
* @returns {void}
*/
createGroup(createGroupPara: MGOBE.types.CreateGroupPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.CreateGroupRsp>): void;
/**
* @name 获取Group实例的队组信息
* @description 调用结果将在 callback 中异步返回。操作成功后,groupInfo 属性将更新。
* @param {MGOBE.types.ReqCallback<MGOBE.types.GetGroupByGroupIdRsp>} callback 响应回调函数
* @returns {void}
*/
getGroupDetail(callback?: MGOBE.types.ReqCallback<MGOBE.types.GetGroupByGroupIdRsp>): void;
/**
* @name 加入队组
* @description 调用结果将在 callback 中异步返回。
* @description 该接口加入的队组是 Group 实例所代表的队组,如果该 Group 实例的 groupInfo 不存在队组ID,则需要使用队组ID通过 initGroup 方法初始化 Group 实例。
* @description 加入队组成功后,队组内全部成员(不含调用者)都会收到一条玩家加入队组广播 onJoinGroup,groupInfo 属性将更新。
* @description 玩家可以加入多个 GROUP_MANY 类型队组(type 为 GroupType.GROUP_MANY),同时加入的数量上限为5个。
* @description 玩家最多只能加入1个 GROUP_LIMITED 类型队组(type 为 GroupType.GROUP_LIMITED)。
* @param {MGOBE.types.JoinGroupPara} joinGroupPara 加入队组参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.JoinGroupRsp>} callback 响应回调函数
* @returns {void}
*/
joinGroup(joinGroupPara: MGOBE.types.JoinGroupPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.JoinGroupRsp>): void;
/**
* @name 离开队组
* @description 调用结果将在 callback 中异步返回。退出成功后,队组内剩余成员(不含调用者)都会收到一条玩家退出队组广播 onLeaveGroup,groupInfo 属性将更新,groupInfo.groupPlayerList 中将没有该玩家信息。
* @description 离开队组后,如果队组内还剩下其他玩家,则该 Group 实例仍然代表退房前的队组,可以继续调用 group.initGroup() 清除队组信息。
* @param {object} para 预留参数,传{}即可
* @param {MGOBE.types.ReqCallback<MGOBE.types.LeaveGroupRsp>} callback 响应回调函数
* @returns {void}
*/
leaveGroup(para: {}, callback?: MGOBE.types.ReqCallback<MGOBE.types.LeaveGroupRsp>): void;
/**
* @name 解散队组
* @description 调用结果将在 callback 中异步返回。解散成功后,队组内全部成员(不含调用者)都会收到一条解散队组广播 onDismissGroup,groupInfo 属性将更新。
* @description 只有队长有权限解散队组
* @param {object} para 预留参数,传{}即可
* @param {MGOBE.types.ReqCallback<MGOBE.types.DismissGroupRsp>} callback 响应回调函数
* @returns {void}
*/
dismissGroup(para: {}, callback?: MGOBE.types.ReqCallback<MGOBE.types.DismissGroupRsp>): void;
/**
* @name 更新队组信息
* @description 调用结果将在 callback 中异步返回。调用成功后,队组内全部成员都会收到一条更新队组广播 onChangeGroup,groupInfo 属性将更新。
* @description 只有队长有权限修改队组
* @param {MGOBE.types.ChangeGroupPara} changeGroupPara 更新队组参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.ChangeGroupRsp>} callback 响应回调函数
* @returns {void}
*/
changeGroup(changeGroupPara: MGOBE.types.ChangeGroupPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.ChangeGroupRsp>): void;
/**
* @name 移除队组内玩家
* @description 调用结果将在 callback 中异步返回。调用成功后,队组内全部成员都会收到一条队组内玩家被移除广播 onRemoveGroupPlayer,groupInfo 属性将更新。
* @description 只有队长有权限移除玩家
* @param {MGOBE.types.RemoveGroupPlayerPara} removeGroupPlayerPara 移除队组内玩家参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.RemoveGroupPlayerRsp>} callback 响应回调函数
* @returns {void}
*/
removeGroupPlayer(removeGroupPlayerPara: MGOBE.types.RemoveGroupPlayerPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.RemoveGroupPlayerRsp>): void;
/**
* @name 修改队组玩家自定义状态
* @description 修改玩家状态是修改 GroupPlayerInfo 中的 customGroupPlayerStatus 字段,玩家的状态由开发者自定义。
* @description 修改成功后,队组内全部成员都会收到一条修改玩家状态广播 onChangeCustomGroupPlayerStatus,groupInfo 属性将更新。
* @description 每个玩家只能修改自己的状态,调用结果将在 callback 中异步返回。
* @param {MGOBE.types.ChangeCustomGroupPlayerStatusPara} changeCustomGroupPlayerStatusPara 修改队组玩家自定义状态参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.ChangeCustomGroupPlayerStatusRsp>} callback 响应回调函数
* @returns {void}
*/
changeCustomGroupPlayerStatus(changeCustomGroupPlayerStatusPara: MGOBE.types.ChangeCustomGroupPlayerStatusPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.ChangeCustomGroupPlayerStatusRsp>): void;
/**
* @name 发送队组内消息
* @description 调用结果将在 callback 中异步返回。调用成功后所指定的接收消息的玩家将收到 onRecvFromGroupClient 广播。
* @description 当 recvType 值为 1 (即 GROUP_ALL ) 时,队组内全部玩家将收到消息;
* @description 当 recvType 值为 2 (即 GROUP_OTHERS ) 时,队组内除消息发送者外的其他玩家将收到消息;
* @description 当 recvType 值为 3 (即 GROUP_SOME ) 时,接收消息玩家才由 recvPlayerList 决定。
* @param {MGOBE.types.SendToGroupClientPara} sendToGroupClientPara 发送队组内消息参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.SendToGroupClientRsp>} callback 响应回调函数
* @returns {void}
*/
sendToGroupClient(sendToGroupClientPara: MGOBE.types.SendToGroupClientPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.SendToGroupClientRsp>): void;
}
/********************************* Room 广播回调 *********************************/
class RoomBroadcastHandler {
/**
* @name 匹配结束广播
* @description onMatch 广播表示组队匹配结束。匹配成功或者匹配超时后,全部小组成员都会收到该广播。
* @description 使用 event.data.errCode 判断是否匹配成功。
* @description 注意该方法为 Room 类的静态方法。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.MatchBst>} event 回调参数
* @returns {void}
*/
static onMatch: (event: MGOBE.types.BroadcastEvent<MGOBE.types.MatchBst>) => any;
/**
* @name 取消匹配广播
* @description onCancelMatch 广播表示成功取消 matchPlayers、matchGroup。调用者或全部小组成员都会收到该广播。
* @description 注意该方法为 Room 类的静态方法。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.CancelMatchBst>} event 回调参数
* @returns {void}
*/
static onCancelMatch: (event: MGOBE.types.BroadcastEvent<MGOBE.types.CancelMatchBst>) => any;
/**
* @name 新玩家加入房间广播回调接口
* @description onJoinRoom 广播表示该房间有新玩家加入。房间内全部成员都会收到该广播。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.JoinRoomBst>} event 回调参数
* @returns {void}
*/
onJoinRoom: (event: MGOBE.types.BroadcastEvent<MGOBE.types.JoinRoomBst>) => any;
/**
* @name 玩家退出房间广播回调接口
* @description onLeaveRoom 广播表示该房间有玩家退出。房间内全部成员都会收到该广播。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.LeaveRoomBst>} event 回调参数
* @returns {void}
*/
onLeaveRoom: (event: MGOBE.types.BroadcastEvent<MGOBE.types.LeaveRoomBst>) => any;
/**
* @name 房间被解散广播回调接口
* @description onDismissRoom 广播表示房主解散了该房间。房间内全部成员都会收到该广播。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.DismissRoomBst>} event 回调参数
* @returns {void}
*/
onDismissRoom: (event: MGOBE.types.BroadcastEvent<MGOBE.types.DismissRoomBst>) => any;
/**
* @name 房主修改房间信息广播回调接口
* @description onChangeRoom 广播表示房主修改了该房间属性。房间内全部成员都会收到该广播。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.ChangeRoomBst>} event 回调参数
* @returns {void}
*/
onChangeRoom: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ChangeRoomBst>) => any;
/**
* @name 房间内玩家被移除广播回调接口
* @description onRemovePlayer 广播表示有玩家被房主移除。房间内全部成员都会收到该广播。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.RemovePlayerBst>} event 回调参数
* @returns {void}
*/
onRemovePlayer: (event: MGOBE.types.BroadcastEvent<MGOBE.types.RemovePlayerBst>) => any;
/**
* @name 收到房间内其他玩家消息广播回调接口
* @description onRecvFromClient 广播表示收到来自 ID 为 sendPlayerId 的玩家消息。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.RecvFromClientBst>} event 回调参数
* @returns {void}
*/
onRecvFromClient: (event: MGOBE.types.BroadcastEvent<MGOBE.types.RecvFromClientBst>) => any;
/**
* @name 收到自定义服务消息广播回调接口
* @description onRecvFromGameSvr 广播表示收到来自自定义服务的消息。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.RecvFromGameSvrBst>} event 回调参数
* @returns {void}
*/
onRecvFromGameSvr: (event: MGOBE.types.BroadcastEvent<MGOBE.types.RecvFromGameSvrBst>) => any;
/**
* @name 房间内玩家网络状态变化广播回调接口
* @description onChangePlayerNetworkState 广播表示 ID 为 changePlayerId 的玩家网络状态发生变化。
* @description 玩家在房间中、帧同步中的网络变化都会触发该广播,因此 networkState 将有四中情况,分别表示房间中上下线、帧同步中上下线。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.ChangePlayerNetworkStateBst>} event 回调参数
* @returns {void}
*/
onChangePlayerNetworkState: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ChangePlayerNetworkStateBst>) => any;
/**
* @name 玩家自定义状态变化广播回调接口
* @description onChangeCustomPlayerStatus 广播表示房间内 ID 为 changePlayerId 的玩家状态发生变化。玩家状态由开发者自定义。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.ChangeCustomPlayerStatusBst>} event 回调参数
* @returns {void}
*/
onChangeCustomPlayerStatus: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ChangeCustomPlayerStatusBst>) => any;
/**
* @name 开始帧同步广播回调接口
* @description onStartFrameSync 广播表示房间开始帧同步。收到该广播后将持续收到 onRecvFrame 广播。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.StartFrameSyncBst>} event 回调参数
* @returns {void}
*/
onStartFrameSync: (event: MGOBE.types.BroadcastEvent<MGOBE.types.StartFrameSyncBst>) => any;
/**
* @name 停止帧同步广播回调接口
* @description onStopFrameSync 广播表示房间停止帧同步。收到该广播后将不再收到 onRecvFrame 广播。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.StopFrameSyncBst>} event 回调参数
* @returns {void}
*/
onStopFrameSync: (event: MGOBE.types.BroadcastEvent<MGOBE.types.StopFrameSyncBst>) => any;
/**
* @name 房间帧消息广播回调接口
* @description onRecvFrame 广播表示收到一个帧 frame,frame 的内容由多个 MGOBE.types.FrameItem 组成,即一帧时间内房间内所有玩家向服务器发送帧消息的集合。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.RecvFrameBst>} event 回调参数
* @returns {void}
*/
onRecvFrame: (event: MGOBE.types.BroadcastEvent<MGOBE.types.RecvFrameBst>) => any;
/**
* @name 自动补帧失败回调接口
* @description onAutoRequestFrameError 表示自动补帧失败,在初始化 Listener 时开启自动补帧后才能触发。
* @description 发生补帧失败后,将不能收到帧广播,开发者可以使用 retryAutoRequestFrame 方法重试自动补帧。
* @param {MGOBE.types.BroadcastEvent<MGOBE.types.ResponseEvent<MGOBE.types.RequestFrameRsp>>} event 回调参数
* @returns {void}
*/
onAutoRequestFrameError: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ResponseEvent<MGOBE.types.RequestFrameRsp>>) => any;
}
/********************************* SDK Room对象 *********************************/
export class Room extends RoomBroadcastHandler {
/**
* @name 构造器
* @description 实例化 Room 对象时可以传入一个 MGOBE.types.RoomInfo 对象 roomInfo,后续接口调用都将基于该 roomInfo,例如修改该房间的属性、接收该房间的广播。
* @description 如果不传 roomInfo 参数,开发者可以通过直接调用 initRoom、createRoom、joinRoom 等方法获取 roomInfo。
* @description Room 对象会自动维护内部的 roomInfo 属性保持最新,开发者可以直接通过访问该属性获得最新的房间信息。
* @param {MGOBE.types.RoomInfo} roomInfo 房间信息(可选)
* @returns {void}
*/
constructor(roomInfo?: MGOBE.types.RoomInfo);
/**
* @name 房间信息
* @description roomInfo 为 Room 实例的属性,类型为 MGOBE.types.RoomInfo,调用 Room 相关的接口会导致该属性发生变化。
*/
roomInfo: MGOBE.types.RoomInfo;
/**
* @name 获取房间列表
* @description 调用结果将在 callback 中异步返回。
* @description 该接口为 Room 的静态方法,只能通过 Room.getRoomList 方式调用,Room 实例无法直接访问该方法。
* @param {MGOBE.types.GetRoomListPara} getRoomListPara 获取房间列表参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.GetRoomListRsp>} callback 响应回调函数
* @returns {void}
*/
static getRoomList(getRoomListPara: MGOBE.types.GetRoomListPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.GetRoomListRsp>): void;
/**
* @name 根据房间 ID 获取房间
* @description 调用结果将在 callback 中异步返回。
* @description 该接口为 Room 的静态方法,只能通过 Room.getRoomByRoomId 方式调用,Room 实例无法直接访问该方法。
* @description 如果参数中的 roomId 为空字符串,将查询玩家所在的房间。
* @param {MGOBE.types.GetRoomByRoomIdPara} getRoomByRoomIdPara 获取房间参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>} callback 响应回调函数
* @returns {void}
*/
static getRoomByRoomId(getRoomByRoomIdPara: MGOBE.types.GetRoomByRoomIdPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>): void;
/**
* @name 查询玩家所在的房间信息
* @description 调用结果将在 callback 中异步返回。
* @description 该接口为 Room 的静态方法,只能通过 Room.getMyRoom 方式调用,Room 实例无法直接访问该方法。
* @param {MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>} callback 响应回调函数
* @returns {void}
*/
static getMyRoom(callback?: MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>): void;
/**
* @name 初始化 Room 实例的房间信息,即更新 roomInfo 属性
* @description initRoom 会更新 Room 实例的 roomInfo,接受 MGOBE.types.RoomInfo 或 { id: string; } 类型的参数。
* @description 如果参数为 MGOBE.types.RoomInfo 类型,SDK将自动更新 WebSocket 连接。如果参数为 { id: string; } 类型,需要调用 getRoomDetail 或 joinRoom 方法才能更新 WebSocket 连接,否则可能不能及时收到房间广播。
* @description 如果不传参数,该方法将清空 Room 实例的 roomInfo 属性,此时调用 getRoomDetail 方法将查询玩家所在的房间。
* @description 当玩家需要加入指定 id 房间时,需要使用该接口初始化 Room 实例的 roomInfo 属性,然后才能通过调用 joinRoom 方法加入该 Room 实例所代表的房间。
* @param {MGOBE.types.RoomInfo 或 { id: string }} roomInfo 初始化参数,id表示房间id
* @returns {void}
*/
initRoom(roomInfo?: MGOBE.types.RoomInfo | {
id: string;
}): void;
/**
* @name 房间信息更新回调接口
* @description onUpdate 表明 Room 实例的 roomInfo 信息发生变化,这种变化原因包括各种房间操作、房间广播、本地网络状态变化等。
* @description 开发者可以在该接口中更新游戏画面,或者使用 networkState 属性判断网络状态。
* @param {Room} room 更新的Room实例(可选)
* @returns {void}
*/
onUpdate(room?: Room): void;
/**
* @name 该属性为只读属性,用于获取客户端本地 SDK 网络状态
* @description 该属性类型为 ```{ COMMON: boolean, RELAY: boolean }``` 。COMMON 表示房间网络状态;RELAY 表示帧同步网络状态。为 true 时表示网络已连接,为 false 时表示网络未连接。
* @description 该网络状态与玩家信息中的网络状态(Player.commonNetworkState/Player.relayNetworkState)概念不同,前者表示本地 socket 状态,后者表示玩家在 MGOBE 后台中的状态。
* @description 本地 socket 网络状态变化时,onUpdate 将被触发。
*/
readonly networkState: {
COMMON: boolean;
RELAY: boolean;
};
/**
* @name 创建房间
* @description createRoom 调用结果将在 callback 中异步返回。操作成功后,roomInfo 属性将更新。
* @description 创建房间成功后,玩家自动进入该房间,因此无法继续调用 joinRoom、matchPlayers 等方法,可以利用房间ID邀请其他玩家进入该房间。
* @param {MGOBE.types.CreateRoomPara} createRoomPara 创建房间参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.CreateRoomRsp>} callback 响应回调函数
* @returns {void}
*/
createRoom(createRoomPara: MGOBE.types.CreateRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.CreateRoomRsp>): void;
/**
* @name 创建团队房间
* @description createTeamRoom 调用结果将在 callback 中异步返回。操作成功后,roomInfo 属性将更新。
* @description 创建房间成功后,玩家自动进入该房间,因此无法继续调用 joinRoom、matchPlayers 等方法。
* @description 参数中的“房间最大玩家数量”要求能被“队伍数量”整除,创建成功后每个队伍的“队伍最小人数”为1,“队伍最大人数”为整除结果。
* @param {MGOBE.types.CreateTeamRoomPara} createTeamRoomPara 创建团队房间参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.CreateRoomRsp>} callback 响应回调函数
* @returns {void}
*/
createTeamRoom(createTeamRoomPara: MGOBE.types.CreateTeamRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.CreateRoomRsp>): void;
/**
* @name 加入房间
* @description joinRoom 调用结果将在 callback 中异步返回。
* @description 该接口加入的房间是 Room 实例所代表的房间,如果该 Room 实例的 roomInfo 不存在 roomId,则需要使用 roomId 通过 initRoom 方法初始化 Room 实例。
* @description 加房成功后,房间内全部成员(包含调用者)都会收到一条玩家加入房间广播 onJoinRoom,roomInfo 属性将更新。
* @param {MGOBE.types.JoinRoomPara} joinRoomPara 加入房间参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.JoinRoomRsp>} callback 响应回调函数
* @returns {void}
*/
joinRoom(joinRoomPara: MGOBE.types.JoinRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.JoinRoomRsp>): void;
/**
* @name 加入团队房间
* @description joinTeamRoom 调用结果将在 callback 中异步返回。
* @description 与 joinRoom 类似,该接口加入的房间是 Room 实例所代表的房间。teamId 为 roomInfo.teamList 中定义的队伍 ID。
* @param {MGOBE.types.JoinTeamRoomPara} joinTeamRoomPara 加入团队房间参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.JoinRoomRsp>} callback 响应回调函数
* @returns {void}
*/
joinTeamRoom(joinTeamRoomPara: MGOBE.types.JoinTeamRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.JoinRoomRsp>): void;
/**
* @name 退出房间
* @description leaveRoom 调用结果将在 callback 中异步返回。退出成功后,房间内剩余成员(不含调用者)都会收到一条玩家退出房间广播 onLeaveRoom,roomInfo 属性将更新,roomInfo.playerList 中将没有该玩家信息。
* @description 退房后,如果房间内还剩下其他玩家,则该 room 实例仍然代表退房前的房间,可以继续调用 room.initRoom() 清除房间信息。
* @param {object} para 预留参数,传{}即可
* @param {MGOBE.types.ReqCallback<MGOBE.types.LeaveRoomRsp>} callback 响应回调函数
* @returns {void}
*/
leaveRoom(para: {}, callback?: MGOBE.types.ReqCallback<MGOBE.types.LeaveRoomRsp>): void;
/**
* @name 解散房间
* @description dismissRoom 调用结果将在 callback 中异步返回。解散成功后,房间内全部成员(不含调用者)都会收到一条解散房间广播 onDismissRoom,roomInfo 属性将更新。
* @description 只有房主有权限解散房间
* @param {object} para 预留参数,传{}即可
* @param {MGOBE.types.ReqCallback<MGOBE.types.DismissRoomRsp>} callback 响应回调函数
* @returns {void}
*/
dismissRoom(para: {}, callback?: MGOBE.types.ReqCallback<MGOBE.types.DismissRoomRsp>): void;
/**
* @name 修改房间信息
* @description changeRoom 调用结果将在 callback 中异步返回。修改成功后,房间内全部成员都会收到一条修改房间广播 onChangeRoom,roomInfo 属性将更新。
* @description 只有房主有权限修改房间
* @param {MGOBE.types.ChangeRoomPara} changeRoomPara 修改房间参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.ChangeRoomRsp>} callback 响应回调函数
* @returns {void}
*/
changeRoom(changeRoomPara: MGOBE.types.ChangeRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.ChangeRoomRsp>): void;
/**
* @name 修改玩家自定义状态
* @description 修改玩家状态是修改 PlayerInfo 中的 customPlayerStatus 字段,玩家的状态由开发者自定义。
* @description 修改成功后,房间内全部成员都会收到一条修改玩家状态广播 onChangeCustomPlayerStatus,roomInfo 属性将更新。
* @description 每个玩家只能修改自己的状态,调用结果将在 callback 中异步返回。
* @param {MGOBE.types.ChangeCustomPlayerStatusPara} changeCustomPlayerStatusPara 修改玩家状态参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.ChangeCustomPlayerStatusRsp>} callback 响应回调函数
* @returns {void}
*/
changeCustomPlayerStatus(changeCustomPlayerStatusPara: MGOBE.types.ChangeCustomPlayerStatusPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.ChangeCustomPlayerStatusRsp>): void;
/**
* @name 移除房间内玩家
* @description 调用结果将在 callback 中异步返回。移除玩家成功后,房间内全部成员都会收到一条移除玩家广播 onRemovePlayer,roomInfo 属性将更新。
* @description 只有房主有权限移除其他玩家
* @param {MGOBE.types.RemovePlayerPara} removePlayerPara 移除房间内玩家参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.RemovePlayerRsp>} callback 响应回调函数
* @returns {void}
*/
removePlayer(removePlayerPara: MGOBE.types.RemovePlayerPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.RemovePlayerRsp>): void;
/**
* @name 获取Room实例的房间信息
* @description 该接口获取的是 Room 实例的房间信息,调用结果将在 callback 中异步返回。
* @description 如果该 Room 实例中的 roomInfo 属性没有 ID,该接口将查询玩家所在的房间。
* @description 如果 roomInfo 属性含有 ID,则查询该 ID 对应的房间信息。
* @description 操作成功后,roomInfo 属性将更新。
* @description 如果需要获取指定 ID 的房间信息,可以使用 getRoomByRoomId 方法。
* @param {MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>} callback 响应回调函数
* @returns {void}
*/
getRoomDetail(callback?: MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>): void;
/**
* @name 多人在线匹配
* @description 调用该接口后将发起多人在线匹配,callback 将异步返回调用结果。返回码为0表示调用成功。
* @description 调用成功后,Room.onMatch、Room.onCancelMatch 将回调匹配结果。
* @description 该接口需要与匹配规则配合使用,因此,匹配超时时间由开发者在匹配规则中定义。开发者需要在控制台上创建匹配,得到匹配 Code 作为该方法的参数 matchCode。
* @description matchPlayersPara.playerInfo 中的 matchAttributes 数组对应匹配规则中定义的 playerAttributes,playerAttributes 的每一种属性都要填入 matchAttributes 中,name 表示属性名,value 表示玩家该属性的值。
* @param {MGOBE.types.MatchPlayersPara} matchPlayersPara 多人匹配参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.MatchPlayersRsp>} callback 响应回调函数
* @returns {void}
*/
matchPlayers(matchPlayersPara: MGOBE.types.MatchPlayersPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.MatchPlayersRsp>): void;
/**
* @name 组队匹配
* @description 调用该接口后将以 playerInfoList 为小组一起进行匹配,callback 将异步返回调用结果。
* @description 调用成功后,Room.onMatch、Room.onCancelMatch 将回调匹配结果。小组成员都可以通过 cancelPlayerMatch 取消匹配。
* @description 匹配成功后,小组成员都会进入同一个房间,同一个队伍。
* @description 该接口需要与匹配规则配合使用,匹配超时时间由开发者在匹配规则中定义。开发者需要在控制台上创建匹配,得到匹配 Code 作为该方法的参数 matchCode。
* @description 根据匹配规则的不同,房间内的队伍可能包含多个小组。比如4V4的匹配(两个队伍),如果小组成员数为2,那么同一个队伍将由两个小组组成。
* @param {MGOBE.types.MatchGroupPara} matchGroupPara 多人匹配参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.MatchGroupRsp>} callback 响应回调函数
* @returns {void}
*/
matchGroup(matchGroupPara: MGOBE.types.MatchGroupPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.MatchGroupRsp>): void;
/**
* @name 房间匹配
* @description 调用该接口后将发起房间匹配,匹配结果将在 callback 中异步返回。操作成功后,Room 对象内部 roomInfo 属性将更新。
* @description 房间匹配是指按照传入的参数搜索现存的房间,如果存在,则将玩家加入该房间;如果不存在,则为玩家创建并加入一个新房间。
* @param {MGOBE.types.MatchRoomPara} matchRoomPara 房间匹配参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.MatchRoomSimpleRsp>} callback 响应回调函数
* @returns {void}
*/
matchRoom(matchRoomPara: MGOBE.types.MatchRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.MatchRoomSimpleRsp>): void;
/**
* @name 取消玩家匹配
* @description 该接口作用是取消匹配请求,即 matchPlayers、matchGroup 请求。调用结果将在 callback 中异步返回。如果玩家已经在房间中,回调函数将返回 roomInfo。
* @description cancelMatchPara.matchType 需要设置为 MGOBE.ENUM.MatchType.PLAYER_COMPLEX。
* @param {MGOBE.types.CancelMatchPara} cancelMatchPara 取消匹配参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.CancelMatchRsp>} callback 响应回调函数
* @returns {void}
*/
cancelPlayerMatch(cancelMatchPara: MGOBE.types.CancelPlayerMatchPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.CancelPlayerMatchRsp>): void;
/**
* @name 开始帧同步
* @description 调用结果将在 callback 中异步返回。调用成功后房间内全部成员将收到 onStartFrameSync 广播。该接口会修改房间帧同步状态为“已开始帧同步”。
* @description 房间内任意一个玩家成功调用该接口将导致全部玩家开始接收帧广播。
* @param {object} para 预留参数,传{}即可
* @param {MGOBE.types.ReqCallback<MGOBE.types.StartFrameSyncRsp>} callback 响应回调函数
* @returns {void}
*/
startFrameSync(para: {}, callback?: MGOBE.types.ReqCallback<MGOBE.types.StartFrameSyncRsp>): void;
/**
* @name 停止帧同步
* @description 调用结果将在 callback 中异步返回。调用成功后房间内全部成员将收到 onStopFrameSync 广播。该接口会修改房间帧同步状态为“已停止帧同步”。
* @description 房间内任意一个玩家成功调用该接口将导致全部玩家停止接收帧广播。
* @param {object} para 预留参数,传{}即可
* @param {MGOBE.types.ReqCallback<MGOBE.types.StoptFrameSyncRsp>} callback 响应回调函数
* @returns {void}
*/
stopFrameSync(para: {}, callback?: MGOBE.types.ReqCallback<MGOBE.types.StopFrameSyncRsp>): void;
/**
* @name 发送帧同步数据
* @description 帧数据内容 data 类型为普通 object,由开发者自定义,目前支持最大长度不超过1k。
* @description 后台将集合全部玩家的帧数据,并以一定时间间隔(由房间帧率定义)通过 onRecvFrame 广播给各客户端。调用结果将在 callback 中异步返回。
* @description 只有房间处于“已开始帧同步”状态才能调用该接口。
* @param {MGOBE.types.SendFramePara} sendFramePara 发送帧同步数据参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.SendFrameRsp>} callback 响应回调函数
* @returns {void}
*/
sendFrame(sendFramePara: MGOBE.types.SendFramePara, callback?: MGOBE.types.ReqCallback<MGOBE.types.SendFrameRsp>): void;
/**
* @name 请求补帧
* @description 调用结果将在 callback 中异步返回。
* @param {MGOBE.types.RequestFramePara} requestFramePara 请求补帧参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.RequestFrameRsp>} callback 响应回调函数
* @returns {void}
*/
requestFrame(requestFramePara: MGOBE.types.RequestFramePara, callback?: MGOBE.types.ReqCallback<MGOBE.types.RequestFrameRsp>): void;
/**
* @name 重试自动补帧
* @description 当收到 onAutoRequestFrameError 回调时,表示自动补帧失败,可以使用该方法重新触发自动补帧。
* @returns {void}
*/
retryAutoRequestFrame(): void;
/**
* @name 发送消息给房间内玩家
* @description 调用结果将在 callback 中异步返回。调用成功后所指定的接收消息的玩家将收到 onRecvFromClient 广播。
* @description 当 recvType 值为 1 (即 ROOM_ALL ) 时,房间内全部玩家将收到消息;
* @description 当 recvType 值为 2 (即 ROOM_OTHERS ) 时,房间内除消息发送者外的其他玩家将收到消息;
* @description 当 recvType 值为 3 (即 ROOM_SOME ) 时,接收消息玩家才由 recvPlayerList 决定。
* @param {MGOBE.types.SendToClientPara} sendToClientPara 发送消息参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.SendToClientRsp>} callback 响应回调函数
* @returns {void}
*/
sendToClient(sendToClientPara: MGOBE.types.SendToClientPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.SendToClientRsp>): void;
/**
* @name 发送消息给实时服务器
* @description 该接口只能在玩家进入房间后调用,调用结果将在 callback 中异步返回。
* @param {MGOBE.types.SendToGameSvrPara} sendToGameSvrPara 发送消息参数
* @param {MGOBE.types.ReqCallback<MGOBE.types.SendToGameSvrRsp>} callback 响应回调函数
* @returns {void}
*/
sendToGameSvr(sendToGameSvrPara: MGOBE.types.SendToGameSvrPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.SendToGameSvrRsp>): void;
}
/********************************* SDK Listener对象 *********************************/
export class Listener {
/**
* @name 初始化监听器
* @description 该方法为静态方法。初始化 Listener 时需要传入 gameInfo 和 config 两个参数。
* @description 初始化结果在 callback 中异步返回,错误码为 0 表示初始化成功。
* @param {MGOBE.types.GameInfoPara} gameInfo 游戏信息
* @param {MGOBE.types.ConfigPara} config 游戏配置
* @param {MGOBE.types.ReqCallback<null>} callback 初始化回调函数
* @returns {void}
*/
static init(gameInfo: MGOBE.types.GameInfoPara, config: MGOBE.types.ConfigPara, callback: MGOBE.types.ReqCallback<MGOBE.types.InitRsp>): void;
/**
* @name 为Room/Group实例添加广播监听
* @description 该方法为静态方法。实例化 Room/Group 对象之后,需要通过该方法给 Room/Group 注册广播事件监听。
* @description Listener 完成初始化之后才能添加监听。
* @param {Room 或 Group} entity 需要监听的房间/队组对象
* @returns {void}
*/
static add(entity: Room | Group): void;
/**
* @name 为Room/Group实例移除广播监听
* @description 该方法为静态方法。如果不再需要监听某个 Room/Group 对象的广播事件,可以通过该方法进行移除。
* @param {Room 或 Group} entity 需要移除监听的房间/队组对象
* @returns {void}
*/
static remove(entity: Room | Group): void;
/**
* @name 移除全部Room/Group对象的广播监听
* @description 该方法为静态方法。
* @returns {void}
*/
static clear(): void;
}
/********************************* SDK 错误码 *********************************/
export enum ErrCode {
EC_OK = 0,
EC_REQ_BAD_PKG = 1,
EC_CMD_INVALID = 2,
EC_PARAMS_INVALID = 3,
EC_INNER_ERROR = 4,
EC_TIME_OUT = 5,
EC_SERVER_BUSY = 6,
EC_NO_RIGHT = 7,
EC_ACCESS_CMD_INVALID_ERR = 200,
EC_ACCESS_CMD_GET_TOKEN_ERR = 201,
EC_ACCESS_CMD_TOKEN_PRE_EXPIRE = 202,
EC_ACCESS_CMD_INVALID_TOKEN = 203,
EC_ACCESS_PUSH_SERIALIZE_ERR = 204,
EC_ACCESS_LOGIN_BODY_PARSE_ERR = 205,
EC_ACCESS_CONN_ERR = 206,
EC_ACCESS_GET_RS_IP_ERR = 207,
EC_ACCESS_ADD_COMM_CONN_ERR = 208,
EC_ACCESS_ADD_HEART_CONN_ERR = 209,
EC_ACCESS_ADD_RELAY_CONN_ERR = 210,
EC_ACCESS_HEART_BODY_PARSE_ERR = 211,
EC_ACCESS_GET_COMM_CONNECT_ERR = 212,
EC_ACCESS_GET_RELAY_CONNECT_ERR = 213,
EC_ACCESS_ACCESS_INFO_EMPTY = 214,
EC_ACCESS_PLAYER_DUPLICATE_LOGIN = 215,
EC_ACCESS_NOE_RELAY_OR_STATE_SVR = 216,
EC_PLAYER_GAME_NOT_EXIST = 10000,
EC_PLAYER_SECRET_KEY_FAIL = 10001,
EC_PLAYER_SIGN_ERR = 10002,
EC_PLAYER_DUPLICATE_REQ = 10003,
EC_PLAYER_TIMESTAMP_INVALID = 10004,
EC_PLAYER_QUERY_PLAYER_FAIL = 10005,
EC_PLAYER_ADD_PLAYER_FAIL = 10006,
EC_PLAYER_QUERY_GAME_FAIL = 10007,
EC_PLAYER_RECORD_NUM_ERR = 10008,
EC_PLAYER_GET_TOKEN_FAIL = 10009,
EC_PLAYER_TOKEN_NOT_EXIST = 10010,
EC_PLAYER_TOKEN_INVALID = 10011,
EC_PLAYER_CLEAR_TOKEN_FAIL = 10012,
EC_PLAYER_LOCK_FAIL = 10013,
EC_PLAYER_UNLOCK_FAIL = 10014,
EC_PLAYER_SAVE_TOKEN_FAIL = 10015,
EC_PLAYER_GAME_OUT_OF_SERVICE = 10016,
EC_ROOM_CREATE_NO_PERMISSION = 20000,
EC_ROOM_DESTORY_NO_PERMISSION = 20001,
EC_ROOM_JOIN_NO_PERMISSION = 20002,
EC_ROOM_REMOVE_PLAYER_NO_PERMISSION = 20003,
EC_ROOM_MODIFY_PROPERTIES_NO_PEMISSION = 20004,
EC_ROOM_DISSMISS_NO_PERMISSION = 20005,
EC_ROOM_REMOVE_SELF_NO_PERMISSION = 20006,
EC_ROOM_CHECK_LOGIN_SESSION_ERR = 20007,
EC_ROOM_REMOVE_PLAYER_NOT_IN_ROOM = 20008,
EC_ROOM_PLAYER_ALREADY_IN_ROOM = 20010,
EC_ROOM_PLAYER_NOT_IN_ROOM = 20011,
EC_ROOM_PLAYERS_EXCEED_LIMIT = 20012,
EC_ROOM_JOIN_NOT_ALLOW = 20013,
EC_ROOM_MAX_PLAYERS_INVALID = 20014,
EC_ROOM_CREATE_FAIL = 20015,
EC_ROOM_PLAYER_OFFLINE = 20016,
EC_ROOM_PARAM_PAGE_INVALID = 20017,
EC_ROOM_GET_PLAYER_INFO_ERR = 20050,
EC_ROOM_GET_ROOM_INFO_ERR = 20051,
EC_ROOM_MODIFY_OWNER_ERR = 20052,
EC_ROOM_MAX_ROOM_NUMBER_EXCEED_LIMIT = 20053,
EC_ROOM_REMOVE_REDIS_PLAYER_ROOM_MATCH_ERR = -20052,
EC_ROOM_REMOVE_REDIS_ROOM_INFO_ERR = -20053,
EC_ROOM_REDIS_UPDATE_ERR = -20054,
EC_ROOM_REDIS_GET_LOCK_ERR = -20055,
EC_ROOM_REDIS_CHECK_LOCK_ERR = -20056,
EC_ROOM_REDIS_DEL_LOCK_ERR = -20057,
EC_ROOM_QUERY_PLAYER_ERR = 20060,
EC_ROOM_QUERY_GAME_ERR = 20061,
EC_ROOM_PLAYER_INFO_NOT_EXIST = 20062,
EC_ROOM_GAME_INFO_NOT_EXIST = 20063,
EC_ROOM_HISTORY_INFO_INSERT_ERR = -20064,
EC_ROOM_REGION_INFO_NOT_EXIST = 20065,
EC_ROOM_QUERY_REGION_ERR = 20066,
EC_ROOM_MODIFY_PLAYER_BUSY = 20070,
EC_ROOM_INFO_UNEXIST = 20080,
EC_ROOM_ALLOCATE_RELAYSVR_IP_PORT_ERR = 20090,
EC_ROOM_INVALID_PARAMS_TEAM_ID = 20100,
EC_ROOM_TEAM_MEMBER_LIMIT_EXCEED = 20101,
EC_ROOM_ALLOCATE_SERVICE_FAIL = -20200,
EC_MATCH_NO_ROOM = 30000,
EC_MATCH_TIMEOUT = 30001,
EC_MATCH_LOGIC_ERR = 30002,
EC_MATCH_ERR = 30010,
EC_MATCH_PLAYER_IS_IN_MATCH = 30011,
EC_MATCH_PLAYER_NOT_IN_MATCH = 30012,
EC_MATCH_GET_MATCH_INFO_ERR = 30013,
EC_MATCH_UPDATE_MATCH_INFO_ERR = 30014,
EC_MATCH_CANCEL_FAILED = 30015,
EC_MATCH_GET_PLAYER_LIST_INFO_ERR = 30016,
EC_MATCH_CREATE_ROOM_ERR = 30041,
EC_MATCH_JOIN_ROOM_ERR = 30042,
EC_MATCH_INVALID_PARAMS = 30043,
EC_MATCH_GROUP_NUM_EXCEED_LIMIT = 30044,
EC_MATCH_PLAYER_ID_IS_REPEATED = 30045,
EC_MATCH_CREATE_ROOM_PLAYER_ALREADY_IN_ROOM = 30050,
EC_MATCH_QUERY_PLAYER_ERR = 30100,
EC_MATCH_PLAYER_INFO_NOT_EXIST = 30101,
EC_MATCH_QUERY_GAME_ERR = 30102,
EC_MATCH_GAME_INFO_NOT_EXIST = 30103,
EC_MATCH_QUERY_REGION_ERR = 30104,
EC_MATCH_REGION_INFO_NOT_EXIST = 30105,
EC_MATCH_TEAM_FAIL = 30106,
EC_MATCH_PLAY_RULE_NOT_RUNNING = 30107,
EC_MATCH_PLAY_ATTR_NOT_FOUND = 30108,
EC_MATCH_PLAY_RULE_NOT_FOUND = 30109,
EC_MATCH_PLAY_RULE_ATTR_SEGMENT_NOT_FOUND = 30110,
EC_MATCH_PLAY_RULE_FUNC_ERR = 30111,
EC_MATCH_GET_PLAYER_ATTR_FAIL = 30112,
EC_MATCH_GET_TEAM_ATTR_FAIL = 30113,
EC_MATCH_NONE_TEAM_TYPE_FIT = 30114,
EC_MATCH_TEAM_TYPE_INVALID = 30115,
EC_MATCH_PLAYER_ATTR_NOT_FOUND = 30116,
EC_MATCH_REQUEST_ID_NOT_EXIST = 30117,
EC_MATCH_REQUEST_ID_IS_EXIST = 30118,
EC_MATCH_TEAM_MATCH_FAIL = 30119,
EC_MATCH_ROBOT_GROUP_NOT_RIGHT = 30120,
EC_MATCH_ROBOT_TEAM_NOT_RIGHT = 30121,
EC_MATCH_INNER_LOGIC_ERR = -30150,
EC_MATCH_INNER_PARAMS_ERR = -30160,
EC_MATCH_ROOM_INNER_ADD_NODE_ERR = -30170,
EC_MATCH_ROOM_INNER_DEL_NODE_ERR = -30171,
EC_MATCH_RESULT_TYPE_NOT_GSE = -30172,
EC_MATCH_REQUEST_CANCELED = 30173,
EC_RELAY_ALREADY_EXISTS = 40000,
EC_RELAY_NOT_EXISTS = 40001,
EC_RELAY_DATA_EXCEED_LIMITED = 40002,
EC_RELAY_MEMBER_ALREADY_EXISTS = 40003,
EC_RELAY_MEMBER_NOT_EXISTS = 40004,
EC_RELAY_STATE_INVALID = 40005,
EC_RELAY_INVALID_FRAME_RATE = 40006,
EC_RELAY_SET_FRAME_RATE_FORBIDDEN = 40007,
EC_RELAY_NO_MEMBERS = 40008,
EC_RELAY_GAMESVR_SERVICE_NOT_OPEN = 40009,
EC_RELAY_REQ_POD_FAIL = 40010,
EC_RELAY_NO_AVAILABLE_POD = 40011,
EC_RELAY_GET_FRAME_CACHE_FAIL = 40012,
EC_RELAY_HKV_CACHE_ERROR = 40015,
EC_RELAY_REDIS_CACHE_ERROR = 40016,
EC_RELAY_NOTIFY_RELAYWORKER_FAIL = 40018,
EC_RELAY_RESET_RELAY_ROOM_FAIL = 40019,
EC_RELAY_CLEAN_RELAY_ROOM_FAIL = 40020,
EC_RELAY_NO_PERMISSION = 40100,
EC_RELAY_NOTIFY_GAMESVR_FAIL = 40200,
EC_RELAY_FORWARD_TO_GAMESVR_FAIL = 40201,
EC_RELAY_FORWARD_TO_CLIENT_FAIL = 40202,
EC_GROUP_OPERATION_FAILED = 70000,
EC_INVALID_PARAMS_GROUP_NAME = 70001,
EC_INVALID_PARAMS_GROUP_TYPE = 70002,
EC_INVALID_PARAMS_GROUP_CUSTOM_PROPERTIES = 70003,
EC_INVALID_PARAMS_GROUP_PLAYER_NAME = 70004,
EC_INVALID_PARAMS_GROUP_PLAYER_CUSTOM_STATUS = 70005,
EC_INVALID_PARAMS_GROUP_PLAYER_CUSTOM_PROPERTIES = 70006,
EC_GROUP_MODIFY_OWNER_NO_PERMISSION = 70007,
EC_INVALID_PARAMS_GROUP_ID = 70008,
EC_INVALID_CHANGE_OPTION = 70009,
EC_INVALID_PARAMS_GROUP_OWNER = 70010,
EC_PLAYER_IS_EXIST_GROUP = 70011,
EC_PLAYER_IS_NOT_EXIST_GROUP = 70012,
EC_REMOVE_PLAYER_ID_IS_EMPTY = 70013,
EC_GROUP_REMOVE_PLAYER_NO_PERMISSION = 70014,
EC_INVALID_PARAMS_GROUP_RECV_TYPE = 70015,
EC_INVALID_PARAMS_RECV_PLAYER_ID = 70016,
EC_INVALID_PARAMS_MESSAGE_LENGTH = 70017,
EC_INVALID_PARAMS_MAX_PLAYER = 70018,
PERSISTENCE_GROUP_NUM_EXCEED_THE_LIMIT = 70019,
EC_INVALID_PARAMS_PLAYER_NOT_IN_GROUP = 70020,
NO_GROUP_OPERATION_PERMISSION = 70021,
EC_OPERATION_FAILED_GROUP_FORBID_JOIN = 70022,
EC_GROUP_CHAT_FREQUENCY_LIMIT = 70023,
EC_GROUP_PLAYER_NUM_LIMIT_EXCEED = 70024,
EC_PLAYER_GROUP_NUM_LIMIT_EXCEED = 70025,
EC_GROUP_NOT_EXIST = 70026,
EC_INVALID_PARAMS = 60000,
EC_INVALID_PARAMS_PLAY_MODE_VERSION = 60001,
EC_INVALID_PARAMS_PLAY_MODE_RULETYPE = 60002,
EC_INVALID_PARAMS_PLAY_MODE_EXPRESSION = 60003,
EC_INVALID_PARAMS_PLAY_MODE_TEAM = 60004,
EC_INVALID_PARAMS_MSGQ_ENCODE = 60020,
EC_INVALID_PARAMS_MSGQ_DECODE = 60021,
EC_INVALID_PARAMS_GAME_ID = 61000,
EC_INVALID_PARAMS_PLAYER_INFO = 61001,
EC_INVALID_PARAMS_MAX_PLAYERS = 61002,
EC_INVALID_PARAMS_ROOM_TYPE = 61003,
EC_INVALID_PARAMS_PLAYER_ID = 61004,
EC_INVALID_PARAMS_MATCH_TYPE = 61005,
EC_INVALID_PARAMS_MATCH_CODE = 61006,
EC_INVALID_PARAMS_OPEN_ID = 61007,
EC_INVALID_PARAMS_PLATFORM = 61008,
EC_INVALID_PARAMS_TIMESTAMP = 61009,
EC_INVALID_PARAMS_SIGN = 61010,
EC_INVALID_PARAMS_NONCE = 61011,
EC_INVALID_PARAMS_TOKEN = 61012,
EC_INVALID_PARAMS_NETWORK_STATE = 61013,
EC_INVALID_PARAMS_ROOM_NAME = 61014,
EC_INVALID_PARAMS_CREATE_ROOM_TYPE = 61015,
EC_INVALID_PARAMS_DEVICE_ID = 61016,
EC_INVALID_PARAMS_PAGE_NO = 61017,
EC_INVALID_PARAMS_PAGE_SIZE = 61018,
EC_INVALID_PARAMS_PLAYER_LIST = 61019,
EC_INVALID_PARAMS_MESSAGE = 61020,
EC_INVALID_CHANGE_ROOM_OPTION = 61021,
EC_INVALID_PARAMS_REGION = 61022,
EC_INVALID_PARAMS_OWNER = 61023,
EC_INVALID_PARAMS_OWNER_OPEN_ID = 61024,
EC_INVALID_PARAMS_OPEN_ID_DUPLICATE = 61026,
EC_INVALID_PARAMS_ROOM_CREATE_TYPE = 61027,
EC_MYSPP_SYSTEM_ERR = -1000,
EC_REDIS_KEY_NOT_EXIST = -66000,
EC_REDIS_SET_OP_ERR = -66001,
EC_REDIS_GET_OP_ERR = -66002,
EC_REDIS_DEL_OP_ERR = -66003,
EC_REDIS_EXPIRE_OP_ERR = -66004,
EC_REDIS_LOCK_OP_ERR = -66005,
EC_REDIS_LOCK_ALREADY_EXIST = -66006,
EC_REDIS_LIST_OP_ERR = -66020,
EC_REDIS_LIST_POP_EMPTY = -66021,
EC_REDIS_POOL_GET_INSTANCE_FAIL = -66022,
EC_REDIS_SET_IS_EMPTY = -66023,
EC_REDIS_OP_INVALID_PARAMS = -66024,
EC_MYSQL_NO_ROW_FOUND = -66100,
EC_MYSQL_MULTI_ROW_FOUND = -66101,
EC_MYSQL_INSERT_FAIL = -66102,
EC_MYSQL_DELETE_FAIL = -66103,
EC_MYSQL_UPDATE_FAIL = -66104,
EC_MYSQL_QUERYS_FAIL = -66105,
EC_PB_SERIALIZE_TO_STR_ERR = -66200,
EC_PB_PARSE_FROM_STR_ERR = -66201,
EC_DATA_FORMAT_ERR = -66210,
EC_JSON_FORMAT_ERR = -66211,
EC_JSON_PLAY_MODE_FORMAT_ERR = -66212,
EC_JSON_PLAY_MODE_PARISE_ERR = -66213,
EC_INVALID_PARAMS_RECORE_ID = -66601,
EC_HASHID_ERR = -66700,
EC_HASHID_ENCODE_ERR = -66701,
EC_HASHID_DECODE_ERR = -66702,
EC_CONF_ROOM_ID_BUCKET_ERR = -66801,
EC_SDK_SEND_FAIL = 90001,
EC_SDK_UNINIT = 90002,
EC_SDK_RES_TIMEOUT = 90003,
EC_SDK_NO_LOGIN = 90004,
EC_SDK_NO_CHECK_LOGIN = 90005,
EC_SDK_SOCKET_ERROR = 90006,
EC_SDK_SOCKET_CLOSE = 90007,
EC_SDK_NO_ROOM = 90008,
EC_SDK_ENCODE_PARAM_FAIL = 90009,
EC_SDK_INVALID_PARAMS = 90010
}
namespace types {
/**
* @name 初始化回调参数
* @field {number} serverTime 服务器时间戳(单位:毫秒)
*/
interface InitRsp {
serverTime: number;
}
/**
* @name 玩家信息参数
* @field {string} name 玩家昵称
* @field {number} customPlayerStatus 自定义玩家状态
* @field {string} customProfile 自定义玩家信息
*/
interface PlayerInfoPara {
name: string;
customPlayerStatus: number;
customProfile: string;
}
/**
* @name 玩家信息参数
* @field {string} name 玩家昵称
* @field {number} customPlayerStatus 自定义玩家状态
* @field {string} customProfile 自定义玩家信息
* @field {MGOBE.types.MatchAttribute[]} matchAttributes 匹配属性
*/
interface MatchPlayerInfoPara {
name: string;
customPlayerStatus: number;
customProfile: string;
matchAttributes: MGOBE.types.MatchAttribute[];
}
/**
* @name 初始化参数:游戏信息
* @description 游戏秘钥指控制台上的“游戏key”。在初始化SDK时,secretKey、CreateSignature两个参数传其中一个即可。如果实现了CreateSignature方法,则忽略secretKey参数。
* @description CreateSignature用于计算签名signature,优点在于避免客户端泄露游戏密钥。
* @field {string} gameId 游戏ID
* @field {string} openId 玩家openId
* @field {string} secretKey 游戏秘钥
* @field {MGOBE.types.CreateSignature} createSignature 签名函数
*/
interface GameInfoPara {
gameId: string;
openId: string;
secretKey?: string;
createSignature?: MGOBE.types.CreateSignature;
}
/**
* @name 初始化参数:配置参数
* @description 服务地址指控制台上的“域名”
* @field {number} reconnectMaxTimes 重连接次数(默认15)(可选)
* @field {number} reconnectInterval 重连接时间间隔(毫秒,默认500)(可选)
* @field {number} resendInterval 消息重发时间间隔(毫秒,默认1000)(可选)
* @field {number} resendTimeout 消息重发超时时间(毫秒,默认20000)(可选)
* @field {string} url 服务地址
* @field {boolean} isAutoRequestFrame 是否自动补帧(默认false)(可选)
* @field {string} cacertNativeUrl 本地CA根证书路径(CocosNative环境需要该参数)(可选)
*/
interface ConfigPara {
reconnectMaxTimes?: number;
reconnectInterval?: number;
resendInterval?: number;
resendTimeout?: number;
url?: string;
isAutoRequestFrame?: boolean;
cacertNativeUrl?: string;
}
/**
* @name 初始化签名
* @description 可以使用签名的方式初始化SDK,避免客户端泄露游戏密钥。
* @field {string} sign 签名
* @field {number} nonce 随机正整数(uint64类型)
* @field {number} timestamp 时间戳,秒(uint64类型)
*/
interface Signature {
sign: string;
nonce: number;
timestamp: number;
}
/**
* @name 签名函数
* @description 开发者如果使用签名方式初始化SDK,需要实现该方法,并在callback中回调Signature对象。
* @field {(signature: MGOBE.types.Signature) => any} callback 回调函数,在该函数返回Signature对象
*/
type CreateSignature = (callback: (signature: MGOBE.types.Signature) => any) => any;
/**
* @name 修改玩家状态参数
* @field {number} customPlayerStatus 自定义玩家状态
*/
interface ChangeCustomPlayerStatusPara {
customPlayerStatus: number;
}
/**
* @name 创建房间参数
* @field {string} roomName 房间名称
* @field {string} roomType 房间类型
* @field {number} maxPlayers 房间最大玩家数量
* @field {boolean} isPrivate 是否私有
* @field {string} customProperties 自定义房间属性
* @field {MGOBE.types.PlayerInfoPara} playerInfo 玩家信息
*/
interface CreateRoomPara {
roomName: string;
roomType: string;
maxPlayers: number;
isPrivate: boolean;
customProperties: string;
playerInfo: MGOBE.types.PlayerInfoPara;
}
/**
* @name 创建团队房间参数
* @field {string} roomName 房间名称
* @field {string} roomType 房间类型
* @field {number} maxPlayers 房间最大玩家数量
* @field {boolean} isPrivate 是否私有
* @field {string} customProperties 自定义房间属性
* @field {MGOBE.types.PlayerInfoPara} playerInfo 玩家信息
* @field {number} teamNumber 队伍数量
*/
interface CreateTeamRoomPara {
roomName: string;
roomType: string;
maxPlayers: number;
isPrivate: boolean;
customProperties: string;
playerInfo: MGOBE.types.PlayerInfoPara;
teamNumber: number;
}
/**
* @name 加入房间参数
* @field {MGOBE.types.PlayerInfoPara} playerInfo 玩家信息
*/
interface JoinRoomPara {
playerInfo: MGOBE.types.PlayerInfoPara;
}
/**
* @name 加入团队房间参数
* @field {MGOBE.types.PlayerInfoPara} playerInfo 玩家信息
* @field {string} teamId 队伍ID
*/
interface JoinTeamRoomPara {
playerInfo: MGOBE.types.PlayerInfoPara;
teamId: string;
}
/**
* @name 房间变更参数
* @field {string} roomName 房间名称(可选)
* @field {string} owner 房主ID(可选)
* @field {boolean} isPrivate 是否私有(可选)
* @field {string} customProperties 自定义房间属性(可选)
* @field {boolean} isForbidJoin 是否禁止加入房间(可选)
*/
interface ChangeRoomPara {
roomName?: string;
owner?: string;
isPrivate?: boolean;
customProperties?: string;
isForbidJoin?: boolean;
}
/**
* @name 移除房间内玩家参数
* @field {string} removePlayerId 被移除玩家ID
*/
interface RemovePlayerPara {
removePlayerId: string;
}
/**
* @name 获取房间列表参数
* @field {number} pageNo 页号,从1开始
* @field {number} pageSize 每页数量,最大为10
* @field {string} roomType 房间类型(可选)
* @field {boolean} isDesc 是否按照房间创建时间倒序
*/
interface GetRoomListPara {
pageNo: number;
pageSize: number;
roomType?: string;
isDesc?: boolean;
}
/**
* @name 获取房间参数
* @field {string} roomId 房间ID
*/
interface GetRoomByRoomIdPara {
roomId: string;
}
/**
* @name 多人匹配参数
* @description 匹配 code 需要在控制台创建匹配获得。
* @field {string} matchCode 匹配Code
* @field {MGOBE.types.MatchPlayerInfoPara} playerInfo 玩家信息
*/
interface MatchPlayersPara {
matchCode: string;
playerInfo: MGOBE.types.MatchPlayerInfoPara;
}
/**
* @name 房间匹配参数
* @field {MGOBE.types.PlayerInfoPara} playerInfo 玩家信息
* @field {number} maxPlayers 房间最大玩家数量
* @field {string} roomType 房间的类型
*/
interface MatchRoomPara {
playerInfo: MGOBE.types.PlayerInfoPara;
maxPlayers: number;
roomType: string;
}
/**
* @name 组队匹配玩家信息参数
* @field {string} id 玩家ID
* @field {string} name 玩家昵称
* @field {number} customPlayerStatus 自定义玩家状态
* @field {string} customProfile 自定义玩家信息
* @field {MGOBE.types.MatchAttribute[]} matchAttributes 匹配属性
*/
interface MatchGroupPlayerInfoPara {
id: string;
name: string;
customPlayerStatus: number;
customProfile: string;
matchAttributes: MGOBE.types.MatchAttribute[];
}
/**
* @name 组队匹配参数
* @description 匹配 code 需要在控制台创建匹配获得。
* @field {string} matchCode 匹配Code
* @field {MGOBE.types.MatchGroupPlayerInfoPara[]} playerInfoList[] 队员信息
*/
interface MatchGroupPara {
matchCode: string;
playerInfoList: MGOBE.types.MatchGroupPlayerInfoPara[];
}
/**
* @name 组队匹配结束广播回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
* @field {number} errCode 错误码
*/
interface MatchBst {
roomInfo: MGOBE.types.RoomInfo;
errCode: number;
}
/**
* @name 组队匹配取消广播回调参数
* @field {string} matchCode 匹配Code
* @field {string} playerId 发起取消匹配的玩家ID
*/
interface CancelMatchBst {
matchCode: string;
playerId: string;
}
/**
* @name 取消匹配参数
* @field {MGOBE.types.MatchType} matchType 匹配类型
*/
interface CancelPlayerMatchPara {
matchType: MGOBE.types.MatchType;
}
/**
* @name 发送帧数据参数
* @field {object} data 帧数据
*/
interface SendFramePara {
data: object;
}
/**
* @name 请求补帧参数
* @description 补帧范围大于等于beginFrameId,小于等于endFrameId
* @field {number} beginFrameId 起始帧号
* @field {number} endFrameId 结束帧号
*/
interface RequestFramePara {
beginFrameId: number;
endFrameId: number;
}
/**
* @name 消息接收者类型
* @field {1} ROOM_ALL 全部玩家
* @field {2} ROOM_OTHERS 除自己外的其他玩家
* @field {3} ROOM_SOME 房间中部分玩家
*/
enum RecvType {
ROOM_ALL = 1,
ROOM_OTHERS = 2,
ROOM_SOME = 3
}
/**
* @name 发送房间内消息参数
* @field {string[]} recvPlayerList 接收消息玩家ID列表
* @field {string} msg 消息内容
* @field {MGOBE.types.RecvType} recvType 消息接收者类型
*/
interface SendToClientPara {
recvPlayerList: string[];
msg: string;
recvType: MGOBE.types.RecvType;
}
/**
* @name 发自定义服务消息参数
* @field {object} data 消息内容
*/
interface SendToGameSvrPara {
data: object;
}
/**
* @name 自定义服务消息广播回调参数
* @field {number} roomId 房间ID
* @field {string[]} playerIdList 接收消息玩家ID列表
* @field {object} data 消息内容
*/
interface RecvFromGameSvrBst {
roomId: string;
recvPlayerIdList: string[];
data: object;
}
/**
* @name 帧内容
* @field {string} playerId 玩家ID
* @field {object} data 玩家帧内容
* @field {number} timestamp 时间戳,各玩家本地发送帧的时间
*/
interface FrameItem {
playerId: string;
data: object;
timestamp: number;
}
/**
* @name 帧数据
* @description 附加信息包含一个 number 类型随机种子,开发者可以使用帧 ID 与随机种子组合成一个值来初始化 RandomUtil 工具。
* @description time 为 SDK 拟合出来的时间,目的是使每一帧到达客户端的时间尽量均匀分布,并且时间间隔尽量接近帧率的倒数。
* @description isReplay 表示该帧是否为自动补帧产生的帧,自动补帧需要在初始化 Listener 时设置。
* @description items 数组表示各个客户端发送的帧消息,按照到达服务器时间先后进行排序(数组中第0个为最先到服务器)。
* @field {number} frameId 帧ID
* @field {MGOBE.types.FrameItem[]} items 帧内容
* @field {MGOBE.types.FrameExtInfo} ext 附加信息
* @field {number} roomId 房间ID
* @field {number} time 该帧到达客户端时间
* @field {boolean} isReplay 是否为补帧
*/
interface Frame {
id: number;
items: MGOBE.types.FrameItem[];
ext: MGOBE.types.FrameExtInfo;
roomId: string;
time?: number;
isReplay?: boolean;
}
/**
* @name 帧广播回调参数
* @field {MGOBE.types.Frame} frame 帧数据
*/
interface RecvFrameBst {
frame: MGOBE.types.Frame;
}
/**
* @name 请求补帧回调参数
* @field {MGOBE.types.Frame[]} frames 帧数据数组
*/
interface RequestFrameRsp {
frames: MGOBE.types.Frame[];
}
/**
* @name 玩家加入房间广播回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
* @field {string} joinPlayerId 加房玩家ID
*/
interface JoinRoomBst {
roomInfo: MGOBE.types.RoomInfo;
joinPlayerId: string;
}
/**
* @name 玩家退出房间广播回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
* @field {string} leavePlayerId 退房玩家ID
*/
interface LeaveRoomBst {
roomInfo: MGOBE.types.RoomInfo;
leavePlayerId: string;
}
/**
* @name 房间被解散广播回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间解散前的信息
*/
interface DismissRoomBst {
roomInfo: MGOBE.types.RoomInfo;
}
/**
* @name 房间属性变更广播回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
*/
interface ChangeRoomBst {
roomInfo: MGOBE.types.RoomInfo;
}
/**
* @name 房间内玩家被移除广播回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
* @field {string} removePlayerId 被移除玩家ID
*/
interface RemovePlayerBst {
roomInfo: MGOBE.types.RoomInfo;
removePlayerId: string;
}
/**
* @name 房间消息广播回调参数
* @field {number} roomId 房间ID
* @field {string} sendPlayerId 发送者ID
* @field {string} msg 消息内容
*/
interface RecvFromClientBst {
roomId: string;
sendPlayerId: string;
msg: string;
}
/**
* @name 房间内玩家网络状态变化广播回调参数
* @field {string} changePlayerId 玩家ID
* @field {MGOBE.types.NetworkState} networkState 网络状态
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
*/
interface ChangePlayerNetworkStateBst {
changePlayerId: string;
networkState: MGOBE.types.NetworkState;
roomInfo: MGOBE.types.RoomInfo;
}
/**
* @name 玩家自定义状态变化广播回调参数
* @field {string} changePlayerId 玩家ID
* @field {number} customPlayerStatus 自定义玩家信息
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
*/
interface ChangeCustomPlayerStatusBst {
changePlayerId: string;
customPlayerStatus: number;
roomInfo: MGOBE.types.RoomInfo;
}
/**
* @name 开始帧同步广播回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
*/
interface StartFrameSyncBst {
roomInfo: MGOBE.types.RoomInfo;
}
/**
* @name 停止帧同步广播回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
*/
interface StopFrameSyncBst {
roomInfo: MGOBE.types.RoomInfo;
}
/**
* @name 房间属性
* @description isPrivate 属性为 true 表示该房间为私有房间,不能被 matchRoom 接口匹配到。
* @field {string} id 房间ID
* @field {string} name 房间名称
* @field {string} type 房间类型
* @field {MGOBE.types.CreateRoomType} createType 创建房间方式
* @field {number} maxPlayers 房间最大玩家数量
* @field {string} owner 房主ID
* @field {boolean} isPrivate 是否私有
* @field {string} customProperties 房间自定义属性
* @field {MGOBE.types.PlayerInfo[]} playerList 玩家列表
* @field {MGOBE.types.TeamInfo[]} teamList 团队属性
* @field {MGOBE.types.FrameSyncState} frameSyncState 房间帧同步状态
* @field {number} frameRate 帧率
* @field {string} routeId 路由ID
* @field {number} createTime 房间创建时的时间戳(单位:秒)
* @field {number} startGameTime 开始帧同步时的时间戳(单位:秒)
* @field {boolean} isForbidJoin 是否禁止加入房间
*/
interface RoomInfo {
id: string;
name: string;
type: string;
createType: MGOBE.types.CreateRoomType;
maxPlayers: number;
owner: string;
isPrivate: boolean;
customProperties: string;
playerList: MGOBE.types.PlayerInfo[];
teamList: MGOBE.types.TeamInfo[];
frameSyncState: MGOBE.types.FrameSyncState;
frameRate: number;
routeId: string;
createTime: number;
startGameTime: number;
isForbidJoin: boolean;
}
/**
* @name 修改玩家状态回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
*/
interface ChangeCustomPlayerStatusRsp {
roomInfo: MGOBE.types.RoomInfo;
}
/**
* @name 创建房间回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
*/
interface CreateRoomRsp {
roomInfo: MGOBE.types.RoomInfo;
}
/**
* @name 加入房间回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
*/
interface JoinRoomRsp {
roomInfo: MGOBE.types.RoomInfo;
}
/**
* @name 退出房间回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
*/
interface LeaveRoomRsp {
roomInfo: MGOBE.types.RoomInfo;
}
/**
* @name 解散房间回调参数
*/
interface DismissRoomRsp {
}
/**
* @name 修改房间回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
*/
interface ChangeRoomRsp {
roomInfo: MGOBE.types.RoomInfo;
}
/**
* @name 移除房间内玩家回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
*/
interface RemovePlayerRsp {
roomInfo: MGOBE.types.RoomInfo;
}
/**
* @name 获取房间信息回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
*/
interface GetRoomByRoomIdRsp {
roomInfo: MGOBE.types.RoomInfo;
}
/**
* @name 获取房间列表回调参数
* @field {MGOBE.types.RoomInfo[]} roomList 房间列表
* @field {number} total 房间总数
*/
interface GetRoomListRsp {
gameId: string;
roomList: MGOBE.types.RoomInfo[];
total: number;
}
/**
* @name 多人匹配回调参数
* @field {MGOBE.types.MatchType} matchType 匹配类型
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
*/
interface MatchPlayersRsp {
matchType?: MGOBE.types.MatchType;
roomInfo?: MGOBE.types.RoomInfo;
}
/**
* @name 房间匹配回调参数
* @field {MGOBE.types.RoomInfo} roomInfo 房间信息
*/
interface MatchRoomSimpleRsp {
roomInfo: MGOBE.types.RoomInfo;
}
/**
* @name 组队匹配回调参数
* @field {string} matchCode 匹配Code
*/
interface MatchGroupRsp {
matchCode: string;
}
/**
* @name 取消匹配回调参数
*/
interface CancelPlayerMatchRsp {
}
/**
* @name 开始帧同步回调参数
*/
interface StartFrameSyncRsp {
}
/**
* @name 停止帧同步回调参数
*/
interface StopFrameSyncRsp {
}
/**
* @name 发送帧同步数据回调参数
*/
interface SendFrameRsp {
}
/**
* @name 房间内发送消息回调参数
*/
interface SendToClientRsp {
}
/**
* @name 发送自定义服务消息回调参数
*/
interface SendToGameSvrRsp {
}
/**
* @name 匹配属性
* @field {string} name 属性名称
* @field {number} value 属性值
*/
interface MatchAttribute {
name: string;
value: number;
}
/**
* @name 匹配类型
* @field {1} ROOM_SIMPLE 房间匹配
* @field {2} PLAYER_COMPLEX 玩家匹配
*/
enum MatchType {
ROOM_SIMPLE = 1,
PLAYER_COMPLEX = 2
}
/**
* @name 帧数据附加信息
* @field {number} seed 随机数种子
*/
interface FrameExtInfo {
seed: number;
}
/**
* @name 创建房间方式
* @field {0} COMMON_CREATE 普通创建
* @field {1} MATCH_CREATE 匹配创建
*/
enum CreateRoomType {
COMMON_CREATE = 0,
MATCH_CREATE = 1,
THIRD_PARTY_CREATE = 2
}
/**
* @name 网络状态
* @field {0} COMMON_OFFLINE 房间/队组中玩家掉线
* @field {1} COMMON_ONLINE 房间/队组中玩家在线
* @field {2} RELAY_OFFLINE 帧同步中玩家掉线
* @field {3} RELAY_ONLINE 帧同步中玩家在线
*/
enum NetworkState {
COMMON_OFFLINE = 0,
COMMON_ONLINE = 1,
RELAY_OFFLINE = 2,
RELAY_ONLINE = 3
}
/**
* @name 房间帧同步状态
* @field {0} STOP 未开始帧同步
* @field {1} START 已开始帧同步
*/
enum FrameSyncState {
STOP = 0,
START = 1
}
/**
* @name 玩家信息
* @field {string} id 玩家ID
* @field {string} name 玩家昵称
* @field {string} teamId 队伍ID
* @field {number} customPlayerStatus 自定义玩家状态
* @field {string} customProfile 自定义玩家信息
* @field {MGOBE.types.NetworkState} commonNetworkState 玩家在房间的网络状态
* @field {MGOBE.types.NetworkState} relayNetworkState 玩家在游戏中的网络状态
* @field {boolean} isRobot 玩家是否为机器人
* @field {MGOBE.types.MatchAttribute[]} matchAttributes 玩家匹配属性列表(isRobot为true时生效)
*/
interface PlayerInfo {
id: string;
name: string;
teamId: string;
customPlayerStatus: number;
customProfile: string;
commonNetworkState: MGOBE.types.NetworkState;
relayNetworkState: MGOBE.types.NetworkState;
isRobot: boolean;
matchAttributes: MGOBE.types.MatchAttribute[];
}
/**
* @name 队伍信息
* @field {string} id 队伍ID
* @field {string} name 队伍名称
* @field {number} minPlayers 队伍最小人数
* @field {number} maxPlayers 队伍最大人数
*/
interface TeamInfo {
id: string;
name: string;
minPlayers: number;
maxPlayers: number;
}
/**
* @name 队组类型
* @field {0} GROUP_LIMITED 玩家只能同时存在于1个该类型队组。该类型的队组人数上限:100。
* @field {1} GROUP_MANY 玩家可以同时存在于多个(上限为5)该类型队组。该类型的队组人数上限:300。
*/
enum GroupType {
GROUP_LIMITED = 0,
GROUP_MANY = 1
}
/**
* @name 队组信息
* @description 对于非持久化队组(isPersistent为false),当队组解散,或者队组内没有玩家,或者队组玩家全部掉线超过60分钟,或者队组存在时间超过24小时后,队组会被销毁。
* @description 对于持久化队组(isPersistent为true),只有当主动解散队组后,队组会被销毁。
* @description 玩家可以加入多个 GROUP_MANY 类型队组(type 为 GroupType.GROUP_MANY),同时加入的数量上限为5个。
* @description 玩家最多只能加入1个 GROUP_LIMITED 类型队组(type 为 GroupType.GROUP_LIMITED)。
* @field {string} id 队组ID
* @field {string} name 队组名称
* @field {MGOBE.types.GroupType} type 队组类型
* @field {number} maxPlayers 队组最大玩家数量
* @field {string} owner 队长ID
* @field {string} customProperties 自定义队组属性
* @field {number} createTime 创建队组时间
* @field {boolean} isForbidJoin 是否禁止加入队组
* @field {boolean} isPersistent 是否持久化
* @field {MGOBE.types.GroupPlayerInfo[]} groupPlayerList 队组内的玩家列表
*/
interface GroupInfo {
id: string;
name: string;
type: MGOBE.types.GroupType;
maxPlayers: number;
owner: string;
customProperties: string;
createTime: number;
isForbidJoin: boolean;
isPersistent: boolean;
groupPlayerList: MGOBE.types.GroupPlayerInfo[];
}
/**
* @name 队组玩家信息
* @field {string} id 玩家ID
* @field {string} name 玩家昵称
* @field {number} customGroupPlayerStatus 自定义玩家状态
* @field {string} customGroupPlayerProfile 自定义玩家信息
* @field {MGOBE.types.NetworkState} commonGroupNetworkState 玩家网络状态
*/
interface GroupPlayerInfo {
id: string;
name: string;
customGroupPlayerStatus: number;
customGroupPlayerProfile: string;
commonGroupNetworkState: MGOBE.types.NetworkState;
}
/**
* @name 玩家加入队组广播回调参数
* @field {MGOBE.types.GroupInfo} groupInfo 队组信息
* @field {string} joinPlayerId 加入队组玩家ID
*/
interface JoinGroupBst {
groupInfo: MGOBE.types.GroupInfo;
joinPlayerId: string;
}
/**
* @name 玩家退出队组广播回调参数
* @field {MGOBE.types.GroupInfo} groupInfo 队组信息
* @field {string} leavePlayerId 退出队组玩家ID
*/
interface LeaveGroupBst {
groupInfo: MGOBE.types.GroupInfo;
leavePlayerId: string;
}
/**
* @name 队组解散广播回调参数
* @field {MGOBE.types.GroupInfo} groupInfo 队组信息
*/
interface DismissGroupBst {
groupInfo: MGOBE.types.GroupInfo;
}
/**
* @name 队组属性变更广播回调参数
* @field {MGOBE.types.GroupInfo} groupInfo 队组信息
*/
interface ChangeGroupBst {
groupInfo: MGOBE.types.GroupInfo;
}
/**
* @name 队组内玩家被移除广播回调参数
* @field {MGOBE.types.GroupInfo} groupInfo 队组信息
* @field {string} removePlayerId 被移除玩家ID
*/
interface RemoveGroupPlayerBst {
groupInfo: MGOBE.types.GroupInfo;
removePlayerId: string;
}
/**
* @name 队组内玩家网络状态变化广播回调参数
* @field {MGOBE.types.GroupInfo} groupInfo 队组信息
* @field {string} changePlayerId 玩家ID
* @field {MGOBE.types.NetworkState} networkState 玩家网络状态
*/
interface ChangeGroupPlayerNetworkStateBst {
groupInfo: MGOBE.types.GroupInfo;
changePlayerId: string;
networkState: MGOBE.types.NetworkState;
}
/**
* @name 队组内玩家自定义状态变化广播回调参数
* @field {MGOBE.types.GroupInfo} groupInfo 队组信息
* @field {string} changePlayerId 玩家ID
* @field {number} customGroupPlayerStatus 自定义玩家状态
*/
interface ChangeCustomGroupPlayerStatusBst {
groupInfo: MGOBE.types.GroupInfo;
changePlayerId: string;
customGroupPlayerStatus: number;
}
/**
* @name 队组内消息广播回调参数
* @field {string} groupId 队组ID
* @field {string} sendPlayerId 消息发送者ID
* @field {string} msg 消息内容
*/
interface RecvFromGroupClientBst {
groupId: string;
sendPlayerId: string;
msg: string;
}
/**
* @name 获取队组信息参数
* @field {string} groupId 队组ID
*/
interface GetGroupByGroupIdPara {
groupId: string;
}
/**
* @name 获取队组信息回调参数
* @field {MGOBE.types.GroupInfo} groupInfo 队组信息
*/
interface GetGroupByGroupIdRsp {
groupInfo: MGOBE.types.GroupInfo;
}
/**
* @name 获取当前玩家队组信息回调参数
* @field {MGOBE.types.GroupInfo[]} groupInfoList 队组信息列表
*/
interface GetMyGroupsRsp {
groupInfoList: MGOBE.types.GroupInfo[];
}
/**
* @name 队组玩家信息参数
* @field {string} name 玩家昵称(字符串长度上限为32)
* @field {number} customGroupPlayerStatus 自定义玩家状态(取值范围为[0,99999])
* @field {string} customGroupPlayerProfile 自定义玩家信息(字符串长度上限为1024)
*/
interface GroupPlayerInfoPara {
name: string;
customGroupPlayerStatus: number;
customGroupPlayerProfile: string;
}
/**
* @name 创建队组参数
* @description 对于持久化队组(isPersistent 为 true),maxPlayers 上限为100。
* @description 对于非持久化队组(isPersistent 为 false),maxPlayers上限为300。
* @description 每个游戏可以创建的持久化队组数量上限为3个。
* @field {string} groupName 队组名称(字符串长度上限为32)
* @field {MGOBE.types.GroupType} groupType 队组类型
* @field {number} maxPlayers 队组最大玩家数量
* @field {string} customProperties 自定义队组属性(字符串长度上限为1024)
* @field {MGOBE.types.GroupPlayerInfoPara} playerInfo 玩家信息
* @field {boolean} isForbidJoin 是否禁止加入队组
* @field {boolean} isPersistent 是否持久化
*/
interface CreateGroupPara {
groupName: string;
groupType: MGOBE.types.GroupType;
maxPlayers: number;
customProperties: string;
playerInfo: MGOBE.types.GroupPlayerInfoPara;
isForbidJoin: boolean;
isPersistent: boolean;
}
/**
* @name 创建队组回调参数
* @field {MGOBE.types.GroupInfo} groupInfo 队组信息
*/
interface CreateGroupRsp {
groupInfo: MGOBE.types.GroupInfo;
}
/**
* @name 加入队组参数
* @field {MGOBE.types.GroupPlayerInfoPara} playerInfo 玩家信息
*/
interface JoinGroupPara {
playerInfo: MGOBE.types.GroupPlayerInfoPara;
}
/**
* @name 加入队组回调参数
* @field {MGOBE.types.GroupInfo} groupInfo 队组信息
*/
interface JoinGroupRsp {
groupInfo: MGOBE.types.GroupInfo;
}
/**
* @name 离开队组回调参数
* @field {MGOBE.types.GroupInfo} groupInfo 队组信息
*/
interface LeaveGroupRsp {
groupInfo: MGOBE.types.GroupInfo;
}
/**
* @name 解散队组回调参数
*/
interface DismissGroupRsp {
}
/**
* @name 更新队组参数
* @field {string} groupName 队组名称(可选)
* @field {string} owner 队长ID(可选)
* @field {string} customProperties 自定义队组属性(可选)
* @field {boolean} isForbidJoin 是否禁止加入队组(可选)
*/
interface ChangeGroupPara {
groupName?: string;
owner?: string;
customProperties?: string;
isForbidJoin?: boolean;
}
/**
* @name 更新队组回调参数
* @field {MGOBE.types.GroupInfo} groupInfo 队组信息
*/
interface ChangeGroupRsp {
groupInfo: MGOBE.types.GroupInfo;
}
/**
* @name 移除队组玩家参数
* @field {string} removePlayerId 被移除玩家ID
*/
interface RemoveGroupPlayerPara {
removePlayerId: string;
}
/**
* @name 移除队组玩家回调参数
* @field {MGOBE.types.GroupInfo} groupInfo 队组信息
*/
interface RemoveGroupPlayerRsp {
groupInfo: MGOBE.types.GroupInfo;
}
/**
* @name 修改队组玩家状态参数
* @field {number} customGroupPlayerStatus 自定义玩家状态(取值范围为[0,99999])
*/
interface ChangeCustomGroupPlayerStatusPara {
customGroupPlayerStatus: number;
}
/**
* @name 修改队组玩家状态回调参数
* @field {MGOBE.types.GroupInfo} groupInfo 队组信息
*/
interface ChangeCustomGroupPlayerStatusRsp {
groupInfo: MGOBE.types.GroupInfo;
}
/**
* @name 消息接收者类型
* @field {1} GROUP_ALL 全部玩家
* @field {2} GROUP_OTHERS 除自己外的其他玩家
* @field {3} GROUP_SOME 队组中部分玩家
*/
enum GroupRecvType {
GROUP_ALL = 1,
GROUP_OTHERS = 2,
GROUP_SOME = 3
}
/**
* @name 发送队组内消息参数
* @field {string[]} recvPlayerList 接收消息玩家ID列表
* @field {string} msg 消息内容
* @field {MGOBE.types.GroupRecvType} recvType 消息接收者类型
*/
interface SendToGroupClientPara {
recvPlayerList: string[];
msg: string;
recvType: MGOBE.types.GroupRecvType;
}
/**
* @name 发送队组内消息回调参数
*/
interface SendToGroupClientRsp {
}
/**
* 响应回调参数
* @field {number} code 错误码
* @field {string} msg 错误信息
* @field {string} seq 响应序列号
* @field {any} data 响应数据
*/
interface ResponseEvent<T> {
code: number;
msg: string;
seq: string;
data?: T;
}
/**
* 广播回调参数
* @field {any} data 广播数据
* @field {string} seq 广播序列号
*/
interface BroadcastEvent<T> {
data: T;
seq: string;
}
/**
* 响应回调函数
*/
type ReqCallback<T> = (event: MGOBE.types.ResponseEvent<T>) => any;
}
}