tiaoom 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/index.d.mts CHANGED
@@ -2,54 +2,129 @@
2
2
  import EventEmitter$1, { EventEmitter } from "events";
3
3
 
4
4
  //#region lib/events/base.d.ts
5
+ /**
6
+ * 基础事件定义
7
+ */
5
8
  interface BaseEvents {
9
+ /**
10
+ * 服务初始化回调
11
+ */
6
12
  ready: () => void;
13
+ /**
14
+ * 服务关闭回调
15
+ */
7
16
  close: () => void;
17
+ /**
18
+ * 错误回调
19
+ * @param {Error} error 错误信息
20
+ */
8
21
  error: (error: Error) => void;
9
22
  }
10
23
  //#endregion
11
24
  //#region lib/events/player.d.ts
25
+ /**
26
+ * 玩家事件定义
27
+ */
12
28
  interface PlayerEvents extends BaseEvents {
13
29
  /**
14
30
  * 加入房间
31
+ * @param {Room} room 房间信息
32
+ * @param {Player} player 玩家信息
15
33
  **/
16
34
  join: (room: Room, player: Player) => void;
17
35
  /**
18
36
  * 离开房间
37
+ * @param {Room} room 房间信息
38
+ * @param {Player} player 玩家信息
19
39
  **/
20
40
  leave: (room: Room, player: Player) => void;
21
41
  /**
22
42
  * 玩家状态变化
43
+ * @param {PlayerStatus} status 玩家状态
23
44
  **/
24
45
  status: (status: PlayerStatus) => void;
25
46
  /**
26
47
  * 玩家命令
48
+ * @param {MessagePackage} message 命令内容
27
49
  */
28
50
  command: (message: MessagePackage) => void;
29
51
  /**
30
52
  * 玩家私信
53
+ * @param {string} data 消息内容
54
+ * @param {Player} [sender] 发送者信息(可选)
31
55
  **/
32
56
  message: (data: string, sender?: Player) => void;
33
57
  }
34
58
  //#endregion
35
59
  //#region lib/models/player.d.ts
60
+ /**
61
+ * 玩家选项接口
62
+ */
36
63
  interface PlayerOptions {
64
+ /**
65
+ * 玩家ID
66
+ */
37
67
  id: string;
68
+ /**
69
+ * 玩家名称
70
+ */
38
71
  name: string;
72
+ /**
73
+ * 玩家属性
74
+ */
39
75
  attributes?: any;
76
+ /**
77
+ * 发送者函数
78
+ */
40
79
  sender?: (type: string, ...message: any) => void;
41
80
  }
81
+ /**
82
+ * 玩家状态枚举
83
+ */
42
84
  declare enum PlayerStatus {
85
+ /**
86
+ * 已准备
87
+ */
43
88
  ready = "ready",
89
+ /**
90
+ * 未准备
91
+ */
44
92
  unready = "unready",
93
+ /**
94
+ * 在线
95
+ */
45
96
  online = "online",
97
+ /**
98
+ * 游戏中
99
+ */
46
100
  playing = "playing",
47
101
  }
102
+ /**
103
+ * 玩家接口
104
+ */
48
105
  interface IPlayer extends PlayerOptions {
106
+ /**
107
+ * 玩家状态
108
+ */
49
109
  status: PlayerStatus;
50
110
  }
111
+ /**
112
+ * 玩家
113
+ */
51
114
  declare class Player extends EventEmitter$1 implements IPlayer {
115
+ /**
116
+ * 监听玩家事件
117
+ * @param event 事件名,具体见 PlayEvents
118
+ * @param listener 监听器
119
+ * @returns this
120
+ */
52
121
  on<K extends keyof PlayerEvents>(event: K, listener: PlayerEvents[K]): this;
122
+ /**
123
+ * 触发玩家事件
124
+ * @param event 事件名,具体见 PlayEvents
125
+ * @param args 参数
126
+ * @returns 是否有监听器被触发
127
+ */
53
128
  emit<K extends keyof PlayerEvents>(event: K, ...args: Parameters<PlayerEvents[K]>): boolean;
54
129
  id: string;
55
130
  name: string;
@@ -69,10 +144,18 @@ declare class Player extends EventEmitter$1 implements IPlayer {
69
144
  status: PlayerStatus;
70
145
  };
71
146
  toString(): string;
147
+ /**
148
+ * 设置发送者函数
149
+ * @param {(type: string, ...message: any) => void} sender 发送者函数
150
+ * @returns this
151
+ */
72
152
  setSender(sender: (type: string, ...message: any) => void): this;
73
153
  }
74
154
  //#endregion
75
155
  //#region lib/models/message.d.ts
156
+ /**
157
+ * 消息包类型枚举
158
+ */
76
159
  declare enum MessageTypes {
77
160
  RoomList = "room.list",
78
161
  RoomCreate = "room.create",
@@ -93,74 +176,126 @@ declare enum MessageTypes {
93
176
  PlayerUnready = "player.unready",
94
177
  PlayerCommand = "player.command",
95
178
  }
179
+ /**
180
+ * 消息包接口
181
+ */
96
182
  interface MessagePackage {
183
+ /**
184
+ * 消息类型
185
+ */
97
186
  type: MessageTypes | string;
187
+ /**
188
+ * 消息数据
189
+ */
98
190
  data?: PlayerOptions | IRoomOptions | IPlayer | IRoom | IRoomPlayer | any;
191
+ /**
192
+ * 消息发送者
193
+ */
99
194
  sender?: IPlayer | IRoom | IRoomPlayer;
100
195
  }
196
+ /**
197
+ * 消息通信接口
198
+ */
101
199
  interface Message extends EventEmitter$1 {
200
+ /**
201
+ * 监听消息事件
202
+ * @param event 事件名,具体见 MessageEvents
203
+ * @param listener 监听器
204
+ */
102
205
  on<K extends keyof MessageEvents>(event: K, listener: MessageEvents[K]): this;
206
+ /**
207
+ * 触发消息事件
208
+ * @param event 事件名,具体见 MessageEvents
209
+ * @param args 参数
210
+ */
103
211
  emit<K extends keyof MessageEvents>(event: K, ...args: Parameters<MessageEvents[K]>): boolean;
212
+ /**
213
+ * 关闭连接
214
+ */
104
215
  close(): void;
216
+ /**
217
+ * 发送消息包
218
+ * @param message 消息包
219
+ */
105
220
  send(message: MessagePackage): void;
106
221
  }
107
222
  //#endregion
108
223
  //#region lib/events/message.d.ts
224
+ /**
225
+ * 消息事件定义
226
+ */
109
227
  interface MessageEvents extends BaseEvents {
110
228
  /**
111
229
  * 服务接收数据
230
+ * @param {MessagePackage} data 消息数据
231
+ * @param {(...params:any) => any} [cb] 回调函数
112
232
  */
113
233
  message: (data: MessagePackage, cb?: (...params: any) => any) => void;
114
234
  }
115
235
  //#endregion
116
236
  //#region lib/events/room.d.ts
237
+ /**
238
+ * 房间事件定义
239
+ */
117
240
  interface RoomEvents extends BaseEvents {
118
241
  /**
119
242
  * 加入房间
243
+ * @param {IRoomPlayer} player 玩家信息
120
244
  **/
121
245
  join: (player: IRoomPlayer) => void;
122
246
  /**
123
247
  * 离开房间
248
+ * @param {IRoomPlayer} player 玩家信息
124
249
  **/
125
250
  leave: (player: IRoomPlayer) => void;
126
251
  /**
127
252
  * 房间状态变化
253
+ * @param {RoomStatus} status 房间状态
128
254
  **/
129
255
  status: (status: RoomStatus) => void;
130
256
  /**
131
257
  * 房间聊天
258
+ * @param {string} data 消息内容
132
259
  **/
133
260
  message: (data: string) => void;
134
261
  /**
135
262
  * 玩家发送的房间命令
263
+ * @param {MessagePackage} message 命令内容
136
264
  */
137
265
  'player-command': (message: MessagePackage) => void;
138
266
  /**
139
267
  * 房间命令
268
+ * @param {MessagePackage} message 命令内容
140
269
  */
141
270
  command: (message: MessagePackage) => void;
142
271
  /**
143
272
  * 房间更新
273
+ * @param {IRoom} room 房间信息
144
274
  */
145
275
  update: (room: IRoom) => void;
146
276
  /**
147
277
  * 玩家准备
278
+ * @param {IRoomPlayer} player 玩家信息
148
279
  */
149
280
  'player-ready': (player: IRoomPlayer) => void;
150
281
  /**
151
282
  * 全部玩家已准备
283
+ * @param {IRoomPlayer[]} players 玩家列表
152
284
  */
153
285
  'all-ready': (players: IRoomPlayer[]) => void;
154
286
  /**
155
287
  * 玩家取消准备
288
+ * @param {IRoomPlayer} player 玩家信息
156
289
  */
157
290
  'player-unready': (player: IRoomPlayer) => void;
158
291
  /**
159
292
  * 房间开始游戏
293
+ * @param {IRoom} room 房间信息
160
294
  */
161
295
  start: (room: IRoom) => void;
162
296
  /**
163
297
  * 房间结束游戏
298
+ * @param {IRoom} room 房间信息
164
299
  */
165
300
  end: (room: IRoom) => void;
166
301
  }
@@ -172,33 +307,33 @@ interface RoomEvents extends BaseEvents {
172
307
  interface TiaoomEvents extends BaseEvents {
173
308
  /**
174
309
  * 房间创建事件
175
- * @param room 房间信息
310
+ * @param {Room} room 房间信息
176
311
  */
177
312
  room: (room: Room) => void;
178
313
  /**
179
314
  * 返回房间列表
180
- * @param rooms 房间列表
315
+ * @param {Room[]} rooms 房间列表
181
316
  */
182
317
  rooms: (rooms: Room[]) => void;
183
318
  /**
184
319
  * 房间玩家变更事件
185
- * @param room 房间信息
320
+ * @param {Room} room 房间信息
186
321
  */
187
322
  'room-player': (room: Room) => void;
188
323
  /**
189
324
  * 玩家变更事件
190
- * @param player 玩家信息
191
- * @param online 是否在线
325
+ * @param {Player} player 玩家信息
326
+ * @param {boolean} online 是否在线
192
327
  */
193
328
  player: (player: Player, online: boolean) => void;
194
329
  /**
195
330
  * 返回玩家列表
196
- * @param players 玩家列表
331
+ * @param {Player[]} players 玩家列表
197
332
  */
198
333
  players: (players: Player[]) => void;
199
334
  /**
200
335
  * 全局命令事件
201
- * @param command 命令内容
336
+ * @param {any & { sender: Player }} data 命令内容
202
337
  */
203
338
  command: (data: any & {
204
339
  sender: Player;
@@ -206,6 +341,9 @@ interface TiaoomEvents extends BaseEvents {
206
341
  }
207
342
  //#endregion
208
343
  //#region lib/models/room.d.ts
344
+ /**
345
+ * 房间选项接口
346
+ */
209
347
  interface IRoomOptions {
210
348
  /**
211
349
  * 房间号
@@ -228,26 +366,74 @@ interface IRoomOptions {
228
366
  */
229
367
  attrs?: Record<string, any>;
230
368
  }
369
+ /**
370
+ * 房间玩家角色
371
+ */
231
372
  declare enum PlayerRole {
373
+ /**
374
+ * 玩家
375
+ */
232
376
  player = "player",
377
+ /**
378
+ * 观众
379
+ */
233
380
  watcher = "watcher",
234
381
  }
382
+ /**
383
+ * 房间状态
384
+ */
235
385
  declare enum RoomStatus {
386
+ /**
387
+ * 等待中
388
+ */
236
389
  waiting = "waiting",
390
+ /**
391
+ * 已准备
392
+ */
237
393
  ready = "ready",
394
+ /**
395
+ * 游戏中
396
+ */
238
397
  playing = "playing",
239
398
  }
399
+ /**
400
+ * 房间接口
401
+ */
240
402
  interface IRoom extends IRoomOptions {
403
+ /**
404
+ * 房间玩家列表
405
+ */
241
406
  players: RoomPlayer[];
242
407
  }
408
+ /**
409
+ * 房间玩家选项接口
410
+ */
243
411
  interface IRoomPlayerOptions extends PlayerOptions {
412
+ /**
413
+ * 房间Id
414
+ */
244
415
  roomId?: string;
245
416
  }
417
+ /**
418
+ * 房间玩家接口
419
+ */
246
420
  interface IRoomPlayer extends IRoomPlayerOptions, IPlayer {
421
+ /**
422
+ * 是否已准备
423
+ */
247
424
  isReady: boolean;
425
+ /**
426
+ * 玩家角色
427
+ */
248
428
  role: PlayerRole;
429
+ /**
430
+ * 是否为房主
431
+ */
249
432
  isCreator: boolean;
250
433
  }
434
+ /**
435
+ * 房间玩家
436
+ */
251
437
  declare class RoomPlayer extends Player implements IRoomPlayer {
252
438
  isReady: boolean;
253
439
  role: PlayerRole;
@@ -264,8 +450,23 @@ declare class RoomPlayer extends Player implements IRoomPlayer {
264
450
  status: PlayerStatus;
265
451
  };
266
452
  }
453
+ /**
454
+ * 房间
455
+ */
267
456
  declare class Room extends EventEmitter$1 implements IRoom {
457
+ /**
458
+ * 监听房间事件
459
+ * @param event 事件名,具体见 RoomEvents
460
+ * @param listener 监听器
461
+ * @returns this
462
+ */
268
463
  on<K extends keyof RoomEvents>(event: K, listener: RoomEvents[K]): this;
464
+ /**
465
+ * 触发房间事件
466
+ * @param event 事件名,具体见 RoomEvents
467
+ * @param args 参数
468
+ * @returns 是否有监听器被触发
469
+ */
269
470
  emit<K extends keyof RoomEvents>(event: K, ...args: Parameters<RoomEvents[K]>): boolean;
270
471
  id: string;
271
472
  size: number;
@@ -273,12 +474,33 @@ declare class Room extends EventEmitter$1 implements IRoom {
273
474
  minSize: number;
274
475
  attrs?: Record<string, any>;
275
476
  players: RoomPlayer[];
477
+ /**
478
+ * 有效玩家列表(非观众)
479
+ */
276
480
  get validPlayers(): RoomPlayer[];
481
+ /**
482
+ * 观众列表
483
+ */
277
484
  get watchers(): RoomPlayer[];
485
+ /**
486
+ * 消息发送器
487
+ */
278
488
  private sender?;
489
+ /**
490
+ * 房间玩家是否已准备好
491
+ */
279
492
  get isReady(): boolean;
493
+ /**
494
+ * 房间状态
495
+ */
280
496
  get status(): RoomStatus;
497
+ /**
498
+ * 房间是否在游戏中
499
+ */
281
500
  get isPlaying(): boolean;
501
+ /**
502
+ * 房间是否已满
503
+ */
282
504
  get isFull(): boolean;
283
505
  toJSON(): {
284
506
  id: string;
@@ -305,13 +527,43 @@ declare class Room extends EventEmitter$1 implements IRoom {
305
527
  minSize,
306
528
  attrs
307
529
  }: IRoomOptions);
530
+ /**
531
+ * 设置房主
532
+ * @param {Player} player 玩家
533
+ * @returns this
534
+ */
535
+ setCreator(player: Player): this;
536
+ /**
537
+ *
538
+ * @param {Player} player 玩家
539
+ * @param {boolean} isCreator 是否房主
540
+ * @returns 玩家实例
541
+ */
308
542
  addPlayer(player: Player, isCreator?: boolean): RoomPlayer | undefined;
543
+ /**
544
+ * 踢出玩家
545
+ * @param {string | IPlayer} player 玩家 / 玩家 id
546
+ */
309
547
  kickPlayer(playerId: string): RoomPlayer;
310
548
  kickPlayer(player: IPlayer): RoomPlayer;
549
+ /**
550
+ * 搜索玩家
551
+ * @param {string | IPlayer} player 玩家 / 玩家 id
552
+ */
311
553
  searchPlayer(playerId: string): RoomPlayer | undefined;
312
- searchPlayer(playerId: IPlayer): RoomPlayer | undefined;
554
+ searchPlayer(player: IPlayer): RoomPlayer | undefined;
555
+ /**
556
+ * 开始游戏
557
+ */
313
558
  start(): boolean;
559
+ /**
560
+ * 结束游戏
561
+ */
314
562
  end(): boolean;
563
+ /**
564
+ * 设置消息发送器
565
+ * @param sender 消息发送器
566
+ */
315
567
  setSender(sender: (type: string, ...message: any) => void): this;
316
568
  }
317
569
  //#endregion
@@ -336,10 +588,18 @@ declare class Tiaoom extends EventEmitter {
336
588
  createRoom(sender: IPlayer, options: IRoomOptions): Room;
337
589
  startRoom(sender: IPlayer, room: IRoom): boolean;
338
590
  closeRoom(sender: IPlayer, room: IRoom): IRoom;
591
+ kickPlayer(sender: IPlayer, data: {
592
+ roomId: string;
593
+ playerId: string;
594
+ }): RoomPlayer;
595
+ transferOwner(sender: IPlayer, data: {
596
+ roomId: string;
597
+ playerId: string;
598
+ }): Room | undefined;
339
599
  loginPlayer(player: PlayerOptions, cb?: (data: {
340
600
  player: Player;
341
601
  }) => void): Player;
342
- joinPlayer(sender: IPlayer, player: IRoomPlayerOptions, isCreator?: boolean): RoomPlayer;
602
+ joinPlayer(sender: IPlayer, player: IRoomPlayerOptions, isCreator?: boolean): RoomPlayer | undefined;
343
603
  leavePlayer(sender: IPlayer, player: IRoomPlayerOptions): RoomPlayer;
344
604
  readyPlayer(sender: IPlayer, player: IRoomPlayer): this;
345
605
  unReadyPlayer(sender: IPlayer, player: IRoomPlayer): this;