From 16eacc2108c830957583ece066ce9d70bf03fe02 Mon Sep 17 00:00:00 2001 From: TheSaminator Date: Sat, 14 May 2022 14:38:56 -0400 Subject: [PATCH] Refactoring --- .../starshipfights/game/endpoints_game.kt | 23 ++++++++----------- .../starshipfights/game/server_matchmaking.kt | 10 ++++---- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/jvmMain/kotlin/starshipfights/game/endpoints_game.kt b/src/jvmMain/kotlin/starshipfights/game/endpoints_game.kt index fabf71a..6752fe2 100644 --- a/src/jvmMain/kotlin/starshipfights/game/endpoints_game.kt +++ b/src/jvmMain/kotlin/starshipfights/game/endpoints_game.kt @@ -50,16 +50,12 @@ fun Routing.installGame() { val user = oldUser.copy(status = UserStatus.IN_MATCHMAKING) User.put(user) - closeReason.invokeOnCompletion { - DocumentTable.launch { - val cancelUser = User.get(user.id)!! - if (cancelUser.status == UserStatus.IN_MATCHMAKING) - User.put( - cancelUser.copy( - status = UserStatus.AVAILABLE - ) - ) - } + DocumentTable.launch { + closeReason.join() + delay(100L) + val cancelUser = User.get(user.id)!! + if (cancelUser.status == UserStatus.IN_MATCHMAKING) + User.set(cancelUser.id, setValue(User::status, UserStatus.AVAILABLE)) } if (matchmakingEndpoint(user)) @@ -81,10 +77,9 @@ fun Routing.installGame() { val user = oldUser.copy(status = UserStatus.IN_BATTLE) User.put(user) - closeReason.invokeOnCompletion { - DocumentTable.launch { - User.set(user.id, setValue(User::status, UserStatus.AVAILABLE)) - } + DocumentTable.launch { + closeReason.join() + User.set(user.id, setValue(User::status, UserStatus.AVAILABLE)) } gameEndpoint(user, token) diff --git a/src/jvmMain/kotlin/starshipfights/game/server_matchmaking.kt b/src/jvmMain/kotlin/starshipfights/game/server_matchmaking.kt index a88aacb..742eb9f 100644 --- a/src/jvmMain/kotlin/starshipfights/game/server_matchmaking.kt +++ b/src/jvmMain/kotlin/starshipfights/game/server_matchmaking.kt @@ -83,11 +83,11 @@ suspend fun DefaultWebSocketServerSession.matchmakingEndpoint(user: User): Boole while (true) { val openGames = openSessions.use { - var index = 0 - it.filter { sess -> - sess.joinable.battleInfo.size <= inGameAdmiral.rank.maxBattleSize - }.associateBy { "${++index}" } - } + it.toList() + }.filter { sess -> + sess.joinable.battleInfo.size <= inGameAdmiral.rank.maxBattleSize + }.mapIndexed { i, host -> "$i" to host }.toMap() + val joinListing = JoinListing(openGames.mapValues { (_, invitation) -> invitation.joinable }) sendObject(JoinListing.serializer(), joinListing) -- 2.25.1