Commit 280a85fa authored by nanahira's avatar nanahira

observer no kick

parent c4502f43
Pipeline #43391 passed with stages
in 3 minutes and 1 second
import {
NetPlayerType,
YGOProCtosBase,
YGOProCtosExternalAddress,
YGOProCtosJoinGame,
......@@ -22,6 +23,7 @@ import {
} from 'rxjs';
import { YGOProCtosDisconnect } from '../utility/ygopro-ctos-disconnect';
import PQueue from 'p-queue';
import { DuelStage, RoomManager } from '../room';
export class ClientHandler {
private static readonly CLIENT_IDLE_TIMEOUT_MS = 5 * 60 * 1000;
......@@ -174,6 +176,16 @@ export class ClientHandler {
filter((msg) => !this.isPreHandshakeMsg(msg)),
startWith(undefined),
switchMap(() => timer(ClientHandler.CLIENT_IDLE_TIMEOUT_MS)),
filter(() => {
const room = this.ctx
.get(() => RoomManager)
.findByName(client.roomName);
return !(
room &&
client.pos === NetPlayerType.OBSERVER &&
room.duelStage !== DuelStage.Begin
);
}),
take(1),
takeUntil(client.disconnect$),
)
......
......@@ -25,6 +25,7 @@ export class RoomManager {
}
findByName(name: string) {
if (!name) return undefined;
return this.rooms.get(name);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment