From 34930fc6aef2fcd1a49466c17230fdee216ae4b8 Mon Sep 17 00:00:00 2001 From: wzp Date: Mon, 23 Dec 2024 12:58:01 +0800 Subject: [PATCH] fix: fix player living in room bug --- .../org/mmga/clubs/controller/ChessController.java | 1 + .../java/org/mmga/clubs/entities/chess/Room.java | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/org/mmga/clubs/controller/ChessController.java b/src/main/java/org/mmga/clubs/controller/ChessController.java index e40a813..2ad804e 100644 --- a/src/main/java/org/mmga/clubs/controller/ChessController.java +++ b/src/main/java/org/mmga/clubs/controller/ChessController.java @@ -263,5 +263,6 @@ public class ChessController { .filter(e -> e.getValue().getLastStateChange().toInstant().isBefore(before10Min)) .map(Map.Entry::getKey) .forEach(rooms::remove); + rooms.values().forEach(Room::tryClean); } } diff --git a/src/main/java/org/mmga/clubs/entities/chess/Room.java b/src/main/java/org/mmga/clubs/entities/chess/Room.java index 205b261..9357881 100644 --- a/src/main/java/org/mmga/clubs/entities/chess/Room.java +++ b/src/main/java/org/mmga/clubs/entities/chess/Room.java @@ -196,6 +196,19 @@ public class Room { return sessionId.equals(whiteSession.getId()); } + public void tryClean() { + if (whiteSession != null) { + if (!whiteSession.isOpen()) { + this.leave(whiteSession); + } + } + if (blackSession != null) { + if (!blackSession.isOpen()) { + this.leave(blackSession); + } + } + } + public enum RoomState { CREATED, WAITING,