@@ -174,6 +174,7 @@ export class Room extends EventEmitter implements IRoom {
174174 requireAllReadyToStart : boolean = true ;
175175 attrs ?: Record < string , any > ;
176176 players : RoomPlayer [ ] = [ ] ;
177+ _isPlaying : boolean = false ;
177178
178179 /**
179180 * 有效玩家列表(非观众)
@@ -211,7 +212,8 @@ export class Room extends EventEmitter implements IRoom {
211212 */
212213 get status ( ) : RoomStatus {
213214 if ( ! this . isReady ) return RoomStatus . waiting ;
214- if ( this . validPlayers . every ( ( target ) => target . status === PlayerStatus . playing ) ) return RoomStatus . playing ;
215+ const onlinePlayers = this . validPlayers . filter ( p => p . status != PlayerStatus . offline ) ;
216+ if ( onlinePlayers . every ( ( target ) => target . status === PlayerStatus . playing ) || this . _isPlaying ) return RoomStatus . playing ;
215217 return RoomStatus . ready ;
216218 }
217219
@@ -398,6 +400,7 @@ export class Room extends EventEmitter implements IRoom {
398400 player . emit ( 'status' , PlayerStatus . playing ) ;
399401 } ) ;
400402 this . emit ( "update" , this ) ;
403+ this . _isPlaying = true ;
401404 return this . emit ( "start" , this ) ;
402405 }
403406
@@ -411,6 +414,7 @@ export class Room extends EventEmitter implements IRoom {
411414 player . emit ( 'status' , PlayerStatus . unready ) ;
412415 } ) ;
413416 this . emit ( "update" , this ) ;
417+ this . _isPlaying = false ;
414418 return this . emit ( "end" , this ) ;
415419 }
416420
0 commit comments