tiaoom 0.0.11 → 0.0.13

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
@@ -20,24 +20,30 @@ interface BaseEvents {
20
20
  */
21
21
  error: (error: Error) => void;
22
22
  }
23
+ /**
24
+ * 基础事件定义(Emitter 版本)
25
+ */
26
+ interface BaseEmitterEvents {
27
+ /**
28
+ * 服务初始化回调
29
+ */
30
+ ready: [];
31
+ /**
32
+ * 服务关闭回调
33
+ */
34
+ close: [];
35
+ /**
36
+ * 错误回调
37
+ * @param {Error} error 错误信息
38
+ */
39
+ error: [error: Error];
40
+ }
23
41
  //#endregion
24
42
  //#region lib/events/player.d.ts
25
43
  /**
26
44
  * 玩家事件定义
27
45
  */
28
46
  interface PlayerEvents extends BaseEvents {
29
- /**
30
- * 加入房间
31
- * @param {Room} room 房间信息
32
- * @param {Player} player 玩家信息
33
- **/
34
- join: (room: Room, player: Player) => void;
35
- /**
36
- * 离开房间
37
- * @param {Room} room 房间信息
38
- * @param {Player} player 玩家信息
39
- **/
40
- leave: (room: Room, player: Player) => void;
41
47
  /**
42
48
  * 玩家状态变化
43
49
  * @param {PlayerStatus} status 玩家状态
@@ -45,9 +51,9 @@ interface PlayerEvents extends BaseEvents {
45
51
  status: (status: PlayerStatus) => void;
46
52
  /**
47
53
  * 玩家命令
48
- * @param {MessagePackage} message 命令内容
54
+ * @param {IMessagePackage} message 命令内容
49
55
  */
50
- command: (message: MessagePackage) => void;
56
+ command: (message: any) => void;
51
57
  /**
52
58
  * 玩家私信
53
59
  * @param {string} data 消息内容
@@ -60,7 +66,7 @@ interface PlayerEvents extends BaseEvents {
60
66
  /**
61
67
  * 玩家选项接口
62
68
  */
63
- interface PlayerOptions {
69
+ interface IPlayerOptions {
64
70
  /**
65
71
  * 玩家ID
66
72
  */
@@ -102,7 +108,7 @@ declare enum PlayerStatus {
102
108
  /**
103
109
  * 玩家接口
104
110
  */
105
- interface IPlayer extends PlayerOptions {
111
+ interface IPlayer extends IPlayerOptions {
106
112
  /**
107
113
  * 玩家状态
108
114
  */
@@ -136,7 +142,7 @@ declare class Player extends EventEmitter$1 implements IPlayer {
136
142
  name,
137
143
  attributes,
138
144
  sender
139
- }: PlayerOptions);
145
+ }: IPlayerOptions);
140
146
  toJSON(): {
141
147
  id: string;
142
148
  name: string;
@@ -155,60 +161,153 @@ declare class Player extends EventEmitter$1 implements IPlayer {
155
161
  //#region lib/models/message.d.ts
156
162
  /**
157
163
  * 消息包类型枚举
164
+ * player: 'command', 'message', 'join', 'leave', 'status'
158
165
  */
159
166
  declare enum MessageTypes {
167
+ /**
168
+ * 房间列表
169
+ */
160
170
  RoomList = "room.list",
171
+ /**
172
+ * 房间创建
173
+ */
161
174
  RoomCreate = "room.create",
175
+ /**
176
+ * 房间更新
177
+ */
178
+ RoomUpdate = "room.update",
179
+ /**
180
+ * 房间准备
181
+ */
162
182
  RoomReady = "room.ready",
183
+ /**
184
+ * 房间开始
185
+ */
163
186
  RoomStart = "room.start",
187
+ /**
188
+ * 房间结束
189
+ */
164
190
  RoomEnd = "room.end",
191
+ /**
192
+ * 房间关闭
193
+ */
165
194
  RoomClose = "room.close",
166
- RoomAllReady = "room.allready",
195
+ /**
196
+ * 房间全部玩家已准备
197
+ */
198
+ RoomAllReady = "room.all-ready",
199
+ /**
200
+ * 房间命令
201
+ */
167
202
  RoomCommand = "room.command",
203
+ /**
204
+ * 房间消息
205
+ */
168
206
  RoomMessage = "room.message",
169
- PlayerOffline = "player.offline",
207
+ /**
208
+ * 玩家加入房间
209
+ */
210
+ RoomJoin = "room.join",
211
+ /**
212
+ * 玩家离开房间
213
+ */
214
+ RoomLeave = "room.leave",
215
+ /**
216
+ * 房间踢出玩家
217
+ */
218
+ RoomKick = "room.kick",
219
+ /**
220
+ * 房间转移
221
+ */
222
+ RoomTransfer = "room.transfer",
223
+ /**
224
+ * 房间玩家准备
225
+ */
226
+ RoomPlayerReady = "room.player-ready",
227
+ /**
228
+ * 房间玩家取消准备
229
+ */
230
+ RoomPlayerUnready = "room.player-unready",
231
+ /**
232
+ * 玩家列表
233
+ */
170
234
  PlayerList = "player.list",
235
+ /**
236
+ * 玩家登录
237
+ */
171
238
  PlayerLogin = "player.login",
239
+ /**
240
+ * 玩家登出
241
+ */
172
242
  PlayerLogout = "player.logout",
173
- PlayerJoin = "player.join",
174
- PlayerLeave = "player.leave",
243
+ /**
244
+ * 玩家消息
245
+ */
246
+ PlayerMessage = "player.message",
247
+ /**
248
+ * 玩家命令
249
+ */
250
+ PlayerCommand = "player.command",
251
+ /**
252
+ * 玩家准备
253
+ */
175
254
  PlayerReady = "player.ready",
255
+ /**
256
+ * 玩家取消准备
257
+ */
176
258
  PlayerUnready = "player.unready",
177
- PlayerCommand = "player.command",
259
+ /**
260
+ * 全局命令
261
+ */
262
+ GlobalCommand = "global.command",
263
+ /**
264
+ * 全局消息
265
+ */
266
+ GlobalMessage = "global.message",
267
+ /**
268
+ * 全局错误
269
+ */
270
+ GlobalError = "global.error",
178
271
  }
179
272
  /**
180
273
  * 消息包接口
181
274
  */
182
- interface MessagePackage {
275
+ interface IMessagePackage {
183
276
  /**
184
277
  * 消息类型
185
278
  */
186
- type: MessageTypes | string;
279
+ type: MessageTypes;
187
280
  /**
188
281
  * 消息数据
189
282
  */
190
- data?: PlayerOptions | IRoomOptions | IPlayer | IRoom | IRoomPlayer | any;
283
+ data?: IPlayerOptions | IRoomOptions | IPlayer | IRoom | IRoomPlayer | any;
191
284
  /**
192
- * 消息发送者
285
+ * 发送者信息
193
286
  */
194
- sender?: IPlayer | IRoom | IRoomPlayer;
287
+ sender?: IPlayer | IRoomPlayer | IRoom;
288
+ }
289
+ /**
290
+ * 消息数据接口,包含发送者信息
291
+ */
292
+ interface IMessageData extends IMessagePackage {
293
+ sender: IPlayer | IRoomPlayer | IRoom;
195
294
  }
196
295
  /**
197
296
  * 消息通信接口
198
297
  */
199
- interface Message extends EventEmitter$1 {
298
+ interface IMessage extends EventEmitter$1<IMessageEmitterEvents> {
200
299
  /**
201
300
  * 监听消息事件
202
301
  * @param event 事件名,具体见 MessageEvents
203
302
  * @param listener 监听器
204
303
  */
205
- on<K extends keyof MessageEvents>(event: K, listener: MessageEvents[K]): this;
304
+ on<K extends keyof IMessageEvents>(event: K, listener: IMessageEvents[K]): this;
206
305
  /**
207
306
  * 触发消息事件
208
307
  * @param event 事件名,具体见 MessageEvents
209
308
  * @param args 参数
210
309
  */
211
- emit<K extends keyof MessageEvents>(event: K, ...args: Parameters<MessageEvents[K]>): boolean;
310
+ emit<K extends keyof IMessageEvents>(event: K, ...args: Parameters<IMessageEvents[K]>): boolean;
212
311
  /**
213
312
  * 关闭连接
214
313
  */
@@ -217,20 +316,31 @@ interface Message extends EventEmitter$1 {
217
316
  * 发送消息包
218
317
  * @param message 消息包
219
318
  */
220
- send(message: MessagePackage): void;
319
+ send(message: IMessagePackage): void;
221
320
  }
222
321
  //#endregion
223
322
  //#region lib/events/message.d.ts
224
323
  /**
225
324
  * 消息事件定义
226
325
  */
227
- interface MessageEvents extends BaseEvents {
326
+ interface IMessageEvents extends BaseEvents {
327
+ /**
328
+ * 服务接收数据
329
+ * @param {IMessagePackage} data 消息数据
330
+ * @param {(...params:any) => any} [cb] 回调函数
331
+ */
332
+ message: (data: IMessageData, cb?: (...params: any) => any) => void;
333
+ }
334
+ /**
335
+ * 消息事件定义(Emitter 版本)
336
+ */
337
+ interface IMessageEmitterEvents extends BaseEmitterEvents {
228
338
  /**
229
339
  * 服务接收数据
230
- * @param {MessagePackage} data 消息数据
340
+ * @param {IMessagePackage} data 消息数据
231
341
  * @param {(...params:any) => any} [cb] 回调函数
232
342
  */
233
- message: (data: MessagePackage, cb?: (...params: any) => any) => void;
343
+ message: [data: IMessageData, cb?: (...params: any) => any];
234
344
  }
235
345
  //#endregion
236
346
  //#region lib/events/room.d.ts
@@ -260,14 +370,14 @@ interface RoomEvents extends BaseEvents {
260
370
  message: (data: string) => void;
261
371
  /**
262
372
  * 玩家发送的房间命令
263
- * @param {MessagePackage} message 命令内容
373
+ * @param {IMessagePackage} message 命令内容
264
374
  */
265
- 'player-command': (message: MessagePackage) => void;
375
+ 'player-command': (message: IMessagePackage) => void;
266
376
  /**
267
377
  * 房间命令
268
- * @param {MessagePackage} message 命令内容
378
+ * @param {IMessagePackage} message 命令内容
269
379
  */
270
- command: (message: MessagePackage) => void;
380
+ command: (message: any) => void;
271
381
  /**
272
382
  * 房间更新
273
383
  * @param {IRoom} room 房间信息
@@ -292,7 +402,7 @@ interface RoomEvents extends BaseEvents {
292
402
  * 房间开始游戏
293
403
  * @param {IRoom} room 房间信息
294
404
  */
295
- start: (room: IRoom) => void;
405
+ start: (room: IRoom, sender: IRoomPlayer) => void;
296
406
  /**
297
407
  * 房间结束游戏
298
408
  * @param {IRoom} room 房间信息
@@ -408,7 +518,7 @@ interface IRoom extends IRoomOptions {
408
518
  /**
409
519
  * 房间玩家选项接口
410
520
  */
411
- interface IRoomPlayerOptions extends PlayerOptions {
521
+ interface IRoomPlayerOptions extends IPlayerOptions {
412
522
  /**
413
523
  * 房间Id
414
524
  */
@@ -559,7 +669,7 @@ declare class Room extends EventEmitter$1 implements IRoom {
559
669
  /**
560
670
  * 开始游戏
561
671
  */
562
- start(): boolean;
672
+ start(sender: IPlayer): boolean;
563
673
  /**
564
674
  * 结束游戏
565
675
  */
@@ -573,12 +683,12 @@ declare class Room extends EventEmitter$1 implements IRoom {
573
683
  //#endregion
574
684
  //#region lib/index.d.ts
575
685
  interface ITiaoomOptions {
576
- socket: Message;
686
+ socket: IMessage;
577
687
  }
578
688
  declare class Tiaoom extends EventEmitter {
579
689
  rooms: Room[];
580
690
  players: Player[];
581
- messageInstance?: Message;
691
+ messageInstance?: IMessage;
582
692
  constructor({
583
693
  socket
584
694
  }: ITiaoomOptions);
@@ -586,7 +696,7 @@ declare class Tiaoom extends EventEmitter {
586
696
  emit<K extends keyof TiaoomEvents>(event: K, ...args: Parameters<TiaoomEvents[K]>): boolean;
587
697
  run(): this;
588
698
  searchPlayer(player: string): Player | undefined;
589
- searchPlayer(player: PlayerOptions | IRoomPlayerOptions): Player | undefined;
699
+ searchPlayer(player: IPlayerOptions | IRoomPlayerOptions): Player | undefined;
590
700
  searchRoom(room: string): Room | undefined;
591
701
  searchRoom(room: Partial<IRoomOptions>): Room | undefined;
592
702
  createRoom(sender: IPlayer, options: IRoomOptions): Room;
@@ -600,7 +710,7 @@ declare class Tiaoom extends EventEmitter {
600
710
  roomId: string;
601
711
  playerId: string;
602
712
  }): Room | undefined;
603
- loginPlayer(player: PlayerOptions, cb?: (data: {
713
+ loginPlayer(player: IPlayerOptions, cb?: (data: {
604
714
  player: Player;
605
715
  }) => void): Player;
606
716
  joinPlayer(sender: IPlayer, player: IRoomPlayerOptions, isCreator?: boolean): RoomPlayer;
@@ -610,5 +720,5 @@ declare class Tiaoom extends EventEmitter {
610
720
  removePlayer(sender: IPlayer): Player;
611
721
  }
612
722
  //#endregion
613
- export { IPlayer, IRoom, IRoomOptions, IRoomPlayer, IRoomPlayerOptions, ITiaoomOptions, Message, MessageEvents, MessagePackage, MessageTypes, Player, PlayerEvents, PlayerOptions, PlayerRole, PlayerStatus, Room, RoomEvents, RoomPlayer, RoomStatus, Tiaoom, TiaoomEvents };
723
+ export { IMessage, IMessageData, IMessageEmitterEvents, IMessageEvents, IMessagePackage, IPlayer, IPlayerOptions, IRoom, IRoomOptions, IRoomPlayer, IRoomPlayerOptions, ITiaoomOptions, MessageTypes, Player, PlayerEvents, PlayerRole, PlayerStatus, Room, RoomEvents, RoomPlayer, RoomStatus, Tiaoom, TiaoomEvents };
614
724
  //# sourceMappingURL=index.d.mts.map
package/src/index.mjs CHANGED
@@ -1,5 +1,119 @@
1
1
  import EventEmitter$1, { EventEmitter } from "events";
2
2
 
3
+ //#region lib/models/message.ts
4
+ /**
5
+ * 消息包类型枚举
6
+ * player: 'command', 'message', 'join', 'leave', 'status'
7
+ */
8
+ let MessageTypes = /* @__PURE__ */ function(MessageTypes$1) {
9
+ /**
10
+ * 房间列表
11
+ */
12
+ MessageTypes$1["RoomList"] = "room.list";
13
+ /**
14
+ * 房间创建
15
+ */
16
+ MessageTypes$1["RoomCreate"] = "room.create";
17
+ /**
18
+ * 房间更新
19
+ */
20
+ MessageTypes$1["RoomUpdate"] = "room.update";
21
+ /**
22
+ * 房间准备
23
+ */
24
+ MessageTypes$1["RoomReady"] = "room.ready";
25
+ /**
26
+ * 房间开始
27
+ */
28
+ MessageTypes$1["RoomStart"] = "room.start";
29
+ /**
30
+ * 房间结束
31
+ */
32
+ MessageTypes$1["RoomEnd"] = "room.end";
33
+ /**
34
+ * 房间关闭
35
+ */
36
+ MessageTypes$1["RoomClose"] = "room.close";
37
+ /**
38
+ * 房间全部玩家已准备
39
+ */
40
+ MessageTypes$1["RoomAllReady"] = "room.all-ready";
41
+ /**
42
+ * 房间命令
43
+ */
44
+ MessageTypes$1["RoomCommand"] = "room.command";
45
+ /**
46
+ * 房间消息
47
+ */
48
+ MessageTypes$1["RoomMessage"] = "room.message";
49
+ /**
50
+ * 玩家加入房间
51
+ */
52
+ MessageTypes$1["RoomJoin"] = "room.join";
53
+ /**
54
+ * 玩家离开房间
55
+ */
56
+ MessageTypes$1["RoomLeave"] = "room.leave";
57
+ /**
58
+ * 房间踢出玩家
59
+ */
60
+ MessageTypes$1["RoomKick"] = "room.kick";
61
+ /**
62
+ * 房间转移
63
+ */
64
+ MessageTypes$1["RoomTransfer"] = "room.transfer";
65
+ /**
66
+ * 房间玩家准备
67
+ */
68
+ MessageTypes$1["RoomPlayerReady"] = "room.player-ready";
69
+ /**
70
+ * 房间玩家取消准备
71
+ */
72
+ MessageTypes$1["RoomPlayerUnready"] = "room.player-unready";
73
+ /**
74
+ * 玩家列表
75
+ */
76
+ MessageTypes$1["PlayerList"] = "player.list";
77
+ /**
78
+ * 玩家登录
79
+ */
80
+ MessageTypes$1["PlayerLogin"] = "player.login";
81
+ /**
82
+ * 玩家登出
83
+ */
84
+ MessageTypes$1["PlayerLogout"] = "player.logout";
85
+ /**
86
+ * 玩家消息
87
+ */
88
+ MessageTypes$1["PlayerMessage"] = "player.message";
89
+ /**
90
+ * 玩家命令
91
+ */
92
+ MessageTypes$1["PlayerCommand"] = "player.command";
93
+ /**
94
+ * 玩家准备
95
+ */
96
+ MessageTypes$1["PlayerReady"] = "player.ready";
97
+ /**
98
+ * 玩家取消准备
99
+ */
100
+ MessageTypes$1["PlayerUnready"] = "player.unready";
101
+ /**
102
+ * 全局命令
103
+ */
104
+ MessageTypes$1["GlobalCommand"] = "global.command";
105
+ /**
106
+ * 全局消息
107
+ */
108
+ MessageTypes$1["GlobalMessage"] = "global.message";
109
+ /**
110
+ * 全局错误
111
+ */
112
+ MessageTypes$1["GlobalError"] = "global.error";
113
+ return MessageTypes$1;
114
+ }({});
115
+
116
+ //#endregion
3
117
  //#region lib/models/player.ts
4
118
  /**
5
119
  * 玩家状态枚举
@@ -60,8 +174,6 @@ var Player = class extends EventEmitter$1 {
60
174
  [
61
175
  "command",
62
176
  "message",
63
- "join",
64
- "leave",
65
177
  "status"
66
178
  ].forEach((event) => {
67
179
  this.on(event, (...data) => {
@@ -244,10 +356,7 @@ var Room = class extends EventEmitter$1 {
244
356
  "start",
245
357
  "end",
246
358
  "close",
247
- "error",
248
359
  "all-ready",
249
- "player-unready",
250
- "player-ready",
251
360
  "join",
252
361
  "leave"
253
362
  ].forEach((event) => {
@@ -325,7 +434,7 @@ var Room = class extends EventEmitter$1 {
325
434
  /**
326
435
  * 开始游戏
327
436
  */
328
- start() {
437
+ start(sender) {
329
438
  if (!this.isReady) throw new Error("room is not ready.");
330
439
  if (this.status === RoomStatus.playing) throw new Error("room is already started.");
331
440
  this.players.forEach((player) => {
@@ -333,7 +442,7 @@ var Room = class extends EventEmitter$1 {
333
442
  player.emit("status", PlayerStatus.playing);
334
443
  });
335
444
  this.emit("update", this);
336
- return this.emit("start", this);
445
+ return this.emit("start", this, this.searchPlayer(sender));
337
446
  }
338
447
  /**
339
448
  * 结束游戏
@@ -356,33 +465,6 @@ var Room = class extends EventEmitter$1 {
356
465
  }
357
466
  };
358
467
 
359
- //#endregion
360
- //#region lib/models/message.ts
361
- /**
362
- * 消息包类型枚举
363
- */
364
- let MessageTypes = /* @__PURE__ */ function(MessageTypes$1) {
365
- MessageTypes$1["RoomList"] = "room.list";
366
- MessageTypes$1["RoomCreate"] = "room.create";
367
- MessageTypes$1["RoomReady"] = "room.ready";
368
- MessageTypes$1["RoomStart"] = "room.start";
369
- MessageTypes$1["RoomEnd"] = "room.end";
370
- MessageTypes$1["RoomClose"] = "room.close";
371
- MessageTypes$1["RoomAllReady"] = "room.allready";
372
- MessageTypes$1["RoomCommand"] = "room.command";
373
- MessageTypes$1["RoomMessage"] = "room.message";
374
- MessageTypes$1["PlayerOffline"] = "player.offline";
375
- MessageTypes$1["PlayerList"] = "player.list";
376
- MessageTypes$1["PlayerLogin"] = "player.login";
377
- MessageTypes$1["PlayerLogout"] = "player.logout";
378
- MessageTypes$1["PlayerJoin"] = "player.join";
379
- MessageTypes$1["PlayerLeave"] = "player.leave";
380
- MessageTypes$1["PlayerReady"] = "player.ready";
381
- MessageTypes$1["PlayerUnready"] = "player.unready";
382
- MessageTypes$1["PlayerCommand"] = "player.command";
383
- return MessageTypes$1;
384
- }({});
385
-
386
468
  //#endregion
387
469
  //#region lib/index.ts
388
470
  var Tiaoom = class extends EventEmitter {
@@ -434,48 +516,54 @@ var Tiaoom = class extends EventEmitter {
434
516
  default: throw new Error("unknown message type.");
435
517
  }
436
518
  } catch (error) {
519
+ var _this$messageInstance2;
437
520
  cb === null || cb === void 0 || cb(error);
521
+ (_this$messageInstance2 = this.messageInstance) === null || _this$messageInstance2 === void 0 || _this$messageInstance2.send({
522
+ type: MessageTypes.GlobalError,
523
+ data: error,
524
+ sender: message.sender
525
+ });
438
526
  }
439
527
  });
440
528
  this.on("player", (player, online) => {
441
- var _this$messageInstance2;
442
- (_this$messageInstance2 = this.messageInstance) === null || _this$messageInstance2 === void 0 || _this$messageInstance2.send({
443
- type: online ? "player.login" : "player.logout",
529
+ var _this$messageInstance3;
530
+ (_this$messageInstance3 = this.messageInstance) === null || _this$messageInstance3 === void 0 || _this$messageInstance3.send({
531
+ type: online ? MessageTypes.PlayerLogin : MessageTypes.PlayerLogout,
444
532
  data: player
445
533
  });
446
534
  });
447
535
  this.on("players", (players) => {
448
- var _this$messageInstance3;
449
- (_this$messageInstance3 = this.messageInstance) === null || _this$messageInstance3 === void 0 || _this$messageInstance3.send({
450
- type: "player.list",
536
+ var _this$messageInstance4;
537
+ (_this$messageInstance4 = this.messageInstance) === null || _this$messageInstance4 === void 0 || _this$messageInstance4.send({
538
+ type: MessageTypes.PlayerList,
451
539
  data: players
452
540
  });
453
541
  });
454
542
  this.on("room", (room) => {
455
- var _this$messageInstance4;
456
- (_this$messageInstance4 = this.messageInstance) === null || _this$messageInstance4 === void 0 || _this$messageInstance4.send({
457
- type: "room.create",
543
+ var _this$messageInstance5;
544
+ (_this$messageInstance5 = this.messageInstance) === null || _this$messageInstance5 === void 0 || _this$messageInstance5.send({
545
+ type: MessageTypes.RoomCreate,
458
546
  data: room
459
547
  });
460
548
  });
461
549
  this.on("room-player", (room) => {
462
- var _this$messageInstance5;
463
- (_this$messageInstance5 = this.messageInstance) === null || _this$messageInstance5 === void 0 || _this$messageInstance5.send({
464
- type: "room.update",
550
+ var _this$messageInstance6;
551
+ (_this$messageInstance6 = this.messageInstance) === null || _this$messageInstance6 === void 0 || _this$messageInstance6.send({
552
+ type: MessageTypes.RoomUpdate,
465
553
  data: room
466
554
  });
467
555
  });
468
556
  this.on("rooms", (rooms) => {
469
- var _this$messageInstance6;
470
- (_this$messageInstance6 = this.messageInstance) === null || _this$messageInstance6 === void 0 || _this$messageInstance6.send({
471
- type: "room.list",
557
+ var _this$messageInstance7;
558
+ (_this$messageInstance7 = this.messageInstance) === null || _this$messageInstance7 === void 0 || _this$messageInstance7.send({
559
+ type: MessageTypes.RoomList,
472
560
  data: rooms
473
561
  });
474
562
  });
475
563
  this.on("command", (data) => {
476
- var _this$messageInstance7;
477
- (_this$messageInstance7 = this.messageInstance) === null || _this$messageInstance7 === void 0 || _this$messageInstance7.send({
478
- type: "global.command",
564
+ var _this$messageInstance8;
565
+ (_this$messageInstance8 = this.messageInstance) === null || _this$messageInstance8 === void 0 || _this$messageInstance8.send({
566
+ type: MessageTypes.GlobalCommand,
479
567
  data
480
568
  });
481
569
  });
@@ -495,8 +583,8 @@ var Tiaoom = class extends EventEmitter {
495
583
  if (this.rooms.some((r) => r.players.some((p) => p.id === sender.id))) throw new Error("you are already in a room.");
496
584
  const room = new Room(options);
497
585
  room.setSender((type, message) => {
498
- var _this$messageInstance8;
499
- (_this$messageInstance8 = this.messageInstance) === null || _this$messageInstance8 === void 0 || _this$messageInstance8.send({
586
+ var _this$messageInstance9;
587
+ (_this$messageInstance9 = this.messageInstance) === null || _this$messageInstance9 === void 0 || _this$messageInstance9.send({
500
588
  type: `room.${type}`,
501
589
  data: message,
502
590
  sender: room
@@ -513,7 +601,7 @@ var Tiaoom = class extends EventEmitter {
513
601
  startRoom(sender, room) {
514
602
  const roomInstance = this.searchRoom(room);
515
603
  if (!roomInstance) throw new Error("room not found.");
516
- roomInstance.start();
604
+ roomInstance.start(sender);
517
605
  return this.emit("room-player", roomInstance);
518
606
  }
519
607
  closeRoom(sender, room) {
@@ -555,8 +643,8 @@ var Tiaoom = class extends EventEmitter {
555
643
  if (!playerInstance) {
556
644
  playerInstance = new Player(player);
557
645
  playerInstance.setSender((type, message) => {
558
- var _this$messageInstance9;
559
- (_this$messageInstance9 = this.messageInstance) === null || _this$messageInstance9 === void 0 || _this$messageInstance9.send({
646
+ var _this$messageInstance10;
647
+ (_this$messageInstance10 = this.messageInstance) === null || _this$messageInstance10 === void 0 || _this$messageInstance10.send({
560
648
  type: `player.${type}`,
561
649
  data: message,
562
650
  sender: playerInstance